def update_user(id): request_data = request.get_json() if not request_data: return bad_request("No input data provided") try: data = ProfileSchema().load(request_data) user = User.find_by_id(id) existing_user = User.find_by_identity(data.get('auth')['username']) if existing_user is not None: if existing_user.id != user.id: return bad_request(f'Username already exists.') # update user user.profile.name = data.get('name') user.profile.bio = data.get('bio') user.profile.dob = data.get('dob') user.username = data.get('auth')['username'] user.is_active = data.get('auth')['is_active'] user.is_admin = data.get('auth')['is_admin'] user.save() return jsonify(UserSchema().dump(user)) # handle errors except ValidationError as err: return error_response(422, err.messages) except (exc.IntegrityError, ValueError): db.session.rollback() return server_error('Something went wrong, please try again.')
def test_decode_token(self): """ Token decoder decodes a JWT correctly. """ token = create_token() payload = User.decode_auth_token(token) user = User.find_by_id(payload.get('id')) self.assertTrue(isinstance(user, User)) self.assertEqual(user.email, '*****@*****.**')
def update_profile(id): request_data = request.get_json() if not request_data: return bad_request("No input data provided") try: data = ProfileSchema().load(request_data) except ValidationError as error: return error_response(422, error.messages) try: user = User.find_by_id(id) profile = Profile.find_by_id(user.profile.id) profile.firstname = data.get('firstname').title() profile.lastname = data.get('lastname').title() profile.bio = data.get('bio') prof = Profile.find_by_username(data.get('username')) if prof is not None: if prof.user_id != id: return bad_request('Username is already taken.') profile.username = data.get('username') profile.save() response = jsonify({'message': 'Successfully updated your profile'}) response.status_code = 200 return response except Exception: return error_response(500, 'Something went wrong, please try again.')
def get_user(id): user = User.find_by_id(id) return { 'user': UserSchema(only=('id', 'email', 'is_active', 'is_admin')).dump(user), 'profile': ProfileSchema(exclude=('id', 'updated_on', 'created_on')).dump(user.profile) }
def delete_profile(id): try: user = User.find_by_id(id) user.delete() response = jsonify({'message': 'Successfully deleted your account'}) response.status_code = 200 return response except Exception: return error_response(500, 'Something went wrong, please try again.')
def remove_user_permissions(id): data = request.get_json() user = User.find_by_id(id) perms = [] for id in data.get('perms'): perm = Permission.find_by_id(id) perms.append(perm) user.remove_permissions(perms) return jsonify(UserSchema().dump(user))
def delete_user(id): try: user = User.find_by_id(id) if user is None: return not_found('User does not exist.') user.delete() return jsonify({'message': 'Successfully deleted user.'}) except Exception as error: return jsonify({'message': error})
def remove_group_members(grp_id): data = request.get_json() group = Group.find_by_id(grp_id) users = [] for id in data.get('users'): user = User.find_by_id(id) users.append(user) group.remove_members(users) return jsonify(GroupSchema().dump(group))
def unfollow(user, id): followed = User.find_by_id(id) if not followed: return not_found('User not found') user.unfollow(followed) try: user.save() except (exc.IntegrityError, ValueError): db.session.rollback() return server_error('Something went wrong, please try again.') else: return jsonify(UserSchema( many=True, only=('id',)).dump(user.followed.all()))
def wrapper(*args, **kwargs): auth_header = request.headers.get('Authorization') if not auth_header: return error_response(403, message='No authorization.') token = auth_header.split(" ")[1] payload = User.decode_auth_token(token) if not isinstance(payload, dict): return error_response(401, message=payload) user = User.find_by_id(payload.get('id')) if user is None or user.is_active is not True: return error_response(401, message='Invalid token.') return func(payload.get('id'), *args, **kwargs)
def get_profile(id): user = User.find_by_id(id) return { 'user': UserSchema( exclude=( 'current_sign_in_ip', 'current_sign_in_on', 'last_sign_in_ip', 'last_sign_in_on', 'sign_in_count', 'updated_on', 'created_on', ) ).dump(user), 'profile': ProfileSchema( exclude=('id', 'created_on', 'updated_on',) ).dump(user.profile) }
def test_decode_token(token): """ Token decoder decodes a JWT correctly. """ payload = User.decode_auth_token(token) user = User.find_by_id(payload.get('id')) assert isinstance(user, User) is True assert user.email == '*****@*****.**'
def get_user(id): """Get a single user""" user = User.find_by_id(id) if user is None: return not_found('User not found!') return jsonify(UserSchema().dump(user))