Esempio n. 1
0
def request_password_reset(kwds):
    """
    Request a password reset.
    """

    email = kwds.get("username")
    if email:
        user = User.query.filter_by(email=email).first()
        if not user:
            message = "User not found."
            status_code = 404
        else:
            message = "A password reset request has been sent."
            status_code = 200
            token = create_access_token(
                user.id,
                expires_delta=timedelta(hours=2),
                user_claims={"token_password_reset": True},
            )
            msg = get_mail_template("forgot_password.html", token=token)
            send_email.delay("Forgot password", html=msg, recipients=[email])
            log = Log(date_requested_password_reset=datetime.utcnow())
            user.logs.append(log)
            db_commit()
            on_forgot_password.send(user)
    else:
        message = "Email required."
        status_code = 403

    return {"message": message, "code": status_code}
Esempio n. 2
0
def request_password_reset(**kwds):
    """
    Request a password reset.
    """

    email = kwds.get("username")
    if email:
        user = User.query.filter_by(email=email).first()
        if not user:
            reason = "User not found."
            status_code = 404
        else:
            reason = "A password reset request has been sent."
            status_code = 200
            token = create_access_token(
                email,
                expires_delta=timedelta(hours=2),
                user_claims={"token_password_reset": True},
            )
            link_reset = url_for(".password_reset", token=token)
            msg = get_mail_template(
                "request_password_reset.html", link_reset=link_reset
            )
            send_email.delay("Forgot password", html=msg, recipients=[email])
            log = Log(request_password_reset_at=datetime.utcnow())
            user.logs.append(log)
            db_commit()
    else:
        reason = "Email required."
        status_code = 403

    return {"reason": reason, "status_code": status_code}
Esempio n. 3
0
def login(**kwds):
    email = kwds.get("email")
    passw = kwds.get("password")
    user = User.query.filter_by(email=email).first()

    if user and user.confirmed and check_password_hash(user.password, passw):
        login_at = datetime.utcnow()
        log = Log(login_at=login_at)
        user.logs.append(log)
        db_commit(db)
        access_token = create_access_token(email)
        return {"access_token": access_token}

    return {"reason": "Incorrect email or password.", "status_code": 401}
Esempio n. 4
0
def login(kwds):
    """
    Login and get access token.
    """

    email = kwds.get("username")
    passw = kwds.get("password")
    user = User.query.filter_by(email=email).first()
    if user and user.confirmed and check_password_hash(user.password, passw):
        login_date = datetime.utcnow()
        log = Log(login_date=login_date)
        user.logs.append(log)
        db_commit()
        roles = get_user_roles(user)
        claims = {"roles": roles}
        access_token = create_access_token(email, user_claims=claims)
        on_user_logged_in.send(user)
        return {"access_token": access_token}

    return {"message": "Incorrect email or password.", "code": 404}
Esempio n. 5
0
 def drop_users():
     model = get_object_model("user")
     model.query.delete()
     db_commit()