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('/') flash[:notice] = "Thanks for signing up! We're sending you an email with your activation code." else flash[: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! flash[:notice] = "Signup complete! Please sign in to continue." redirect_to '/login' when params[:activation_code].blank? flash[:error] = "The activation code was missing. Please follow the URL from your email." redirect_back_or_default('/') else 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." redirect_back_or_default('/') 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