def edit_user(payload, user_id): try: data = request.get_json() if not data: return shortcuts.success('Nothing to do !') user = User.query.filter_by(id=user_id).first() msgs = [] if 'username' in data and user.username != data['username']: user.username = data['username'] msgs.append("Username has been changed") if 'password' in data: user.set_password(data['password']) msgs.append("Password has been changed") if 'email' in data and user.email != data['email']: user.email = data['email'] msgs.append("Email has been changed") if msgs: db.session.add(user) db.session.commit() return shortcuts.success(msgs) return shortcuts.success("Nothing's changed !") except Exception as e: return shortcuts.error(e.args)
def delete_user(payload, user_id): try: user = User.query.filter_by(id=user_id).first() if user: db.session.delete(user) db.session.commit() return shortcuts.success('User has been successfully deleted !') except Exception as e: return shortcuts.error(e.args) return shortcuts.success("Nothing's to do !")
def set_user_roles(payload, user_id): try: user = User.query.filter_by(id=user_id).first() if user: roles = _get_roles(request.get_json()) user.roles = roles db.session.add(user) db.session.commit() return shortcuts.success('Roles for user {} has been successfully modified !'.format(user_id)) return shortcuts.success("Nothing's changed !") except Exception as e: return shortcuts.error(e.args)
def login(): data = request.get_json() try: someone = AuthService.instance().login(data['username'], data['password']) now = datetime.utcnow() payload = { 'exp': expiration, 'iat': now, 'sub': someone.id, 'username': someone.username } token = functions.get_token(payload) active_session = SessionService.instance().get(someone.id) if active_session and active_session.expiration > now: token = active_session.token elif active_session: SessionService.instance().delete(someone.id) SessionService.instance().set(someone.id, token, expiration) else: SessionService.instance().set(someone.id, token, expiration) return shortcuts.success('Welcome inside !', token=token) except Exception as e: LoggerService.instance().debug(e) return shortcuts.error('Invalid login !'), 401
def add_user(payload): if not request.get_json(): return shortcuts.error('Malformed request'), 400 try: data = request.get_json() new_user = User(data['username'], data['email'], data['password']) roles = _get_roles(data) for role in roles: new_user.roles.append(role) db.session.add(new_user) db.session.commit() return shortcuts.success('User has been successfully added !', new_user=new_user.id) except Exception as e: return shortcuts.error(e.args[0])
def get_user(payload, user_id): user = User.query.filter_by(id=user_id).first() if user: return shortcuts.success('', user=UserSchema().dump(user)) return shortcuts.error('Not found !'), 404
def get_all_users(payload): users = User.query.all() if users: users = UserSchema(many=True).dump(users) return shortcuts.success(None, users=users) return shortcuts.error('Not found !'), 404