Beispiel #1
0
    def post(self):
        args = parse.parse_args()
        action = args.get('action', '')
        action = action.lower()
        if action.lower() not in [
                current_app.config.get('USER_ACTION_LOGIN'),
                current_app.config.get('USER_ACTION_REGISTER')
        ]:
            abort(404, message='请输入正确操作')
        # 用户注册
        if action == current_app.config.get('USER_ACTION_REGISTER'):
            user_client_register_args = parse_user_client_register.parse_args()
            username = user_client_register_args.get('username', None)
            password = user_client_register_args.get('password', None)
            phone = user_client_register_args.get('phone', None)
            '''
            判断username是否为字母数字下划线组合
            '''
            user = UserModel()
            user.username = username
            user.password = password
            user.phone = phone

            if not user.save():
                abort(400, message='添加用户失败')

            data = {
                'status': current_app.config.get('HTTP_CREATE_OK'),
                'msg': '用户创建成功',
                'data': user
            }
            return data
        # 用户登录
        if action == current_app.config.get('USER_ACTION_LOGIN'):
            user_client_login_args = parse_user_client_login.parse_args()
            ident = user_client_login_args.get('name_or_phone', None)
            password = user_client_login_args.get('password', None)
            user = get_user_client(ident=ident)

            # 用户存在且密码正确且没有逻辑删除
            if user and user.check_password(
                    password) and user.is_delete is False:
                token = generate_user_client_token()
                cache.set(token,
                          user.id,
                          timeout=current_app.config.get(
                              'USER_CLIENT_TOKEN_TIMEOUT', 0))
                data = {
                    'status': current_app.config.get('HTTP_OK'),
                    'msg': '用户登录成功',
                    'data': user,
                    'token': token,
                }
                return data
            data = {
                'status': current_app.config.get('HTTP_GET_FAIL'),
                'msg': '用户名/密码错误/用户不存在',
            }
            return data
Beispiel #2
0
Datei: api.py Projekt: zh155/note
    def patch(self):
        print(get_user_client_token())
        print(use_token_get_id(get_user_client_token()))
        id = use_token_get_id((get_user_client_token()))
        if not id:
            data = {
                'status': current_app.config.get('HTTP_REQUEST_FAIL'),
                'msg': '没有指定用户'
            }
            return data
        user = UserModel.query.get(id)
        user_client_patch_args = parse_user_client_patch.parse_args()
        phone = user_client_patch_args.get('phone', None)
        old_password = user_client_patch_args.get('old_password', None)
        new_password = user_client_patch_args.get('new_password', None)
        repeat_new_password = user_client_patch_args.get(
            'repeat_new_password', None)

        is_information_changed = False
        if phone:
            user.phone = phone
            is_information_changed = True
        if user.check_password(
                old_password
        ) and new_password and new_password == repeat_new_password:
            user.password = new_password
            is_information_changed = True

        user.save()

        token = generate_user_client_token()
        cache.set(token,
                  user.id,
                  timeout=current_app.config.get('USER_CLIENT_TOKEN_TIMEOUT',
                                                 0))
        is_information_changed_msg = '用户信息更改成功' if is_information_changed else '用户信息没有更改'

        data = {
            'status': current_app.config.get('HTTP_OK'),
            'msg': is_information_changed_msg,
            'data': marshal(user, user_fields),
            'token': token
        }
        return data
Beispiel #3
0
 def post(self):
     login_args = login_parser.parse_args()
     username = login_args.get('username')
     password = login_args.get('password')
     admin_user = get_admin_client(username)
     if admin_user and admin_user.check_password(password) and admin_user.is_delete is False:
         admin_token = generate_admin_client_token()
         cache.set(admin_token, admin_user.id, timeout=current_app.config.get('ADMIN_CLIENT_TOKEN_TIMEOUT', 0))
         data = {
             'status': current_app.config.get('HTTP_OK'),
             'msg': '管理员登录成功',
             'data': marshal(admin_user, admin_user_field),
             'token': admin_token,
         }
         return data
     data = {
         'status': current_app.config.get('HTTP_GET_FAIL'),
         'msg': '用户名/密码错误/用户不存在',
     }
     return data
Beispiel #4
0
    def post(self):
        cinema_user_parser_args = cinema_user_parser.parse_args()
        action = cinema_user_parser_args.get('action')

        if action == current_app.config.get('CINEMA_CLIENT_ACTION_REGISTER'):
            cinema_user_register_parser_args = cinema_user_register_parser.parse_args()
            username = cinema_user_register_parser_args.get('username')
            password = cinema_user_register_parser_args.get('password')
            cinema_user = CinemaUserModel()
            cinema_user.username = username
            cinema_user.password = password
            if not cinema_user.save():
                abort(400, message='添加影院用户失败/此用户已经存在')
            data = {
                'status': current_app.config.get('HTTP_CREATE_OK'),
                'msg': '成功添加一条影院用户',
                'data': marshal(cinema_user, cinema_user_field)
            }
            return data

        elif action == current_app.config.get('CINEMA_CLIENT_ACTION_LOGIN'):
            cinema_user_login_parser_args = cinema_user_login_parser.parse_args()
            username = cinema_user_login_parser_args.get('username')
            password = cinema_user_login_parser_args.get('password')
            cinema_user = get_cinema_client(username)
            if cinema_user and (not cinema_user.is_delete) and cinema_user.check_password(password):
                token = generate_cinema_client_token()
                cache.set(token, cinema_user.id, timeout=current_app.config.get('USER_CLIENT_TOKEN_TIMEOUT', 0))
                data = {
                    'status': current_app.config.get('HTTP_OK'),
                    'msg': '用户登录成功',
                    'data': marshal(cinema_user, cinema_user_field),
                    'token': token,
                }
                return data
            data = {
                'status': current_app.config.get('HTTP_REQUEST_FAIL'),
                'msg': '登录失败,请检查用户名/密码是否正确'
            }
            return data
        abort(400, message='请键入操作')
Beispiel #5
0
    def patch(self):

        user = g.user
        user_client_patch_args = parse_user_client_patch.parse_args()
        phone = user_client_patch_args.get('phone', None)
        old_password = user_client_patch_args.get('old_password', None)
        new_password = user_client_patch_args.get('new_password', None)
        repeat_new_password = user_client_patch_args.get(
            'repeat_new_password', None)

        is_information_changed = False
        if phone:
            user.phone = phone
            is_information_changed = True
        if user.check_password(
                old_password
        ) and new_password and new_password == repeat_new_password:
            user.password = new_password
            is_information_changed = True
        else:
            abort(400, message='密码错误/密码不能为空/两次输入密码不一致')
        user.save()

        token = generate_user_client_token()
        cache.set(token,
                  user.id,
                  timeout=current_app.config.get('USER_CLIENT_TOKEN_TIMEOUT',
                                                 0))
        is_information_changed_msg = '用户信息更改成功' if is_information_changed else '用户信息没有更改'

        data = {
            'status': current_app.config.get('HTTP_OK'),
            'msg': is_information_changed_msg,
            'data': marshal(user, user_fields),
            'token': token
        }
        return data