Exemplo n.º 1
0
 def post(self):
   # posted a filled out reg form
   # create the user,
   # and send an email verification including token to the new user
   email = self.request.get('email').lower()
   name = self.request.get('name')
   password = self.request.get('password')
   last_name = self.request.get('lastname')
   unique_properties = ['email_address']
   logging.info("register,POST email=%s"%email)
   user_data = self.user_model.create_user(
     email,
     unique_properties,
     email_address=email,
     name=name,
     password_raw=password,
     last_name=last_name,
     verified=False)
   if not user_data[0]:  # user_data is a tuple
     logging.warning("register,POST Duplicate %s"%email)
     self.render_template(
       'signup.html', {"message": "That userId is already registered", })
     return
   user = user_data[1]
   user_id = user.get_id()
   token = self.user_model.create_signup_token(user_id)
   invite_token = self.request.params['invite_token'] if \
     'invite' in self.request.params \
     else "none"
   inviter = Invite.checkInviteToken(invite_token)
   if inviter:
      passwordVerificationHandler.handle_verification(self,user_id,token,"v",invite_token)
   else:
       verification_url = self.uri_for('verification', type='v', user_id=user_id,
                                       signup_token=token, _full=True)
       verification_url += "&invite_token=" + str(invite_token)
       logging.info("register,POST emailing")
       mail_wrapper.send_mail(
         sender=config['system_email'],
         to=[email, '*****@*****.**'],
         subject="Rayv Registration",
         body='Click on this link to verify your address and '
              'complete the sign-up process \n'+
               verification_url
       )
       logging.info('Verification email sent to %s [%s] [%s]'%(email,verification_url, invite_token))
       params = {
         'email':email,
         'password':password
       }
       self.render_template('signup-verify.html', params)
Exemplo n.º 2
0
    def handle_verification(cls, handler, user_id,signup_token,verification_type,invite_token):
        # it should be something more concise like
        # self.auth.get_user_by_token(user_id, signup_token)
        # unfortunately the auth interface does not (yet) allow to manipulate
        # signup tokens concisely
        user, ts = handler.user_model.get_by_auth_token(int(user_id), signup_token,
                                                     'signup')

        if not user:
            logging.info(
              'Could not find any userId with id "%s" signup token "%s"',
              user_id,
              signup_token)
            handler.display_message("Not found - if you've already followed this link there is no need to do it again")
            return

        # store userId data in the session
        handler.auth.set_session(handler.auth.store.user_to_dict(user), remember=True)

        if verification_type == 'v':
            # remove signup token,
            # we don't want users to come back with an old link
            handler.user_model.delete_signup_token(handler.user_id, signup_token)

            if not user.verified:
                user.verified = True
                user.put()
            try:
              if invite_token and invite_token != 'none':
                inv = Invite.checkInviteToken(invite_token)
                Friends.addFriends(inv, handler.user_id)
                Invite.delInviteToken(invite_token)
                logging.info("passwordVerificationHandler complete "+user.email_address)
            except:
              logging_ext.error(
                "Failed to add friend: passwordVerificationHandler GET",
                exc_info=True)
            handler.render_template('signup-complete.html')
        elif verification_type == 'p':
            # supply userId to the page
            params = {
                'userId': user,
                'token': signup_token
            }
            handler.render_template('resetpassword.html', params)
        else:
            logging.info('verification type not supported')
            handler.abort(404)
Exemplo n.º 3
0
    def post(self):
        logging.info('SignupHandler: In')
        email = self.request.get('email').lower()
        username = email
        user = self.user_model.get_by_auth_id(username)
        if user and user.blocked:
            logging.info('SignupHandler: Blocked user ' + username)
            return self.display_message('Unable to sign up')
        name = self.request.get('name')
        password = self.request.get('password')
        last_name = self.request.get('lastname')

        unique_properties = ['email_address']
        logging.info('SignupHandler: Create User ' + email)
        user_data = self.user_model.create_user(username,
                                                unique_properties,
                                                email_address=email,
                                                name=name,
                                                password_raw=password,
                                                last_name=last_name,
                                                verified=False)
        if not user_data[0]:  #user_data is a tuple
            logging.warning('SignupHandler: ERROR dup for ' + email)
            self.display_message(
                'Unable to create account for %s.\n That email is already registered'
                % (username))
            return

        user = user_data[1]
        user_id = user.get_id()

        user.screen_name = self.request.get('screenname')
        if not user.screen_name:
            user.screen_name = name.title() + last_name.upper()[0]
        logging.info('SignupHandler: Put...')
        user.put()
        logging.info('SignupHandler: Put done')

        token = self.user_model.create_signup_token(user_id)
        invite_token = self.request.params.get('invite_token')
        inviter = Invite.checkInviteToken(invite_token)
        if inviter:
            #invited
            self.render_template('signup-complete.html')
        else:
            if not invite_token:
                invite_token = 'none'
            verification_url = self.uri_for('verification',
                                            type='v',
                                            user_id=user_id,
                                            signup_token=token,
                                            invite_token=invite_token,
                                            _full=True)

            msg = 'Click on this link to confirm your address and complete the sign-up process \n'+\
                    verification_url
            logging.info('SignupHandler: Send msg %s, token %s' %
                         (verification_url, token))
            mail_wrapper.send_mail(sender=settings.config['system_email'],
                                   to=[email, '*****@*****.**'],
                                   subject="Welcome to Taste 5",
                                   body=msg)
            #self.display_message(msg.format(url=verification_url))
            logging.info('SignupHandler: Sent')
            params = {'email': email, 'password': password}
            self.render_template('signup-verify.html', params)