Class: UsersController
- Inherits:
-
ApplicationController
- Object
- ActionController::Base
- ApplicationController
- UsersController
- Defined in:
- app/controllers/users_controller.rb
Instance Method Summary collapse
- #change_auth_type ⇒ Object
- #change_password ⇒ Object
- #check_create_user_params ⇒ Object private
-
#create ⇒ Object
Example usage: curl -H ‘Accept: application/xml’ -H ‘Content-Type: application/xml’ -u admin:up2n0g00d -d ‘
’ http://our.tracks.host/users.username abc123 -
#destroy ⇒ Object
DELETE /users/id DELETE /users/id.xml.
- #get_new_user ⇒ Object private
-
#index ⇒ Object
GET /users GET /users.xml.
-
#new ⇒ Object
GET /users/new.
- #refresh_token ⇒ Object
-
#show ⇒ Object
GET /users/id GET /users/id.xml.
- #update_auth_type ⇒ Object
- #update_password ⇒ Object
- #user_params ⇒ Object private
Methods inherited from ApplicationController
#admin_login_required, #admin_or_self_login_required, #all_done_todos_for, #boolean_param, cas_enabled?, #cas_enabled?, #count_deferred_todos, #count_undone_todos, #count_undone_todos_phrase, #done_todos_for, #enable_mobile_content_negotiation, #for_autocomplete, #format_date, #format_dependencies_as_json_for_auto_complete, #handle_unverified_request, #init_data_for_sidebar, #init_hidden_todo_counts, #init_not_done_counts, #mobile?, #notify, #openid_enabled?, openid_enabled?, #parse_date_per_user_prefs, prefered_auth?, #prefered_auth?, #redirect_back_or_home, #render_failure, #sanitize, #set_group_view_by, #set_locale, #set_session_expiration, #set_time_zone, #set_zindex_counter, #todo_xml_params
Methods included from Common
Methods included from LoginSystem
#access_denied, #authorize?, #basic_auth_denied, #current_user, #get_basic_auth_data, #get_current_user, #logged_in?, #login_from_cookie, #login_optional, #login_or_feed_token_required, #login_required, #logout_user, #prefs, #protect?, #redirect_back_or_default, #redirect_to_login, #set_current_user, #store_location
Instance Method Details
#change_auth_type ⇒ Object
185 186 187 |
# File 'app/controllers/users_controller.rb', line 185 def change_auth_type @page_title = t('users.change_auth_type_title') end |
#change_password ⇒ Object
171 172 173 |
# File 'app/controllers/users_controller.rb', line 171 def change_password @page_title = t('users.change_password_title') end |
#check_create_user_params ⇒ Object (private)
223 224 225 226 227 228 229 230 |
# File 'app/controllers/users_controller.rb', line 223 def check_create_user_params return false unless params.key?(:user) return false unless params[:user].key?(:login) return false if params[:user][:login].empty? return false unless params[:user].key?(:password) return false if params[:user][:password].empty? return true end |
#create ⇒ Object
Example usage: curl -H ‘Accept: application/xml’ -H ‘Content-Type:
application/xml’
-u admin:up2n0g00d
-d ‘
POST /users POST /users.xml
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'app/controllers/users_controller.rb', line 68 def create if params['exception'] render_failure "Expected post format is valid xml like so: <user><login>username</login><password>abc123</password></user>." return end respond_to do |format| format.html do unless User.no_users_yet? || (@user && @user.is_admin?) || SITE_CONFIG['open_signups'] @page_title = t('users.no_signups_title') @admin_email = SITE_CONFIG['admin_email'] render :action => "nosignup", :layout => "login" return end unless params['approve_tos'] == 'on' || SITE_CONFIG['tos_link'].blank? notify :error, t('users.tos_error') redirect_to signup_path return end user = User.new(user_params) unless user.valid? notify :error, t('users.create_error') redirect_to signup_path return end signup_by_admin = true if @user && @user.is_admin? first_user_signing_up = User.no_users_yet? user.is_admin = true if first_user_signing_up if user.save @user = User.authenticate(user.login, params['user']['password']) @user.create_preference(:locale => I18n.locale) @user.save session['user_id'] = @user.id unless signup_by_admin notify :notice, t('users.signup_successful', :username => @user.login) redirect_back_or_home end return end format.xml do unless current_user && current_user.is_admin render :body => t('errors.user_unauthorized'), :status => 401 return end unless check_create_user_params render_failure "Expected post format is valid xml like so: <user><login>username</login><password>abc123</password></user>.", 400 return end unless user_params['approve_tos'] == 'on' || SITE_CONFIG['tos_link'].blank? render_failure "You have to accept the terms of service to sign up!" return end user = User.new(user_params) user.password_confirmation = user_params[:password] saved = user.save unless user.new_record? render :body => t('users.user_created'), :status => 200 else render_failure user.errors..to_xml(root: "errors", skip_types: true), 409 end return end end end |
#destroy ⇒ Object
DELETE /users/id DELETE /users/id.xml
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
# File 'app/controllers/users_controller.rb', line 138 def destroy @deleted_user = User.find(params[:id]) # Remove the user @saved = @deleted_user.destroy # Log out the user if they've deleted their own user and it succeeded. if @saved && current_user == @deleted_user logout_user end respond_to do |format| format.html do if @saved notify :notice, t('users.successfully_deleted_user', :username => @deleted_user.login) else notify :error, t('users.failed_to_delete_user', :username => @deleted_user.login) end if current_user == @deleted_user redirect_to login else redirect_to users_url end end format.js do @total_users = User.count end format.xml do head :ok end end end |
#get_new_user ⇒ Object (private)
213 214 215 216 217 218 219 220 221 |
# File 'app/controllers/users_controller.rb', line 213 def get_new_user if session['new_user'] user = session['new_user'] session['new_user'] = nil else user = User.new end user end |
#index ⇒ Object
GET /users GET /users.xml
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'app/controllers/users_controller.rb', line 8 def index respond_to do |format| order_by = 'login' if params[:order] && User.column_names.include?(params[:order]) order_by = params[:order] end format.html do @page_title = t('users.manage_users_title') @users = User.order(order_by + ' ASC').paginate :page => params[:page] @total_users = User.count # When we call users/signup from the admin page we store the URL so that # we get returned here when signup is successful store_location end format.xml do @users = User.order(order_by) render :xml => @users.to_xml(:root => :users, :except => [:password]) end end end |
#new ⇒ Object
GET /users/new
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'app/controllers/users_controller.rb', line 36 def new @auth_types = [] unless session[:cas_user] Tracks::Config.auth_schemes.each { |auth| @auth_types << [auth, auth] } else @auth_types << ['cas', 'cas'] end if User.no_users_yet? @page_title = t('users.first_user_title') @heading = t('users.first_user_heading') @user = get_new_user elsif (@user && @user.is_admin?) || SITE_CONFIG['open_signups'] @page_title = t('users.new_user_title') @heading = t('users.new_user_heading') @user = get_new_user else # all other situations (i.e. a non-admin is logged in, or no one is logged in, but we have some users) @page_title = t('users.no_signups_title') @admin_email = SITE_CONFIG['admin_email'] render :action => "nosignup", :layout => "login" return end render :layout => "login" end |
#refresh_token ⇒ Object
200 201 202 203 204 205 |
# File 'app/controllers/users_controller.rb', line 200 def refresh_token current_user.generate_token current_user.save! notify :notice, t('users.new_token_generated') redirect_to preferences_path end |
#show ⇒ Object
GET /users/id GET /users/id.xml
30 31 32 33 |
# File 'app/controllers/users_controller.rb', line 30 def show @user = User.find(params[:id]) render :xml => @user.to_xml(:root => :user, :except => [:password]) end |
#update_auth_type ⇒ Object
189 190 191 192 193 194 195 196 197 198 |
# File 'app/controllers/users_controller.rb', line 189 def update_auth_type current_user.auth_type = user_params[:auth_type] if current_user.save notify :notice, t('users.auth_type_updated') redirect_to preferences_path else notify :warning, t('users.auth_type_update_error', :error_messages => current_user.errors..join(', ')) redirect_to change_auth_type_user_path(current_user) end end |
#update_password ⇒ Object
175 176 177 178 179 180 181 182 183 |
# File 'app/controllers/users_controller.rb', line 175 def update_password # is used for focing password change after sha->bcrypt upgrade current_user.change_password(user_params[:password], user_params[:password_confirmation]) notify :notice, t('users.password_updated') redirect_to preferences_path rescue Exception => error notify :error, error. redirect_to change_password_user_path(current_user) end |
#user_params ⇒ Object (private)
209 210 211 |
# File 'app/controllers/users_controller.rb', line 209 def user_params params.require(:user).permit(:login, :first_name, :last_name, :email, :password_confirmation, :password, :auth_type, :open_id_url) end |