From 552a647810d16013b26a93299406d5797157faba Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 1 May 2010 18:28:41 +0100 Subject: [PATCH] Merge all the user status changing methods into one --- app/controllers/user_controller.rb | 40 +++++------------------------- app/views/user/view.html.erb | 10 ++++---- config/routes.rb | 6 +---- 3 files changed, 12 insertions(+), 44 deletions(-) diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index 839c94e3a..f24e1ee72 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -11,12 +11,12 @@ class UserController < ApplicationController before_filter :require_allow_read_prefs, :only => [:api_details] before_filter :require_allow_read_gpx, :only => [:api_gpx_files] before_filter :require_cookies, :only => [:login, :confirm] - before_filter :require_administrator, :only => [:activate, :deactivate, :confirm, :hide, :unhide, :delete] - before_filter :lookup_this_user, :only => [:activate, :deactivate, :confirm, :hide, :unhide, :delete] + before_filter :require_administrator, :only => [:set_status, :delete] + before_filter :lookup_this_user, :only => [:set_status, :delete] filter_parameter_logging :password, :pass_crypt, :pass_crypt_confirmation - cache_sweeper :user_sweeper, :only => [:account, :hide, :unhide, :delete] + cache_sweeper :user_sweeper, :only => [:account, :set_status, :delete] def save @title = t 'user.new.title' @@ -314,37 +314,9 @@ class UserController < ApplicationController end ## - # activate a user, allowing them to log in - def activate - @this_user.update_attributes(:status => "active") - redirect_to :controller => 'user', :action => 'view', :display_name => params[:display_name] - end - - ## - # deactivate a user, preventing them from logging in - def deactivate - @this_user.update_attributes(:status => "pending") - redirect_to :controller => 'user', :action => 'view', :display_name => params[:display_name] - end - - ## - # confirm a user, overriding any suspension triggered by spam scoring - def confirm - @this_user.update_attributes(:status => "confirmed") - redirect_to :controller => 'user', :action => 'view', :display_name => params[:display_name] - end - - ## - # hide a user, marking them as logically deleted - def hide - @this_user.update_attributes(:status => "deleted") - redirect_to :controller => 'user', :action => 'view', :display_name => params[:display_name] - end - - ## - # unhide a user, clearing the logically deleted flag - def unhide - @this_user.update_attributes(:status => "active") + # sets a user's status + def set_status + @this_user.update_attributes(:status => params[:status]) redirect_to :controller => 'user', :action => 'view', :display_name => params[:display_name] end diff --git a/app/views/user/view.html.erb b/app/views/user/view.html.erb index b5890fca2..2aca75f53 100644 --- a/app/views/user/view.html.erb +++ b/app/views/user/view.html.erb @@ -60,17 +60,17 @@ <% if @user and @user.administrator? %>
<% if ["active", "confirmed"].include? @this_user.status %> - <%= link_to t('user.view.deactivate_user'), {:controller => 'user', :action => 'deactivate', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> | + <%= link_to t('user.view.deactivate_user'), {:controller => 'user', :action => 'set_status', :status => 'pending', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> | <% elsif ["pending"].include? @this_user.status %> - <%= link_to t('user.view.activate_user'), {:controller => 'user', :action => 'activate', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> | + <%= link_to t('user.view.activate_user'), {:controller => 'user', :action => 'set_status', :status => 'active', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> | <% end %> <% if ["active", "suspended"].include? @this_user.status %> - <%= link_to t('user.view.confirm_user'), {:controller => 'user', :action => 'confirm', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> | + <%= link_to t('user.view.confirm_user'), {:controller => 'user', :action => 'set_status', :status => 'confirmed', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> | <% end %> <% if ["pending", "active", "confirmed", "suspended"].include? @this_user.status %> - <%= link_to t('user.view.hide_user'), {:controller => 'user', :action => 'hide', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> | + <%= link_to t('user.view.hide_user'), {:controller => 'user', :action => 'set_status', :status => 'deleted', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> | <% else %> - <%= link_to t('user.view.unhide_user'), {:controller => 'user', :action => 'unhide', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> | + <%= link_to t('user.view.unhide_user'), {:controller => 'user', :action => 'set_status', :status => 'active', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> | <% end %> <%= link_to t('user.view.delete_user'), {:controller => 'user', :action => 'delete', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> <% end %> diff --git a/config/routes.rb b/config/routes.rb index 9a7231041..82f4e3a9f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -158,11 +158,7 @@ ActionController::Routing::Routes.draw do |map| map.connect '/user/:display_name/diary/:id/hide', :controller => 'diary_entry', :action => 'hide', :id => /\d+/ map.connect '/user/:display_name/diary/:id/hidecomment/:comment', :controller => 'diary_entry', :action => 'hidecomment', :id => /\d+/, :comment => /\d+/ map.connect '/user/:display_name/account', :controller => 'user', :action => 'account' - map.connect '/user/:display_name/activate', :controller => 'user', :action => 'activate' - map.connect '/user/:display_name/deactivate', :controller => 'user', :action => 'deactivate' - map.connect '/user/:display_name/confirm', :controller => 'user', :action => 'confirm' - map.connect '/user/:display_name/hide', :controller => 'user', :action => 'hide' - map.connect '/user/:display_name/unhide', :controller => 'user', :action => 'unhide' + map.connect '/user/:display_name/set_status', :controller => 'user', :action => 'set_status' map.connect '/user/:display_name/delete', :controller => 'user', :action => 'delete' map.connect '/diary/new', :controller => 'diary_entry', :action => 'new' map.connect '/diary', :controller => 'diary_entry', :action => 'list' -- 2.43.2