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,
        )
Esempio n. 4
0
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
Esempio n. 5
0
    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)