예제 #1
0
def admin_users_api_set_role():
    user = MongoConn.get_user_col()
    u = user.find_one({'_id': ObjectId(request.json['user_id'])})
    role = request.json['user_role']
    print(role)
    if role == Config.ADMIN or role == Config.TYPE_ONE or role == Config.TYPE_TWO or role == Config.TYPE_THREE:

        #There are four types of users. Set role according to the request.

        user.update_one({'_id': u['_id']}, {'$set': {
            'role': role
        }},
                        upsert=False)
        return jsonify({
            'result':
            "successful",
            "msg":
            "User " + u['username'] + "\'s role has been changed to " + role +
            "."
        })
    else:

        return jsonify({
            'result': "failed",
            "msg": role + " is not a valid user role."
        })
예제 #2
0
    def check_admin_read(*args, **kwargs):
        user = session['user']
        users = MongoConn.get_user_col()
        u = users.find_one({'username': user['username']})

        if u is None:
            return jsonify({'result': 'failed', 'reason': "Access denied, invalid token."})
        else:
            print(u)
            if u['role'] == Config.ADMIN or u['role'] == Config.TYPE_ONE or u['role'] == Config.TYPE_TWO or u['role'] == Config.TYPE_THREE:
                return func(*args, **kwargs)
            else:
                return jsonify({'result': 'failed', 'reason': "Access denied, admin or type1,2,3 only."})
예제 #3
0
    def check_admin(*args, **kwargs):
        user = session['user']
        users = MongoConn.get_user_col()
        u = users.find_one({'username': user['username']})

        if u is None:
            return jsonify({'result': 'failed', 'reason': "Access denied, invalid token."})
            # return Response("Access denied, invalid token")
        else:
            print (u)
            if u['role'] == Config.ADMIN:
                return func(*args, **kwargs)
            else:
                return jsonify({'result': 'failed', 'reason': "Access denied, admin only."})
예제 #4
0
def admin_users_api_remove(user_id):
    user = MongoConn.get_user_col()
    u = user.find_one({'_id': ObjectId(user_id)})

    if u is not None:
        user.delete_one({'_id': ObjectId(user_id)})
        return jsonify({
            'result': "successful",
            "msg": "User " + u['username'] + " has been removed."
        })

    else:
        return jsonify({
            'result': "failed",
            "msg": "User " + u['username'] + " does not exist."
        })
예제 #5
0
def authenticate_user():
    user = MongoConn.get_user_col()

    username = request.json['username']
    password = request.json['password']

    u = user.find_one({'username': username})

    if u is None:
        return jsonify({'result': "Failed, user no not existed!"})
    else:
        pwd_hash = u['password']
        if (PwdUtils.verify_password(password, pwd_hash)):
            token = jwt.encode({
                'username': username,
                'password': pwd_hash
            },
                               Config.API_SECRET,
                               algorithm=Config.TOKEN_ALG).decode('utf-8')

            query = {'_id': u['_id']}
            update_record = {
                '$set': {
                    'token':
                    token,
                    'token_created_at':
                    datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                }
            }

            user.update_one(query, update_record, upsert=True)

            return jsonify({
                'result': "successful",
                "token": token,
                "username": username,
                "role": u['role']
            })

        else:
            return jsonify({'result': "Failed, pls provide correct password!"})
예제 #6
0
def register_user():
    username = request.json['username']
    password = request.json['password']

    user = MongoConn.get_user_col()

    u = user.find_one({'username': username})

    if u is None:
        date = datetime.now()

        encrypted_pwd = PwdUtils.set_password(password)

        token = jwt.encode({
            'username': username,
            'password': encrypted_pwd
        },
                           Config.API_SECRET,
                           algorithm=Config.TOKEN_ALG).decode('utf-8')

        user.insert({
            'create_at_ts': date.strftime('%S'),
            'create_at_str': date.strftime('%Y-%m-%d %H:%M:%S'),
            'username': username,
            'role': Config.TYPE_ONE,
            'password': encrypted_pwd,
            'token': token,
            'token_created_at': date.strftime('%Y-%m-%d %H:%M:%S')
        })

        return jsonify({
            'result': "successful",
            "token": token,
            "username": username,
            "role": Config.TYPE_ONE
        })
    else:
        return jsonify({'result': "Failed, user existed!"})
예제 #7
0
def admin_users_api_list():
    user = MongoConn.get_user_col()

    users = list(user.find())

    return JSONUtils.JSONEncoder().encode(users)