def post(self): """ Get fields from POST dict """ if not self.form.validate(): return self.get() current_password = self.form.current_password.data.strip() password = self.form.password.data.strip() try: user_info = models.User.get_by_id(long(self.user_id)) auth_id = "own:%s" % user_info.username # Password to SHA512 current_password = utils.encrypt(current_password, config.salt) try: user = models.User.get_by_auth_password(auth_id, current_password) # Password to SHA512 password = utils.encrypt(password, config.salt) user.password = security.generate_password_hash(password, length=12) user.put() # send email subject = config.app_name + " Account Password Changed" # load email's template template_val = { "app_name": config.app_name, "first_name": user.name, "username": user.username, "email": user.email, "reset_password_url": self.uri_for("password-reset", _full=True) } email_body_path = "emails/password_changed.txt" email_body = self.jinja2.render_template(email_body_path, **template_val) email_url = self.uri_for('taskqueue-send-email') taskqueue.add(url = email_url, params={ 'to': user.email, 'subject' : subject, 'body' : email_body, 'sender' : config.contact_sender, }) #Login User self.auth.get_user_by_password(user.auth_ids[0], password) self.add_message(_('Password changed successfully'), 'success') return self.redirect_to('secure') except (InvalidAuthIdError, InvalidPasswordError), e: # Returns error message to self.response.write in # the BaseHandler.dispatcher message = _("Your Current Password is wrong, please try again") self.add_message(message, 'error') return self.redirect_to('edit-password') except (AttributeError,TypeError), e: login_error_message = _('Sorry you are not logged in!') self.add_message(login_error_message,'error') self.redirect_to('login')
def post(self): """ username: Get the username from POST dict password: Get the password from POST dict """ username = str(self.request.POST.get('username')).lower().strip() auth_id = "own:%s" % username password = self.request.POST.get('password') remember_me = True if str(self.request.POST.get('remember_me')) == 'on' else False # Password to SHA512 password = utils.encrypt(password, config.salt) # Try to login user with password # Raises InvalidAuthIdError if user is not found # Raises InvalidPasswordError if provided password # doesn't match with specified user try: self.auth.get_user_by_password( auth_id, password, remember=remember_me) self.redirect_to('secure') except (InvalidAuthIdError, InvalidPasswordError), e: # Returns error message to self.response.write in # the BaseHandler.dispatcher message = "Login error, Try again" self.add_message(message, 'error') return self.redirect_to('login')
def post(self, user_id, token): verify = models.User.get_by_auth_token(int(user_id), token) user = verify[0] password = str(self.request.POST.get('password')).strip() c_password = str(self.request.POST.get('c_password')).strip() if user: if password == "" or c_password == "": message = 'Password required.' self.add_message(message, 'error') return self.redirect_to('password-reset-check', user_id=user_id, token=token) if password != c_password: message = 'Sorry, Passwords are not identical, ' \ 'you have to repeat again.' self.add_message(message, 'error') return self.redirect_to('password-reset-check', user_id=user_id, token=token) # Password to SHA512 password = utils.encrypt(password, config.salt) user.password = security.generate_password_hash(password, length=12) user.put() # Delete token models.User.delete_auth_token(int(user_id), token) # Login User self.auth.get_user_by_password(user.auth_ids[0], password) self.add_message('Password changed successfully', 'success') return self.redirect_to('secure') else: self.add_message('Please correct the form errors.', 'error') return self.redirect_to('password-reset-check', user_id=user_id, token=token)
def post_asset(self, server_info): data = encrypt(json.dumps(server_info)) requests.post( url=settings.API, data=data, headers={'OpenKey': auth(),'Content-Type':'application/json'} )
def post_asset(self, server_info): data = encrypt(json.dumps(server_info)) requests.post(url=settings.API, data=data, headers={ 'OpenKey': auth(), 'Content-Type': 'application/json' })
def post(self): """ Get fields from POST dict """ current_password = self.request.POST.get('current_password').strip() password = self.request.POST.get('password').strip() c_password = self.request.POST.get('c_password').strip() if current_password == "" or password == "" or c_password == "": message = 'Sorry, some fields are required.' self.add_message(message, 'error') return self.redirect_to('edit-password') if password != c_password: message = 'Sorry, Passwords are not identical, '\ 'you have to repeat again.' self.add_message(message, 'error') return self.redirect_to('edit-password') try: user_info = models.User.get_by_id(long(self.user_id)) auth_id = "own:%s" % user_info.username current_password = utils.encrypt(current_password, config.salt) try: user=models.User.get_by_auth_password(auth_id, current_password) password = utils.encrypt(password, config.salt) user.password = security.generate_password_hash(password, length=12) user.put() #Login User coto = self.auth.get_user_by_password(user.auth_ids[0], password) logging.error(coto) self.add_message('Password changed successfully', 'success') return self.redirect_to('secure') except (InvalidAuthIdError, InvalidPasswordError), e: # Returns error message to self.response.write in # the BaseHandler.dispatcher message = "Your Current Password is wrong, please try again" self.add_message(message, 'error') return self.redirect_to('edit-password') except (AttributeError,TypeError), e: login_error_message='Sorry you are not logged in!' self.add_message(login_error_message,'error') self.redirect_to('login')
def post_asset(self, server_info): '''向api发送资产信息''' data = encrypt(json.dumps(server_info)) requests.post( setting.API, data=data, headers={ 'ContentType': 'application/json', 'Openkey': auth() } ) #json打包发过去,会默认发送一个header={'content-type':'application/json'},所有接受方只能在request.body里面接受到,request.post是没有值的
def post_asset(self, server_info): # 将数据转换成json字符串格式发送 data = encrypt( json.dumps(server_info)) # 将字典格式的数据转换成encrypt所需的字符串格式,然后加密 response = requests.post( url=settings.API, data=data, headers={ 'OpenKey': auth(), 'Content-Type': 'application/json' } # ) print(response.text)
def post_asset(self, server_info): #加密 data = encrypt(json.dumps(server_info)) result = requests.post( url=settings.API, headers={ "OpenKey": auth(), "Content-Type": "application/json" }, data=data, ) return result
def post(self): """ username: Get the username from POST dict password: Get the password from POST dict """ if not self.form.validate(): return self.get() username = self.form.username.data.lower() try: if utils.is_email_valid(username): user = models.User.get_by_email(username) if user: auth_id = user.auth_ids[0] else: raise InvalidAuthIdError else: auth_id = "own:%s" % username user = models.User.get_by_auth_id(auth_id) password = self.form.password.data.strip() remember_me = True if str(self.request.POST.get('remember_me')) == 'on' else False # Password to SHA512 password = utils.encrypt(password, config.salt) # Try to login user with password # Raises InvalidAuthIdError if user is not found # Raises InvalidPasswordError if provided password # doesn't match with specified user self.auth.get_user_by_password( auth_id, password, remember=remember_me) visitLog = models.VisitLog( user=user.key, uastring=self.request.user_agent, ip=self.request.remote_addr, timestamp=utils.get_date_time() ) visitLog.put() self.redirect_to('secure') except (InvalidAuthIdError, InvalidPasswordError), e: # Returns error message to self.response.write in # the BaseHandler.dispatcher message = _("Login invalid, Try again") + ". " + _("Don't have an account?") + \ ' <a href="' + self.uri_for('register') + '">' + _("Sign Up") + '</a>' self.add_message(message, 'error') return self.redirect_to('login')
def post(self): """ Get fields from POST dict """ if not self.form.validate(): return self.get() username = self.form.username.data.lower() name = self.form.name.data.strip() last_name = self.form.last_name.data.strip() email = self.form.email.data.lower() password = self.form.password.data.strip() country = self.form.country.data # Password to SHA512 password = utils.encrypt(password, config.salt) # Passing password_raw=password so password will be hashed # Returns a tuple, where first value is BOOL. # If True ok, If False no new user is created unique_properties = ['username', 'email'] auth_id = "own:%s" % username user = self.auth.store.user_model.create_user( auth_id, unique_properties, password_raw=password, username=username, name=name, last_name=last_name, email=email, country=country, ip=self.request.remote_addr, ) if not user[0]: #user is a tuple message = _('Sorry, This user') + '{0:>s}'.format(username) + " " +\ _('is already registered.') self.add_message(message, 'error') return self.redirect_to('register') else: # User registered successfully, let's try sign in the user and redirect to a secure page. try: self.auth.get_user_by_password(user[1].auth_ids[0], password) message = _('Welcome') + " " + str(username) + ", " + _('you are now logged in.') self.add_message(message, 'success') return self.redirect_to('secure') except (AttributeError, KeyError), e: message = _('Unexpected error creating '\ 'user') + " " + '{0:>s}.'.format(username) self.add_message(message, 'error') self.abort(403)
def post(self): """ Get fields from POST dict """ current_password = str(self.request.POST.get('current_password')).strip() password = str(self.request.POST.get('password')).strip() c_password = str(self.request.POST.get('c_password')).strip() if current_password == "" or password == "" or c_password == "": message = 'Sorry, some fields are required.' self.add_message(message, 'error') return self.redirect_to('edit-password') if password != c_password: message = 'Sorry, Passwords are not identical, '\ 'you have to repeat again.' self.add_message(message, 'error') return self.redirect_to('edit-password') #TODO: Update profile identifying unique_properties user_info = models.User.get_by_id(long(self.user_id)) logging.error(user_info) auth_id = "own:%s" % user_info.username verify = models.User.get_by_auth_password(auth_id, current_password) user = verify[0] if user: # Password to SHA512 password = utils.encrypt(password, config.salt) user.password = security.generate_password_hash(password, length=12) user.put() # Login User coto = self.auth.get_user_by_password(user.auth_ids[0], password) logging.error(coto) self.add_message('Password changed successfully', 'success') return self.redirect_to('secure') else: self.add_message('Your current password is wrong, please try again.', 'error') return self.redirect_to('edit-password')
def post(self, user_id, token): verify = models.User.get_by_auth_token(int(user_id), token) user = verify[0] password = self.form.password.data.strip() if user and self.form.validate(): # Password to SHA512 password = utils.encrypt(password, config.salt) user.password = security.generate_password_hash(password, length=12) user.put() # Delete token models.User.delete_auth_token(int(user_id), token) # Login User self.auth.get_user_by_password(user.auth_ids[0], password) self.add_message(_('Password changed successfully'), 'success') return self.redirect_to('home') else: self.add_message(_('Please correct the form errors.'), 'error') return self.redirect_to('password-reset-check', user_id=user_id, token=token)
def post(self): """ Get fields from POST dict """ if not self.form.validate(): return self.get() new_email = self.form.new_email.data.strip() password = self.form.password.data.strip() try: user_info = models.User.get_by_id(long(self.user_id)) auth_id = "own:%s" % user_info.username # Password to SHA512 password = utils.encrypt(password, config.salt) try: # authenticate user by its password user = models.User.get_by_auth_password(auth_id, password) # if the user change his/her email address if new_email != user.email: # check whether the new email has been used by another user aUser = models.User.get_by_email(new_email) if aUser is not None: message = _("The email %s is already registered." % new_email) self.add_message(message, "error") return self.redirect_to("edit-email") # send email subject = config.app_name + " Email Changed Notification" user_token = models.User.create_auth_token(self.user_id) confirmation_url = self.uri_for( "email-changed-check", user_id=user_info.get_id(), encoded_email=utils.encode(new_email), token=user_token, _full=True) # load email's template template_val = { "app_name": config.app_name, "first_name": user.name, "username": user.username, "new_email": new_email, "confirmation_url": confirmation_url, "support_url": self.uri_for("contact", _full=True) } old_body_path = "emails/email_changed_notification_old.txt" old_body = self.jinja2.render_template( old_body_path, **template_val) new_body_path = "emails/email_changed_notification_new.txt" new_body = self.jinja2.render_template( new_body_path, **template_val) email_url = self.uri_for('taskqueue-send-email') taskqueue.add(url=email_url, params={ 'to': user.email, 'subject': subject, 'body': old_body, }) email_url = self.uri_for('taskqueue-send-email') taskqueue.add(url=email_url, params={ 'to': new_email, 'subject': subject, 'body': new_body, }) logging.error(user) # display successful message msg = _( "Please check your new email for confirmation. Your email will be updated after confirmation." ) self.add_message(msg, 'success') return self.redirect_to('edit-profile') else: self.add_message(_("You didn't change your email"), "warning") return self.redirect_to("edit-email") except (InvalidAuthIdError, InvalidPasswordError), e: # Returns error message to self.response.write in # the BaseHandler.dispatcher message = _("Your password is wrong, please try again") self.add_message(message, 'error') return self.redirect_to('edit-email') except (AttributeError, TypeError), e: login_error_message = _('Sorry you are not logged in!') self.add_message(login_error_message, 'error') self.redirect_to('login')
def post(self): """ username: Get the username from POST dict password: Get the password from POST dict """ if not self.form.validate(): return self.get() username = self.form.username.data.lower() try: if utils.is_email_valid(username): user = models.User.get_by_email(username) if user: auth_id = user.auth_ids[0] else: raise InvalidAuthIdError else: auth_id = "own:%s" % username user = models.User.get_by_auth_id(auth_id) password = self.form.password.data.strip() remember_me = True if str( self.request.POST.get('remember_me')) == 'on' else False # Password to SHA512 password = utils.encrypt(password, config.salt) # Try to login user with password # Raises InvalidAuthIdError if user is not found # Raises InvalidPasswordError if provided password # doesn't match with specified user self.auth.get_user_by_password(auth_id, password, remember=remember_me) # if user account is not activated, logout and redirect to home if (user.activated == False): # logout self.auth.unset_session() # redirect to home with error message resend_email_uri = self.uri_for('resend-account-activation', encoded_email=utils.encode( user.email)) message = _('Sorry, your account') + ' <strong>{0:>s}</strong>'.format(username) + " " +\ _('has not been activated. Please check your email to activate your account') + ". " +\ _('Or click') + " <a href='"+resend_email_uri+"'>" + _('this') + "</a> " + _('to resend the email') self.add_message(message, 'error') return self.redirect_to('home') # check twitter association in session twitter_helper = twitter.TwitterAuth(self) twitter_association_data = twitter_helper.get_association_data() if twitter_association_data is not None: if models.SocialUser.check_unique( user.key, 'twitter', str(twitter_association_data['id'])): social_user = models.SocialUser( user=user.key, provider='twitter', uid=str(twitter_association_data['id']), extra_data=twitter_association_data) social_user.put() logVisit = models.LogVisit(user=user.key, uastring=self.request.user_agent, ip=self.request.remote_addr, timestamp=utils.get_date_time()) logVisit.put() self.redirect_to('home') except (InvalidAuthIdError, InvalidPasswordError), e: # Returns error message to self.response.write in # the BaseHandler.dispatcher message = _("Login invalid, Try again.") + "<br/>" + _("Don't have an account?") + \ ' <a href="' + self.uri_for('register') + '">' + _("Sign Up") + '</a>' self.add_message(message, 'error') return self.redirect_to('login')
def post(self): """ Get fields from POST dict """ if not self.form.validate(): return self.get() current_password = self.form.current_password.data.strip() password = self.form.password.data.strip() try: user_info = models.User.get_by_id(long(self.user_id)) auth_id = "own:%s" % user_info.username # Password to SHA512 current_password = utils.encrypt(current_password, config.salt) try: user = models.User.get_by_auth_password( auth_id, current_password) # Password to SHA512 password = utils.encrypt(password, config.salt) user.password = security.generate_password_hash(password, length=12) user.put() # send email subject = config.app_name + " Account Password Changed" # load email's template template_val = { "app_name": config.app_name, "first_name": user.name, "username": user.username, "email": user.email, "reset_password_url": self.uri_for("password-reset", _full=True) } email_body_path = "emails/password_changed.txt" email_body = self.jinja2.render_template( email_body_path, **template_val) email_url = self.uri_for('taskqueue-send-email') taskqueue.add(url=email_url, params={ 'to': user.email, 'subject': subject, 'body': email_body, 'sender': config.contact_sender, }) # Login User self.auth.get_user_by_password(user.auth_ids[0], password) self.add_message(_('Password changed successfully'), 'success') return self.redirect_to('edit-profile') except (InvalidAuthIdError, InvalidPasswordError), e: # Returns error message to self.response.write in # the BaseHandler.dispatcher message = _("Your Current Password is wrong, please try again") self.add_message(message, 'error') return self.redirect_to('edit-password') except (AttributeError, TypeError), e: login_error_message = _('Sorry you are not logged in!') self.add_message(login_error_message, 'error') self.redirect_to('login')
def post(self): """ Get fields from POST dict """ if not self.form.validate(): return self.get() username = self.form.username.data.lower() name = self.form.name.data.strip() last_name = self.form.last_name.data.strip() email = self.form.email.data.lower() password = self.form.password.data.strip() country = self.form.country.data # Password to SHA512 password = utils.encrypt(password, config.salt) # Passing password_raw=password so password will be hashed # Returns a tuple, where first value is BOOL. # If True ok, If False no new user is created unique_properties = ['username', 'email'] auth_id = "own:%s" % username user = self.auth.store.user_model.create_user(auth_id, unique_properties, password_raw=password, username=username, name=name, last_name=last_name, email=email, country=country, activated=False) if not user[0]: #user is a tuple message = _('Sorry, This user') + ' <strong>{0:>s}</strong>'.format(username) + " " +\ _('is already registered.') self.add_message(message, 'error') return self.redirect_to('register') else: # User registered successfully # But if the user registered using the form, the user has to check their email to activate the account ??? try: user_info = models.User.get_by_email(email) if (user_info.activated == False): # send email subject = config.app_name + " Account Verification Email" encoded_email = utils.encode(email) confirmation_url = self.uri_for( "account-activation", encoded_email=encoded_email, _full=True) # load email's template template_val = { "app_name": config.app_name, "username": username, "confirmation_url": confirmation_url, "support_url": self.uri_for("contact", _full=True) } body_path = "emails/account_activation.txt" body = self.jinja2.render_template(body_path, **template_val) email_url = self.uri_for('taskqueue-send-email') taskqueue.add(url=email_url, params={ 'to': str(email), 'subject': subject, 'body': body, }) message = _('Congratulations') + ", " + str(username) + "! " + _('You are now registered') +\ ". " + _('Please check your email to activate your account') self.add_message(message, 'success') return self.redirect_to('home') # If the user didn't register using registration form ??? db_user = self.auth.get_user_by_password( user[1].auth_ids[0], password) # Check twitter association in session twitter_helper = twitter.TwitterAuth(self) twitter_association_data = twitter_helper.get_association_data( ) if twitter_association_data is not None: if models.SocialUser.check_unique( user[1].key, 'twitter', str(twitter_association_data['id'])): social_user = models.SocialUser( user=user[1].key, provider='twitter', uid=str(twitter_association_data['id']), extra_data=twitter_association_data) social_user.put() message = _('Welcome') + " " + str(username) + ", " + _( 'you are now logged in.') self.add_message(message, 'success') return self.redirect_to('home') except (AttributeError, KeyError), e: message = _('Unexpected error creating '\ 'user') + " " + '{0:>s}.'.format(username) self.add_message(message, 'error') self.abort(403)
def post(self): """ username: Get the username from POST dict password: Get the password from POST dict """ if not self.form.validate(): return self.get() username = self.form.username.data.lower() try: if utils.is_email_valid(username): user = models.User.get_by_email(username) if user: auth_id = user.auth_ids[0] else: raise InvalidAuthIdError else: auth_id = "own:%s" % username user = models.User.get_by_auth_id(auth_id) password = self.form.password.data.strip() remember_me = True if str(self.request.POST.get('remember_me')) == 'on' else False # Password to SHA512 password = utils.encrypt(password, config.salt) # Try to login user with password # Raises InvalidAuthIdError if user is not found # Raises InvalidPasswordError if provided password # doesn't match with specified user self.auth.get_user_by_password( auth_id, password, remember=remember_me) # if user account is not activated, logout and redirect to home if (user.activated == False): # logout self.auth.unset_session() # redirect to home with error message resend_email_uri = self.uri_for('resend-account-activation', encoded_email=utils.encode(user.email)) message = _('Sorry, your account') + ' <strong>{0:>s}</strong>'.format(username) + " " +\ _('has not been activated. Please check your email to activate your account') + ". " +\ _('Or click') + " <a href='"+resend_email_uri+"'>" + _('this') + "</a> " + _('to resend the email') self.add_message(message, 'error') return self.redirect_to('home') #check twitter association in session twitter_helper = twitter.TwitterAuth(self) twitter_association_data = twitter_helper.get_association_data() if twitter_association_data is not None: if models.SocialUser.check_unique(user.key, 'twitter', str(twitter_association_data['id'])): social_user = models.SocialUser( user = user.key, provider = 'twitter', uid = str(twitter_association_data['id']), extra_data = twitter_association_data ) social_user.put() logVisit = models.LogVisit( user=user.key, uastring=self.request.user_agent, ip=self.request.remote_addr, timestamp=utils.get_date_time() ) logVisit.put() self.redirect_to('home') except (InvalidAuthIdError, InvalidPasswordError), e: # Returns error message to self.response.write in # the BaseHandler.dispatcher message = _("Login invalid, Try again.") + "<br/>" + _("Don't have an account?") + \ ' <a href="' + self.uri_for('register') + '">' + _("Sign Up") + '</a>' self.add_message(message, 'error') return self.redirect_to('login')
def post(self): """ Get fields from POST dict """ if not self.form.validate(): return self.get() new_email = self.form.new_email.data.strip() password = self.form.password.data.strip() try: user_info = models.User.get_by_id(long(self.user_id)) auth_id = "own:%s" % user_info.username # Password to SHA512 password = utils.encrypt(password, config.salt) try: # authenticate user by its password user = models.User.get_by_auth_password(auth_id, password) # if the user change his/her email address if new_email != user.email: # check whether the new email has been used by another user aUser = models.User.get_by_email(new_email) if aUser is not None: message = _("The email %s is already registered." % new_email) self.add_message(message, "error") return self.redirect_to("edit-email") # send email subject = config.app_name + " Email Changed Notification" user_token = models.User.create_auth_token(self.user_id) confirmation_url = self.uri_for("email-changed-check", user_id = user_info.get_id(), encoded_email = utils.encode(new_email), token = user_token, _full = True) # load email's template template_val = { "app_name": config.app_name, "first_name": user.name, "username": user.username, "new_email": new_email, "confirmation_url": confirmation_url, "support_url": self.uri_for("contact", _full=True) } old_body_path = "emails/email_changed_notification_old.txt" old_body = self.jinja2.render_template(old_body_path, **template_val) new_body_path = "emails/email_changed_notification_new.txt" new_body = self.jinja2.render_template(new_body_path, **template_val) email_url = self.uri_for('taskqueue-send-email') taskqueue.add(url = email_url, params={ 'to': user.email, 'subject' : subject, 'body' : old_body, }) email_url = self.uri_for('taskqueue-send-email') taskqueue.add(url = email_url, params={ 'to': new_email, 'subject' : subject, 'body' : new_body, }) logging.error(user) # display successful message msg = _("Please check your new email for confirmation. Your email will be updated after confirmation.") self.add_message(msg, 'success') return self.redirect_to('edit-profile') else: self.add_message(_("You didn't change your email"), "warning") return self.redirect_to("edit-email") except (InvalidAuthIdError, InvalidPasswordError), e: # Returns error message to self.response.write in # the BaseHandler.dispatcher message = _("Your password is wrong, please try again") self.add_message(message, 'error') return self.redirect_to('edit-email') except (AttributeError,TypeError), e: login_error_message = _('Sorry you are not logged in!') self.add_message(login_error_message,'error') self.redirect_to('login')
def post(self): """ Get fields from POST dict """ if not self.form.validate(): return self.get() username = self.form.username.data.lower() name = self.form.name.data.strip() last_name = self.form.last_name.data.strip() email = self.form.email.data.lower() password = self.form.password.data.strip() country = self.form.country.data # Password to SHA512 password = utils.encrypt(password, config.salt) # Passing password_raw=password so password will be hashed # Returns a tuple, where first value is BOOL. # If True ok, If False no new user is created unique_properties = ['username', 'email'] auth_id = "own:%s" % username user = self.auth.store.user_model.create_user( auth_id, unique_properties, password_raw=password, username=username, name=name, last_name=last_name, email=email, country=country, activated=False ) if not user[0]: #user is a tuple message = _('Sorry, This user') + ' <strong>{0:>s}</strong>'.format(username) + " " +\ _('is already registered.') self.add_message(message, 'error') return self.redirect_to('register') else: # User registered successfully # But if the user registered using the form, the user has to check their email to activate the account ??? try: user_info = models.User.get_by_email(email) if (user_info.activated == False): # send email subject = config.app_name + " Account Verification Email" encoded_email = utils.encode(email) confirmation_url = self.uri_for("account-activation", encoded_email = encoded_email, _full = True) # load email's template template_val = { "app_name": config.app_name, "username": username, "confirmation_url": confirmation_url, "support_url": self.uri_for("contact", _full=True) } body_path = "emails/account_activation.txt" body = self.jinja2.render_template(body_path, **template_val) email_url = self.uri_for('taskqueue-send-email') taskqueue.add(url = email_url, params={ 'to': str(email), 'subject' : subject, 'body' : body, }) message = _('Congratulations') + ", " + str(username) + "! " + _('You are now registered') +\ ". " + _('Please check your email to activate your account') self.add_message(message, 'success') return self.redirect_to('home') # If the user didn't register using registration form ??? db_user = self.auth.get_user_by_password(user[1].auth_ids[0], password) # Check twitter association in session twitter_helper = twitter.TwitterAuth(self) twitter_association_data = twitter_helper.get_association_data() if twitter_association_data is not None: if models.SocialUser.check_unique(user[1].key, 'twitter', str(twitter_association_data['id'])): social_user = models.SocialUser( user = user[1].key, provider = 'twitter', uid = str(twitter_association_data['id']), extra_data = twitter_association_data ) social_user.put() message = _('Welcome') + " " + str(username) + ", " + _('you are now logged in.') self.add_message(message, 'success') return self.redirect_to('home') except (AttributeError, KeyError), e: message = _('Unexpected error creating '\ 'user') + " " + '{0:>s}.'.format(username) self.add_message(message, 'error') self.abort(403)
def post(self): """ Get fields from POST dict """ username = self.request.POST.get('username').lower().strip() name = self.request.POST.get('name', "").strip() last_name = self.request.POST.get('last_name', "").strip() email = self.request.POST.get('email').lower().strip() password = self.request.POST.get('password').strip() c_password = self.request.POST.get('c_password').strip() country = self.request.POST.get('country', "").strip() if username == "" or email == "" or password == "": message = 'Sorry, some fields are required.' self.add_message(message, 'error') return self.redirect_to('register') if password != c_password: message = 'Sorry, Passwords are not identical, ' \ 'you have to repeat again.' self.add_message(message, 'error') return self.redirect_to('register') if not utils.is_email_valid(email): message = 'Sorry, the email %s is not valid.' % email self.add_message(message, 'error') return self.redirect_to('register') if not utils.is_alphanumeric(username): message = 'Sorry, the username %s is not valid. ' \ 'Use only letters and numbers' % username self.add_message(message, 'error') return self.redirect_to('register') # Password to SHA512 password = utils.encrypt(password, config.salt) # Passing password_raw=password so password will be hashed # Returns a tuple, where first value is BOOL. # If True ok, If False no new user is created unique_properties = [ 'username' , 'email'] auth_id = "own:%s" % username user = self.auth.store.user_model.create_user( auth_id, unique_properties, password_raw=password, username=username, name=name, last_name=last_name, email=email, country=country, ip=self.request.remote_addr, ) if not user[0]: #user is a tuple message = 'Sorry, This user {0:>s} ' \ 'is already registered.'.format(username)# Error message self.add_message(message, 'error') return self.redirect_to('register') else: # User registered successfully, let's try sign in the user and redirect to a secure page. try: self.auth.get_user_by_password(user[1].auth_ids[0], password) message = 'Welcome %s you are now loged in.' % ( str(username) ) self.add_message(message, 'success') return self.redirect_to('secure') except (AttributeError, KeyError), e: message = 'Unexpected error creating ' \ 'user {0:>s}.'.format(username) self.add_message(message, 'error') self.abort(403)
def post_data(self, server_info): server_info = encrypt(server_info) requests.post(setting.API_URL, data=server_info)
def post(self): """ Get fields from POST dict """ new_email = self.request.POST.get('new_email').strip() password = self.request.POST.get('password').strip() if new_email == "" or password == "": message = 'Sorry, some fields are required.' self.add_message(message, 'error') return self.redirect_to('edit-email') if not utils.is_email_valid(new_email): message = 'Sorry, the email %s is not valid.' % new_email self.add_message(message, 'error') return self.redirect_to('edit-email') try: user_info = models.User.get_by_id(long(self.user_id)) auth_id = "own:%s" % user_info.username # Password to SHA512 password = utils.encrypt(password, config.salt) try: # authenticate user by its password user = models.User.get_by_auth_password(auth_id, password) # if the user change his/her email address if new_email != user.email: # check whether the new email has been used by another user aUser = models.User.get_by_email(new_email) if aUser is not None: message = "The email %s is already registered. Want to <a href='/login/'>login</a> or <a href='/password-reset/'>recover your password</a>?" % new_email self.add_message(message, "error") return self.redirect_to("edit-email") # send email subject = config.app_name + " Email Changed Notification" user_token = models.User.create_auth_token(self.user_id) confirmation_url = self.uri_for("email-changed-check", user_id = user_info.get_id(), encoded_email = utils.encode(new_email), token = user_token, _full = True) # load email's template template_val = { "app_name": config.app_name, "first_name": user.name, "username": user.username, "new_email": new_email, "confirmation_url": confirmation_url, "support_url": self.uri_for("contact", _full=True) } old_body_path = "emails/email_changed_notification_old.txt" old_body = self.jinja2.render_template(old_body_path, **template_val) new_body_path = "emails/email_changed_notification_new.txt" new_body = self.jinja2.render_template(new_body_path, **template_val) utils.send_email(user.email, subject, old_body) utils.send_email(new_email , subject, new_body) logging.error(user) # display successful message msg = "Please check your new email for confirmation. " msg += "Your email will be updated after confirmation. " self.add_message(msg, 'success') return self.redirect_to('secure') else: self.add_message("You didn't change your email", "warning") return self.redirect_to("edit-email") except (InvalidAuthIdError, InvalidPasswordError), e: # Returns error message to self.response.write in # the BaseHandler.dispatcher message = "Your password is wrong, please try again" self.add_message(message, 'error') return self.redirect_to('edit-email') except (AttributeError,TypeError), e: login_error_message = _('Sorry you are not logged in!') self.add_message(login_error_message,'error') self.redirect_to('login')