Beispiel #1
0
def login_user():
    form = LoginForm()
    if form.validate_on_submit() and request.method == 'POST':
        username = form.username.data
        password = form.password.data
        # Attempt to get user record
        u = User.query.filter(User.username == username).one_or_none()
        # Check if user exists
        if u is not None:
            # Check if password is correct
            if bcrypt.check_password_hash(u.pw_hash, password):
                # Log user in
                user = flask_login.UserMixin()
                user.id = u.id
                flask_login.login_user(user)
                flash('Successfully logged in {}'.format(username),
                      category='success')
                return redirect(url_for('front_page'), 303)
            # Password is not correct, flash message
            else:
                flash('Password incorrect')
        # User does not exist, flash message
        else:
            flash('User does not exist')
    return render_template('login_user.html', form=form)
Beispiel #2
0
def register_user():
    form = RegisterForm()
    errors = {}
    if form.validate_on_submit() and request.method == 'POST':
        username = form.username.data
        name = form.name.data
        email = form.email.data
        # Check if username and email already exist
        if User.query.filter(
                User.username == username).one_or_none() is not None:
            errors['username_exists'] = True
            flash(
                'A user already exists with the username {}'.format(username),
                category='danger')
        if User.query.filter(User.email == email).one_or_none() is not None:
            errors['email_exists'] = True
            flash('A user already exists with the email {}'.format(email),
                  category='danger')
        if not errors:
            pw_hash = bcrypt.generate_password_hash(
                form.password.data).decode('utf-8')
            u = User(username, name, email, pw_hash)
            db_session.add(u)
            db_session.commit()
            flash('Successfully registered {} {} {}'.format(
                username, name, email),
                  category='success')
            user = flask_login.UserMixin()
            user.id = u.id
            flask_login.login_user(user)
            return redirect(url_for('front_page'), 303)
    return render_template('register_user.html', form=form, errors=errors)
Beispiel #3
0
        def user_loader(username):
            if username not in self.users:
                return

            user = flask_login.UserMixin()
            user.id = username
            return user
Beispiel #4
0
def load_user(user_id):
    u = User.query.filter(User.id == user_id).one_or_none()
    if not u:
        return None
    user = flask_login.UserMixin()
    user.id = u.id
    user.name = u.name
    return user
Beispiel #5
0
 def load_user_from_request(request):
     auth = request.headers.get('Authorization')
     if auth and 'Basic ' in auth:
         auth = auth.replace('Basic ', '', 1)
         try:
             auth = base64.b64decode(auth).decode("utf-8")
         except TypeError:
             return None
         if ':' in auth:
             userPass = auth.split(":", 1)
             if userPass[0] in self.users and 'password' in self.users[
                     userPass[0]] and userPass[1] == self.users[
                         userPass[0]]['password']:
                 user = flask_login.UserMixin()
                 user.id = userPass[0]
                 return user
     # finally, return None if both methods did not login the user
     return None
Beispiel #6
0
        def login():
            form = LoginForm()

            if form.validate_on_submit():
                username = form.username.data
                if username in self.users and 'password' in self.users[
                        username] and form.password.data == self.users[
                            username]['password']:
                    user = flask_login.UserMixin()
                    user.id = username
                    remember = form.remember_me.data
                    flask_login.login_user(user, remember=remember)

                    next = flask.request.args.get('next',
                                                  default='status/vehicles')
                    return flask.redirect(next)
                else:
                    form.password.data = ''
                    flask.flash('User unknown or password is wrong')

            return flask.render_template('login/login.html',
                                         form=form,
                                         current_app=self.app)