def login(self): ''' Handle login process ''' form = LoginForm() if form.validate_on_submit(): # when form is valid and user exists and password matches... user = User.objects(login=form.login.data).first() if user is None or not check_password_hash(user.password, form.password.data): flash('Invalid login or password') else: # ... logged in and redirect to index (even not active) login_user(user, force=True) return redirect(url_for(".index")) # default is just show login form return self.render('form.html', form=form, title="Sign in")
def register(self): ''' Handle registration process ''' # if already authenticated use User panel # rather register form # (also avoid for not admin account to add user) if current_user.is_authenticated(): return redirect(url_for(".index")) form = RegistrationForm() if form.validate_on_submit(): user = User() form.populate_obj(user) self._add_user(user) login_user(user, force=True) return redirect(url_for('.index')) # default is just show register form return self.render('form.html', form=form, title="Register")
def validate_email(self, field): if User.objects(email=field.data): raise validators.ValidationError("You already are registered.")
def validate_login(self, field): if User.objects(login=field.data): raise validators.ValidationError("This login is not available.")
def load_user(user_id): # .first() return None if no user as Flask-Login needs return User.objects(id=user_id).first()