def post(self, **kwargs): if self.current_user is not None: # Don't allow existing users to access this page. return redirect(request.args.get('redirect', '/')) user = None error = None form, use_password = get_signup_form() username = form.data['username'] email = form.data['email'] kwargs = {'email': email} if use_password: kwargs['password'] = request.form.get('password') if kwargs['password'] != request.form.get('confirm_password'): error = True self.messages.add_form_error(_("Passwords didn't match.")) if error is None: kwargs['is_admin'] = False if use_password: # Own authentication. auth_id = 'own|%s' % username else: current_user = users.get_current_user() if current_user is not None: # App Engine authentication. auth_id = 'gae|%s' % current_user.user_id() kwargs['is_admin'] = users.is_current_user_admin() else: # OpenId, Oauth, Facebook, Twitter or FriendFeed. raise NotImplementedError() user = get_auth_system().create_user(username, auth_id, **kwargs) if user is None: self.messages.add_form_error(_('Username already exists. ' 'Please try a different one.')) if user is not None: redirect_url = request.args.get('redirect', '/') if use_password: return redirect(create_login_url(redirect_url)) else: return redirect(redirect_url) else: context = { 'form': form, 'messages': self.messages, } return self.render_response('users/signup.html', **context)
def register(cls, type, username, password, confirm, email): """Creates a new user and returns it. Raises a validation error if unsuccessful.""" formatted = username username = username.lower() auth_id = '%s|%s' % (type, username) # Create a unique auth id for this user. # Set the properties of our user. kwargs = { 'email' : email, 'password' : password, 'user_type' : type, 'formatted_username' : formatted } logging.debug('Creating user: %s' % username) return auth.get_auth_system().create_user(username, auth_id, **kwargs)
def logout(cls): auth.get_auth_system().logout()
def login(cls, username, password, remember): username = username.lower() if not auth.get_auth_system().login_with_form(username, password, remember): raise validation.BadFormatError('Username or password are not correct.')