class <%= model_controller_class_name %>Controller < ApplicationController # Be sure to include AuthenticationSystem in Application Controller instead include AuthenticatedSystem <% if options.stateful? %> # Protect these actions behind an admin login # before_filter :admin_required, :only => [:suspend, :unsuspend, :destroy, :purge] before_filter :find_<%= file_name %>, :only => [:suspend, :unsuspend, :destroy, :purge] <% end %> # render new.rhtml def new @<%= file_name %> = <%= class_name %>.new end def create logout_keeping_session! @<%= file_name %> = <%= class_name %>.new(params[:<%= file_name %>]) <% if options.stateful? -%> @<%= file_name %>.register! if @<%= file_name %> && @<%= file_name %>.valid? success = @<%= file_name %> && @<%= file_name %>.valid? <% else -%> success = @<%= file_name %> && @<%= file_name %>.save <% end -%> if success && @<%= file_name %>.errors.empty? <% if !options.include_activation? -%> # Protects against session fixation attacks, causes request forgery # protection if visitor resubmits an earlier form using back # button. Uncomment if you understand the tradeoffs. # reset session self.current_<%= file_name %> = @<%= file_name %> # !! now logged in <% end -%>redirect_back_or_default('/', :notice => "Thanks for signing up! We're sending you an email with your activation code.") else flash.now[:error] = "We couldn't set up that account, sorry. Please try again, or contact an admin (link is above)." render :action => 'new' end end <% if options.include_activation? %> def activate logout_keeping_session! <%= file_name %> = <%= class_name %>.find_by_activation_code(params[:activation_code]) unless params[:activation_code].blank? case when (!params[:activation_code].blank?) && <%= file_name %> && !<%= file_name %>.active? <%= file_name %>.activate! redirect_to '/login', :notice => "Signup complete! Please sign in to continue." when params[:activation_code].blank? redirect_back_or_default('/', :flash => { :error => "The activation code was missing. Please follow the URL from your email." }) else redirect_back_or_default('/', :flash => { :error => "We couldn't find a <%= file_name %> with that activation code -- check your email? Or maybe you've already activated -- try signing in." }) end end <% end %><% if options.stateful? %> def suspend @<%= file_name %>.suspend! redirect_to <%= model_controller_routing_name %>_path end def unsuspend @<%= file_name %>.unsuspend! redirect_to <%= model_controller_routing_name %>_path end def destroy @<%= file_name %>.delete! redirect_to <%= model_controller_routing_name %>_path end def purge @<%= file_name %>.destroy redirect_to <%= model_controller_routing_name %>_path end # There's no page here to update or destroy a <%= file_name %>. If you add those, be # smart -- make sure you check that the visitor is authorized to do so, that they # supply their old password along with a new one to update it, etc. protected def find_<%= file_name %> @<%= file_name %> = <%= class_name %>.find(params[:id]) end <% end -%> end