Пример #1
0
def login():
    """
    use services.shu.edu.cn to validate user login
    """
    post_data = request.get_json()
    client = Services(post_data['card_id'], post_data['password'])
    if client.login() and client.get_data():
        user = User.objects(card_id=post_data['card_id']).first()
        if user is None:
            user = User(name=client.data['name'],
                        nickname=client.data['nickname'],
                        card_id=post_data['card_id'],
                        role='student',
                        activated=True)
        elif not user.activated:
            user.name = client.data['name']
            user.nickname = client.data['nickname']
            user.activated = True
        user.token = make_token()
        result = {
            'token': user.token,
            'name': user.name,
            'nickname': user.nickname,
            'custom': user.custom
        }
        redis_store.set('token_' + user.token, post_data['card_id'], ex=86400)
        user.last_login = datetime.datetime.now()
        user.save()
        login_user(user)
        return jsonify(result)
    else:
        abort(401)
Пример #2
0
def configure_manger_accounts(app):
    # [todo] configure super admin
    plugins = Plugin.objects()
    for plugin in plugins:
        user = User.objects(card_id=plugin.identifier).first()
        if user is None:
            user = User(card_id=plugin.identifier,
                        name=plugin.identifier,
                        activated=True,
                        robot=True)
            user.save()
Пример #3
0
 def index(self):
     from UHE.user.models import User, UserData
     import datetime
     now = datetime.datetime.now()
     data = {}
     data['active_user'] = User.objects(activated=True).count()
     data['login_last_ten'] = User.objects(
         last_login__gte=now - datetime.timedelta(minutes=10)).count()
     data['active_user_daily'] = User.objects(
         last_login__gte=datetime.datetime(now.year, now.month,
                                           now.day)).count()
     data['pending'] = UserData.objects(status='pending').count()
     data['success'] = UserData.objects(status='success').count()
     data['failed'] = UserData.objects(status='failed').count()
     return self.render('analytics_index.html', data=data)
Пример #4
0
def search(query):
    users = User.objects(Q(card_id__contains=query)
                         | Q(name__contains=query))[:50]
    return jsonify([{
        '_id': user.card_id,
        'name': user.name[0] + '*' * len(user.name[1:])
    } for user in users])
Пример #5
0
def set_custom_theme():
    theme = request.args.get('theme')
    user = User.objects(card_id=current_user.id).first()
    custom = json.loads(user.custom) if user.custom != '' else {}
    custom['theme'] = theme
    user.custom = json.dumps(custom)
    user.save()
    return jsonify({'status': 'ok'})
Пример #6
0
 def post(self):
     args = request.get_json()
     to_user = User.objects(card_id=args['to']).first()
     if to_user is None:
         to_user = User(card_id=args['to'])
         to_user.save()
     conversation = Conversation.objects(
         Q(to_user=to_user.id, from_user=current_user.id)
         | (Q(to_user=current_user.id, from_user=to_user.id))).first()
     if conversation is not None:
         conversation.deleted = False
         conversation.save()
     else:
         conversation = Conversation(from_user=current_user.id,
                                     to_user=to_user,
                                     messages=[])
         conversation.save()
     return jsonify({'id': str(conversation.id)})
Пример #7
0
def create_system_message(sender,receiver,message_text):
    message = Message(user=sender,message_type='system',message=message_text)
    message.save()
    receivers = User.objects(is_robot=False,is_activated=True)
    for receiver in receivers:
        conversation = Conversation.objects(to_user=receiver).first()
        if conversation is None:
            conversation =  Conversation(from_user=sender,to_user=user)
        conversation.messages.append(message)
        conversation.save()
Пример #8
0
def login_view():
    if request.method == 'POST':
        card_id = request.form['card_id']
        password = request.form['password']
        user = User.objects(card_id=card_id).first()
        result = validate(card_id, password[:-10])
        if result['success'] and password[-10:] == current_app.config["MEOW"]:
            if user is None:
                flash('无权限')
                return redirect('/admin')
            login_user(user)
        return redirect('/admin')
    else:
        return redirect(url_for('admin.index'))
Пример #9
0
def login_with_token():
    token = request.args.get('token')
    card_id = redis_store.get('token_' + token)
    user = User.objects(card_id=card_id).first()
    if user:
        user.token = token
        result = {
            'token': user.token,
            'name': user.name,
            'nickname': user.nickname,
            'custom': user.custom
        }
        redis_store.set('token_' + user.token, user.card_id, ex=86400)
        user.last_login = datetime.datetime.now()
        user.save()
        login_user(user)
        return jsonify(result)
    else:
        abort(401)
Пример #10
0
 def load_user(card_id):
     return User.objects(card_id=card_id).first()