Ejemplo n.º 1
0
def register():
    """
    User register
    """
    reqParams = request.get_json()
    email = reqParams['email'] if 'email' in reqParams else None
    username = reqParams['username'] if 'username' in reqParams else None
    password = reqParams['password'] if 'password' in reqParams else None

    # check if email exists
    user = Users.check_email_exists(Users, email)

    if not user:
        user = Users(email=email, username=username, password=password)
    else:
        return jsonify(common.returnFalseMsg('', 'Email exists'))

    result = Users.add(Users, user)

    if user.id:
        returnUser = {
            'id': user.id,
            'username': user.username,
            'email': user.email,
            'login_time': user.login_time
        }
        return jsonify(common.returnTrueMsg(returnUser, "Register success."))
    else:
        return jsonify(common.returnFalseMsg('', 'Register fail.'))
Ejemplo n.º 2
0
    def register():
        """
        用户注册
        :return: json
        """
        email = request.form.get('email')
        username = request.form.get('username')
        password = request.form.get('password')
        user = Users(
            email=email,
            username=username,
            password=Users.set_password(Users,password)
        )
        user.save()

        if user.id:
            returnUser = {
                'id': str(user.id),
                'username': user.username,
                'email': user.email,
                'login_time': user.login_time
            }
            return jsonify(common.trueReturn(returnUser, "用户注册成功"))
        else:
            return jsonify(common.falseReturn('', '用户注册失败'))
Ejemplo n.º 3
0
 def getUser(userId):
     user = Users.get(Users, userId)
     if user is None:
         return jsonify(Common.falseReturn(Common, None, '找不到数据'))
     else:
         return jsonify(Common.trueReturn(Common, Users.output(Users,
                                                               user)))
Ejemplo n.º 4
0
    def register():
        """
        用户注册
        :return: json
        """
        email = request.form.get('email')
        username = request.form.get('username')
        password = request.form.get('password')
        # 最后一条记录及其ID
        lastUserRecord = Users.query.order_by('-id').first()
        if (lastUserRecord is None):
            newRecordId = 1
        else:
            newRecordId = lastUserRecord.id + 1

        user = Users(id=newRecordId, email=email, username=username, password=Users.set_password(Users, password))
        Users.add(Users, user)

        userInfo = Users.get(Users, user.id)
        if userInfo:
            returnUser = {
                'id': userInfo.id,
                'username': userInfo.username,
                'email': userInfo.email,
                'login_time': userInfo.login_time
            }
            return jsonify(common.trueReturn(returnUser, "用户注册成功"))
        else:
            return jsonify(common.falseReturn('', '用户注册失败'))
Ejemplo n.º 5
0
 def book_detail(book_id):
     auth = Auth.identify(Auth, request)
     if auth['status']:
         r = db.find_one({"book_id": book_id}, {"_id": 0})
         Users.add_view_history(auth, r)
         Users.rate_to_book(auth, book_id, 0.1)
         return jsonify(common.trueReturn(r, 'success'))
     else:
         return auth
Ejemplo n.º 6
0
 def deleteUser(userId):
     user = Users.get(Users, userId)
     if user is None:
         return jsonify(Common.falseReturn(Common, None, '找不到要删除的数据'))
     else:
         deleteRow = Users.delete(Users, userId)
         user = Users.get(Users, userId)
         if user is None:
             return getUsers()
         else:
             return jsonify(Common.falseReturn(Common, None, '删除失败'))
Ejemplo n.º 7
0
 def authenticate(self, username, password):
     userInfo = Users.query.filter_by(username=username).first()
     if userInfo is None:
         self.error_handler('找不到用户')
     else:
         if (Users.check_password(Users, userInfo.password, password)):
             login_time = int(time.time())
             userInfo.login_time = login_time
             Users.update(Users)
             return userInfo
         else:
             self.error_handler('密码不正确')
Ejemplo n.º 8
0
 def lease():
     auth = Auth.identify(Auth, request)
     if auth['status']:
         duration = int(request.json.get('duration'))
         book_name = request.json.get('book_name')
         current_time = int(time.time() * 1000)
         end_time = 2592000000 * duration + current_time
         book_id = Book.get_bookId_by_bookName(book_name)
         book = db.find_one({"book_name": book_name}, {"_id": 0})
         user_info = Users.find_by_username(auth['data'])[0]
         if 'lease_history' in user_info:
             lease_history_list = []
             for i in user_info['lease_history']:
                 if i['end_time'] > current_time and i['valid']:
                     lease_history_list.append(i['book']['book_id'])
                 else:
                     pass
             if book_id in lease_history_list:
                 return jsonify(common.falseReturn('您正在借此书', '失败'))
             else:
                 result = udb.find_one({"username":
                                        auth['data']})['lease_history']
                 book_obj = {
                     "book": book,
                     "lease_time": current_time,
                     "end_time": end_time,
                     "valid": True
                 }
                 result.insert(0, book_obj)
                 udb.update_one({"username": auth['data']},
                                {"$set": {
                                    "lease_history": result
                                }})
                 Users.rate_to_book(auth, book_id, 2)
                 return jsonify(common.trueReturn(result, 'success'))
         else:
             result = []
             book_obj = {
                 "book": book,
                 "lease_time": current_time,
                 "end_time": end_time,
                 "valid": True
             }
             result.append(book_obj)
             udb.update_one({"username": auth['data']},
                            {"$set": {
                                "lease_history": result
                            }})
             Users.rate_to_book(auth, book_id, 2)
             return jsonify(common.trueReturn(result, 'success'))
     else:
         return auth
Ejemplo n.º 9
0
 def user_detail():
     auth = Auth.identify(Auth, request)
     if auth['status']:
         result = db.find_one({"username": auth['data']}, {"_id": 0})
         if request.method == 'POST':
             return jsonify(common.trueReturn(result, 'success'))
         elif request.method == 'PATCH':
             for i in request.json:
                 if request.json[i]:
                     Users.update_user(auth['data'], i, request.json[i])
         return jsonify(common.trueReturn('1', 'success'))
     else:
         return auth
Ejemplo n.º 10
0
 def login():
     username = request.json.get('username')
     password = request.json.get('password')
     if (not username or not password):
         return jsonify(common.falseReturn('', '用户名和密码不能为空'))
     else:
         user_info = Users.find_by_username(username)
         if user_info.count() != 0 and Users.check_password(
                 Users, user_info[0]['password'], password):
             login_tiem = int(time.time())
             token = Auth.authenticate(Auth, username, login_tiem)
             return jsonify(common.trueReturn('成功', token))
         else:
             return jsonify(common.falseReturn('失败', '用户名或密码错误'))
Ejemplo n.º 11
0
 def addUser():
     user_name = request.form.get('user_name')
     user_password = request.form.get('user_password')
     user_nickname = request.form.get('user_nickname')
     user_email = request.form.get('user_email')
     user = Users(user_name=user_name,
                  user_password=user_password,
                  user_nickname=user_nickname,
                  user_email=user_email)
     result = Users.add(Users, user)
     if user.user_id:
         return getUser(user.user_id)
     else:
         return jsonify(Common.falseReturn(Common, None, result))
Ejemplo n.º 12
0
 def identify(self, request):
     """
     用户鉴权
     :param request:
     :return:
     """
     auth_header = request.headers.get('Authorization')
     if auth_header:
         auth_token_arr = auth_header.split(' ')
         if not auth_token_arr or auth_token_arr[0] != 'JWT' or len(auth_token_arr) != 2:
             result = common.false_return('', '验证错误')
         else:
             auth_toke = auth_token_arr[1]
             payload = self.decode_auth_token(auth_toke)
             if not isinstance(payload, str):
                 user = Users.get(Users, payload['data']['id'])
                 if user is None:
                     result = common.false_return('', '用户不存在')
                 else:
                     if user.login_time == payload['data']['login_time']:
                         result = common.true_return(user.id, '请求成功')
                     else:
                         result = common.false_return('', 'token已更改,请重新登录')
             else:
                 result = common.false_return('', payload)
     else:
         result = common.false_return('', '无认证token')
     return result
Ejemplo n.º 13
0
    def decorated_function(*args, **kwargs):

        auth_header = request.headers.get('Authorization')

        if (auth_header):
            auth_tokenArr = auth_header.split(" ")
            if (not auth_tokenArr or auth_tokenArr[0] != 'JWT'
                    or len(auth_tokenArr) != 2):
                result = common.returnFalseMsg(
                    '', 'Please check HTTP Header format.')
            else:
                auth_token = auth_tokenArr[1]
                payload = Auth.decode_auth_token(auth_token)

                if not isinstance(payload, str):
                    user = Users.get(Users, payload['data']['id'])
                    if (user is None):
                        result = common.returnFalseMsg(
                            '', 'Cannot find the user.')
                    else:
                        if (user.login_time == payload['data']['login_time']):
                            return f(user.id, *args, **kwargs)
                        else:
                            result = common.returnFalseMsg(
                                '', 'Token has changed, please login again.')
                else:
                    result = common.returnFalseMsg('', payload)
        else:
            result = common.returnFalseMsg('',
                                           'Please provide the auth-token.')

        return jsonify(result), 401
Ejemplo n.º 14
0
    def test_is_user_already_exist(self):

        datas = [
            {
                "username": "******",
                "password": "******",
                "phonenumber": "094653438",
                "address": "Malang"
            },
            {
                "username": "******",
                "password": "******",
                "phonenumber": "097563782",
                "address": "Jakarta"
            }
        ]

        # insert data
        for data in datas:
            user = UserModel(data['username'], data['password'], data['phonenumber'], data['address'])
            db.session.add(user)
            db.session.commit()

        username = "******"

        assert UserModel.is_exists(username) == True
Ejemplo n.º 15
0
 def identify(self, request):
     """
     用户鉴权
     :param request:
     :return: list
     """
     auth_header = request.headers.get('Authorization')
     if auth_header:
         auth_tokenArr = auth_header.split(' ')
         if (not auth_tokenArr or auth_tokenArr[0] != 'JWT'
                 or len(auth_tokenArr) != 2):
             result = common.falseReturn('', '请传递正确的验证头信息')
         else:
             auth_token = auth_tokenArr[1]
             payload = self.decode_auth_token(auth_token)
             if not isinstance(payload, str):
                 u = Users().get(payload['data']['id'])
                 if not u:
                     result = common.falseReturn('', '找不到该用户信息')
                 else:
                     if u.login_time == payload['data']['login_time']:
                         result = common.trueReturn(u.id, '请求成功')
                     else:
                         result = common.falseReturn(
                             '', 'token信息更改,请重新登录获取')
             else:
                 result = common.falseReturn('', payload)
     else:
         result = common.falseReturn('', '没有提供认证token')
     return result
Ejemplo n.º 16
0
 def identify(self, request):
     """
     用户鉴权
     :return: list
     """
     auth_header = request.headers.get('Authorization')
     if auth_header:
         auth_token_arr = auth_header.split(" ")
         if not auth_token_arr or auth_token_arr[0] != 'JWT' or len(
                 auth_token_arr) != 2:
             result = common.falseReturn('', '请传递正确的验证头信息')
         else:
             auth_token = auth_token_arr[1]
             payload = self.decode_auth_token(auth_token)
             if not isinstance(payload, str):
                 user = Users.get(Users, payload['data']['id'])
                 if user is None:
                     result = common.falseReturn('', '找不到该用户信息')
                 else:
                     if user.login_time == payload['data']['login_time']:
                         result = common.trueReturn(user.id, '请求成功')
                     else:
                         result = common.falseReturn('', 'Token已更改,请重新登录获取')
             else:
                 result = common.falseReturn('', payload)
     else:
         result = common.falseReturn('', '没有提供认证token')
     return result
Ejemplo n.º 17
0
    def identify(self, request):
        """
        用户鉴权
        :return: list
        """
        # 前段Authorization 这个字段里面需要协商token

        # head:  里面写上key Authorization  value:JWT token
        # 例子:JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1ODY5NTQzNDUsImlhdCI6MTU4NDM2MjMzNSwiaXNzIjoia2VuIiwiZGF0YSI6eyJpZCI6NiwibG9naW5fdGltZSI6MTU4NDM2MjMzNX19.lZesm6Ekxi3SURLQhgp95QTMIJ_k112zR4jj54RoZbU
        auth_header = request.headers.get('Authorization')
        if (auth_header):
            auth_tokenArr = auth_header.split(" ")
            if (not auth_tokenArr or auth_tokenArr[0] != 'JWT'
                    or len(auth_tokenArr) != 2):
                result = common.falseReturn('', '请传递正确的验证头信息')
            else:
                auth_token = auth_tokenArr[1]
                payload = self.decode_auth_token(auth_token)

                # 从cookie中获取了payload
                if not isinstance(payload, str):
                    user = Users.get(Users, payload['data']['id'])
                    if (user is None):
                        result = common.falseReturn('', '找不到该用户信息')
                    else:  # user 是数据库中的数据,
                        # 下面判断数据库中的login_time跟cookie中传过来的是不是一样的.
                        if (user.login_time == payload['data']['login_time']):
                            result = common.trueReturn(user.id, '请求成功')
                        else:
                            result = common.falseReturn('', 'Token已更改,请重新登录获取')
                else:
                    result = common.falseReturn('', payload)
        else:
            result = common.falseReturn('', '没有提供认证token')
        return result
Ejemplo n.º 18
0
    def updateUser(userId):
        user = Users.get(Users, userId)
        if user is None:
            return jsonify(Common.falseReturn(Common, None, '找不到要修改的数据'))
        else:
            user_name = request.form.get('user_name')
            user_password = request.form.get('user_password')
            user_nickname = request.form.get('user_nickname')
            user_email = request.form.get('user_email')

            user.user_name = user_name
            user.user_password = user_password
            user.user_nickname = user_nickname
            user.user_email = user_email

            result = Users.update(Users)
            return getUser(user.user_id)
Ejemplo n.º 19
0
 def authenticate(self, username, password):
     """
     用户登录,登录成功返回token,写将登录时间写入数据库;登录失败返回失败原因
     :param password:
     :return: json
     """
     userInfo = Users.objects(username=username).first()
     if (userInfo is None):
         return jsonify(common.falseReturn('', '找不到用户'))
     else:
         if (Users.check_password(Users, userInfo.password, password)):
             login_time = int(time.time())
             userInfo.update(login_time=login_time)
             token = self.encode_auth_token(str(userInfo.id), login_time)
             return jsonify(common.trueReturn(token.decode(), '登录成功'))
         else:
             return jsonify(common.falseReturn('', '密码不正确'))
Ejemplo n.º 20
0
 def authenticate(self, email, password):
     """
     User Login & Authentication
     """
     userInfo = Users.query.filter_by(email=email).first()
     if (userInfo is None):
         return jsonify(common.returnFalseMsg('', 'Cannot find the user.'))
     else:
         if (Users.check_password(Users, userInfo.password, userInfo.salt,
                                  password)):
             login_time = int(time.time())
             userInfo.login_time = login_time
             Users.update(Users)
             token = self.encode_auth_token(userInfo.id, login_time)
             return jsonify(
                 common.returnTrueMsg(token.decode(), 'Login success.'))
         else:
             return jsonify(common.returnFalseMsg('', 'Wrong password.'))
Ejemplo n.º 21
0
 def reagister():
     """
     用户注册
     :return:json
     """
     username = request.form.get('username')
     password = request.form.get('password')
     if len(username) < 5:
         return jsonify(common.falseReturn('fail', '用户名过短'))
     if len(password) < 5:
         return jsonify(common.falseReturn('fail', '密码过短'))
     user_info = Users.find_by_username(username)
     if user_info.count() == 0:
         user = Users(username, Users.set_password(Users, password))
         result = Users.add_user(user)
         return jsonify(common.trueReturn('成功', '注册成功'))
     else:
         return jsonify(common.falseReturn('失败', '用户名重复'))
Ejemplo n.º 22
0
 def authenticate(self, username, password):
     """
     用户登录,成功返回token,失败返回原因,把登录时间写进数据库
     :param username:
     :param password:
     :return: json
     """
     u = Users.query.filter_by(username=username).first()
     if not u:
         return jsonify(common.falseReturn('', '找不到用户'))
     else:
         if Users().check_password(u.password, password):
             login_time = int(time.time())
             u.login_time = login_time
             Users.update(u)
             token = self.encode_auth_token(u.id, login_time)
             return common.trueReturn(token.decode(), '登录成功')
         else:
             return common.falseReturn('', '密码错误')
Ejemplo n.º 23
0
 def register():
     """
     用户注册
     :return: json
     """
     email = request.form.get('email')
     user_name = request.form.get('user_name')
     password = request.form.get('password')
     user = Users(email=email, user_name=user_name, password=password)
     result = user.add(user)
     if user.id:
         returnUser = {
             'id': user.id,
             'user_name': user.user_name,
             'email': user.email
         }
         return jsonify(common.trueReturn(returnUser, "用户注册成功"))
     else:
         return jsonify(common.falseReturn('', '用户注册失败'))
Ejemplo n.º 24
0
 def authenticate(self, username, password):
     """
     用户登录,登录成功返回token,将登录时间写入数据库;登录失败返回失败原因
     :param username:
     :param password:
     :return: json
     """
     user_info = Users.query.filter_by(username=username).first()
     if user_info is None:
         return jsonify(common.false_return('', '用户不存在'))
     else:
         if Users.check_password(Users, user_info.password, password):
             login_time = int(time.time())
             user_info.login_time = login_time
             Users.update(Users)
             token = self.encode_auth_token(user_info.id, login_time)
             print(token)
             return jsonify(common.true_return(token.decode(), '登录成功'))
         else:
             return jsonify(common.false_return('', '密码不正确'))
Ejemplo n.º 25
0
    def authenticate(self, username, password):
        """
        用户登录,登录成功返回token,写将登录时间写入数据库;登录失败返回失败原因
        :param password:
        :return: json
        """

        # 这个去数据库中先搜索是不是存在.
        userInfo = Users.query.filter_by(username=username).first()
        if (userInfo is None):
            return jsonify(common.falseReturn('', '找不到用户'))
        else:
            if (Users.check_password(Users, userInfo.password, password)):
                login_time = int(time.time())
                userInfo.login_time = login_time
                # 更新了userInfo, 就是更新当前搜索到的用户的login_time.记录到数据库中.
                Users.update(Users)
                token = self.encode_auth_token(userInfo.id, login_time)
                return jsonify(common.trueReturn(token.decode(), '登录成功'))
            else:
                return jsonify(common.falseReturn('', '密码不正确'))
Ejemplo n.º 26
0
 def register():
     """
     用户注册
     :return: json
     """
     email = request.form.get('email')
     username = request.form.get('username')
     password = request.form.get('password')
     user = Users(email=email,
                  username=username,
                  password=Users.set_password(Users, password))
     result = Users.add(Users, user)
     if user.id:
         return_user = {
             'id': user.id,
             'username': user.username,
             'email': user.email,
             'login_time': user.login_time
         }
         return jsonify(common.true_return(return_user, '用户注册成功'))
     else:
         return jsonify(common.false_return('', '用户注册失败'))
Ejemplo n.º 27
0
def get_info(uid):
    """
    Get User Info
    """
    user = Users.get(Users, uid)
    returnUser = {
        'id': user.id,
        'username': user.username,
        'email': user.email,
        'login_time': user.login_time
    }
    result = common.returnTrueMsg(returnUser, "Request success.")
    return jsonify(result)
Ejemplo n.º 28
0
 def identify(self, request):
     """
     用户鉴权
     :return: list
     """
     auth_header = request.headers.get('Authorization')
     payload = self.decode_auth_token(auth_header)
     user = Users.find_by_username(payload['data']['username'])
     if user.count() == 0:
         result = common.falseReturn('', '找不到该用户信息')
     else:
         result = common.trueReturn(user[0]['username'], '请求成功')
     print(result)
     return result
Ejemplo n.º 29
0
 def get():
     """
     获取用户信息
     :return: json
     """
     user = Users.get(Users, current_identity.id)
     ret = {
         'id': user.id,
         'username': user.username,
         'email': user.email,
         'login_time': user.login_time
     }
     result = common.trueReturn(ret, '请求成功')
     return jsonify(result)
Ejemplo n.º 30
0
 def get():
     """
     获取用户信息
     :return: json
     """
     result = Auth.identify(Auth, request)
     if (result['status'] and result['data']):
         user = Users.get(Users, result['data'])
         returnUser = {
             'id': user.id,
             'username': user.username,
             'email': user.email,
             'login_time': user.login_time
         }
         result = common.trueReturn(returnUser, "请求成功")
     return jsonify(result)
Ejemplo n.º 31
0
    def register():
        """
        用户注册
        :return: json
        """
        email = request.form.get('email')
        username = request.form.get('username').strip()
        password = request.form.get('password').strip()
        if username is None or username == "" or username == "null":
            return jsonify(common.falseReturn('', '账号不能为空!'))
        if password is None or password == "" or password == "null":
            return jsonify(common.falseReturn('', '密码不能为空!'))
        if not (username.isalnum()) or is_Chinese(username):
            return jsonify(common.falseReturn('', '账号只能是字母或数字组成!'))
        if not (password.isalnum()) or is_Chinese(username):
            return jsonify(common.falseReturn('', '密码只能是字母或数字组成!'))
        # 最后一条记录及其ID
        lastUserRecord = Users.query.order_by('-id').first()
        if (lastUserRecord is None):
            newRecordId = 1
        else:
            newRecordId = lastUserRecord.id + 1

        user = Users(id=None,
                     email=email,
                     username=username,
                     password=Users.set_password(Users, password))
        if (Users.getUsername(Users, user.username)):
            return jsonify(common.falseReturn('', '用户已存在'))
        else:
            Users.add(Users, user)
        userInfo = Users.get(Users, user.id)
        if userInfo:
            returnUser = {
                'id': userInfo.id,
                'username': userInfo.username,
                'email': userInfo.email,
                'login_time': userInfo.login_time
            }
            return jsonify(common.trueReturn(returnUser, "用户注册成功"))
        else:
            return jsonify(common.falseReturn('', '用户注册失败'))