def post(self): """ Try to authenticate the user and log the user if successful """ User = self.get_user_model() form = LoginForm(TornadoMultiDict(self)) if form.validate(): user = User.authenticate(form.email.data, form.password.data) if user: if options.require_activation and not user.active: self.flash( _("User not activated yet, please activate your\ account" ), "warning" ) self.redirect( self.reverse_url("contrib.auth.activation_resend") ) return self.set_secure_cookie("user", unicode(user.id)) login_success.send(self, user=user) self.flash(_("Welcome back %(name)s", name=user.name), 'info') self.redirect( self.get_argument('next', None) or \ self.reverse_url("home") ) return login_failure.send(self) self.flash(_("The email or password is invalid"), 'error') self.render('user/login.html', login_form=form)
def _on_login(self, user_data): """ Callback function to handle facebook response """ User = self.get_user_model() logger.info(user_data) if not user_data: login_failure.send(self) self.flash(_("Login using Facebook failed, please try again")) self.redirect(self.application.reverse_url("contrib.auth.login")) self.finish() user = User.objects( Q(facebook_id=int(user_data['id'])) | Q(email=user_data['email']) ).first() if user: self.flash(_("Welcome back %(name)s", name=user.name), 'info') if not user.facebook_id: user.facebook_id = user_data['id'] user.facebook_picture = user_data['picture'] user.facebook_username = user_data['username'] user.facebook_link = user_data['link'] user.save() self.flash( _("Your facebook account is now connected to your account") ) else: user = User( facebook_id = user_data['id'], facebook_picture = user_data['picture'], facebook_username = user_data['username'], facebook_link = user_data['link'], name = user_data['name'], email = user_data['email'] ) user.save() self.flash( _("Thank you for registering %(name)s", name=user.name) ) self.set_secure_cookie("user", unicode(user.id)) login_success.send(self, user=user) self.redirect( self.get_argument('next', None) or \ self.application.reverse_url("home") )
def _on_auth(self, user_data): """Call back handler for twitter authentication""" User = self.get_user_model() logger.info(user_data) if not user_data: login_failure.send(self) self.flash(_("Login using Twitter failed, please try again")) self.redirect(self.application.reverse_url("contrib.auth.login")) self.finish() logging.info(user_data) user = User.objects(twitter_username=user_data['username']).first() if user: self.flash(_("Welcome back %(name)s", name=user.name), 'info') else: user = User( name = user_data['name'], twitter_id = user_data['id_str'], twitter_username = user_data['username'], twitter_profile_picture = user_data['profile_image_url_https'], twitter_description = user_data['description'], ) user.save() self.flash( _("Thank you for registering %(name)s", name=user.name) ) self.set_secure_cookie("user", unicode(user.id)) login_success.send(self, user=user) # Finally redirect to the home page once the user has been created self.redirect( self.get_argument('next', None) or \ self.application.reverse_url("home") )
def _on_auth(self, user_data): """ Callback Function """ User = self.get_user_model() logger.info(user_data) if not user_data: login_failure.send(self) self.flash(_("Login using Google failed, please try again")) self.redirect(self.application.reverse_url("contrib.auth.login")) self.finish() logger.info(user_data) user = User.objects(email=user_data['email']).first() if user: self.flash(_("Welcome back %(name)s", name=user.name), 'info') else: user = User( name = user_data['name'], email = user_data['email'], ) user.save() self.flash( _("Thank you for regsitering %(name)s", name=user.name) ) self.set_secure_cookie("user", unicode(user.id)) login_success.send(self, user=user) # Finally issue a redirect if the login was successful self.redirect( self.get_argument('next', None) or \ self.application.reverse_url("home") )