+ else
+ session[:referer] = params[:referer]
+
+ @title = t 'user.terms.title'
+ @user = User.new(params[:user]) if params[:user]
+
+ if params[:user] and params[:user][:openid_url] and @user.pass_crypt.empty?
+ # We are creating an account with OpenID and no password
+ # was specified so create a random one
+ @user.pass_crypt = SecureRandom.base64(16)
+ @user.pass_crypt_confirmation = @user.pass_crypt
+ end
+
+ if @user
+ if @user.invalid?
+ if @user.new_record?
+ # Something is wrong with a new user, so rerender the form
+ render :action => :new
+ else
+ # Error in existing user, so go to account settings
+ flash[:errors] = @user.errors
+ redirect_to :action => :account, :display_name => @user.display_name
+ end
+ elsif @user.terms_agreed?
+ # Already agreed to terms, so just show settings
+ redirect_to :action => :account, :display_name => @user.display_name
+ elsif params[:user] and params[:user][:openid_url] and not params[:user][:openid_url].empty?
+ # Verify OpenID before moving on
+ session[:new_user] = @user
+ openid_verify(params[:user][:openid_url], @user)
+ end
+ else
+ # Not logged in, so redirect to the login page
+ redirect_to :action => :login, :referer => request.fullpath
+ end