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)
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)
def user_loader(username): if username not in self.users: return user = flask_login.UserMixin() user.id = username return user
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
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
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)