Esempio n. 1
0
def signup_user():
    try:
        username = request.json.get('username', None)
        email = request.json.get('email', None)
        password = request.json.get('password', None)

        if not username or not email or not password:
            return jsonify(status=400, msg="some arguments missing"), 400

        hashed_password = generate_password_hash(password, method='sha256')

        user = User(username=username,
                    email=email,
                    password=hashed_password,
                    admin=False,
                    confirmed=False)

        if not user:
            return jsonify(
                status=400,
                msg="user registration is not completed successfully"), 400

        db.session.add(user)
        db.session.commit()

        access_token = create_access_token(identity=username,
                                           expires_delta=False)
        refresh_token = create_refresh_token(identity=username)

        resp = jsonify(status=201,
                       register=True,
                       msg="user has been authenticated successfully",
                       access_token=access_token,
                       refresh_token=refresh_token,
                       current_email=email)

        set_access_cookies(resp, access_token)
        set_refresh_cookies(resp, refresh_token)

        init_client_upload_dir(current_app.config['UPLOAD_BASE_PATH'],
                               username)
        send_verification_link(email, 'Email Confirmation',
                               current_app.config['MAIL_DEFAULT_SENDER'],
                               'layouts/email/confirm.html', username)

        return resp, 201

    except IntegrityError:
        db.session.rollback()

        return jsonify(
            status=400,
            register=False,
            msg="username or email address already exists please choose another"
        )
    except AttributeError:
        return jsonify(status=400,
                       register=False,
                       msg="request body should be json format"), 400
Esempio n. 2
0
def set_admin(username, email, hashed_password, admin, confirmed):
    admin = User(username=username,
                 email=email,
                 password=hashed_password,
                 admin=admin,
                 confirmed=confirmed)
    db.session.add(admin)
    db.session.commit()

    role = Role(role_id=1, user_public_id=str(admin.user_public_id))
    db.session.add(role)
    db.session.commit()

    init_client_upload_dir(app.config['UPLOAD_BASE_PATH'], admin.username)

    send_verification_link(email, 'Email Confirmation',
                           app.config['MAIL_DEFAULT_SENDER'],
                           'layouts/email/confirm.html', admin.username)
Esempio n. 3
0
def send_reset_token():
    data = request.get_json()

    email = data.get('email', None)

    user = User.query.filter_by(email=email).first()

    if send_verification_link(email, "Please Reset Your Password", current_app.config['MAIL_DEFAULT_SENDER'],
               "layouts/email/send-reset-link.html", user.username):
        return jsonify(status=200, msg="If your email is valid, an email will be sent to you")
    return jsonify(status=401, msg="something is not right")
Esempio n. 4
0
def resend_confirmation():
    current_user = get_jwt_identity()

    user = User.query.filter_by(username=current_user).first()

    if not user or user.confirmed is True:
        return jsonify(status=200, msg="account already confirmed. Please login"), 200

    if send_verification_link(user.email, "Email Confirmation", current_app.config['MAIL_DEFAULT_SENDER'],
               "layouts/email/confirm.html", user.username):
        return jsonify(status=200, msg="a new confirmation email has been sent"), 200
Esempio n. 5
0
def init_user(username, email, password):
    try:
        user = User.query.filter_by(
            username=app.config['ADMIN_USERNAME']).first()

        if user and user.confirmed and user.admin:

            hashed_password = generate_password_hash(password, method='sha256')

            user = User(username=username,
                        email=email,
                        password=hashed_password,
                        admin=False,
                        confirmed=False)

            db.session.add(user)
            db.session.commit()

            role = Role(role_id=2, user_public_id=str(user.user_public_id))

            db.session.add(role)
            db.session.commit()

            init_client_upload_dir(app.config['UPLOAD_BASE_PATH'],
                                   user.username)

            send_verification_link(app.config['ADMIN_EMAIL'],
                                   'Email Confirmation',
                                   app.config['MAIL_DEFAULT_SENDER'],
                                   'layouts/email/confirm.html', user.username)
        else:
            click.echo('you dont have permission to execute this command')

    except IntegrityError:
        db.session.rollback()
        click.echo(
            'username or email address already exists please choose another'.
            format(username))