Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #3
0
 def logout(cls):
     auth.get_auth_system().logout()
Exemple #4
0
 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.')