def post(self): parser = reqparse.RequestParser() parser.add_argument("username", required=True, location='headers', help="Username is required") parser.add_argument("password", required=True, location='headers', help="Password is required") args = parser.parse_args() username = args["username"] password = args["password"] try: user = User.get_by_username(username) if not user.check_password(password): raise ValueError except ValueError: return error("Username and/or password is incorrect.", 401) sess = Session.new_session(username) db.session.add(sess) db.session.commit() header = {"Set-Cookie": f"session-id={sess.id}"} return sess.json(), 200, header
def test_user_backref(setup): username = "******" session = Session.new_session(username) setup.session.add(session) setup.session.commit() user = User.get_by_username(username) ids = [session.id for session in user.sessions] assert session.id in ids
def new_session(username, expire=None) -> 'Session': if expire == None: expire = datetime.now() + timedelta(hours=3) if type(expire) in (int, float): expire = datetime.fromtimestamp(expire) user = User.get_by_username(username) return Session( id=uuid4(), user=user, expire=expire, )
def test_user_object_data(event_loop, test_user_data): from backend.models.user import User user = event_loop.run_until_complete( User.get_by_username(test_user_data['username'])) if not user: user = event_loop.run_until_complete( User.register_new_user( email=test_user_data['email'], full_name=test_user_data['full_name'], username=test_user_data['username'], password=test_user_data['password'], )) return user
def create(self): """ REST creates method Returns: A JSON object of the user with out their password Raises: LoginException: if user is not logged in FormException: if user and password and invalid """ if is_login(): raise LoginException('already logged in', status_code=301) user = User.get_by_username(request.form.get('username')) if bool(user) and User.verify_password(user, request.form.get('password')): return login(user.key, user) else: error = { 'password': ['invalid username/password combination'] } raise FormException(message='invalid login', payload=error)