##// END OF EJS Templates
Introduce virtual MenuNodes (#15880)....
Introduce virtual MenuNodes (#15880). They are characterized by having a blank url. they will only be rendered if the user is authorized to see at least one of its children. they render as links which do nothing when clicked. Patch by Jan Schulz-Hofen. git-svn-id: http://svn.redmine.org/redmine/trunk@15501 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r14966:66b9add002ab
r15119:53710d80fc88
Show More
users_controller.rb
190 lines | 6.1 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
AccountController#show (/account/show/:id) moved to UsersController#show (/users/:id)....
r2874 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 #
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/users_controller.rb....
r6747 #
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/users_controller.rb....
r6747 #
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class UsersController < ApplicationController
Jean-Philippe Lang
Adds an admin layout that displays the admin menu in the sidebar....
r3062 layout 'admin'
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/users_controller.rb....
r6747
Jean-Philippe Lang
AccountController#show (/account/show/:id) moved to UsersController#show (/users/:id)....
r2874 before_filter :require_admin, :except => :show
Jean-Philippe Lang
Adds a single controller for users and groups memberships and support for adding multiple projects at once (#11702)....
r13116 before_filter :find_user, :only => [:show, :edit, :update, :destroy]
Jean-Philippe Lang
Separation of RSS/API auth actions....
r6077 accept_api_auth :index, :show, :create, :update, :destroy
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
helper :sort
include SortHelper
helper :custom_fields
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/users_controller.rb....
r6747 include CustomFieldsHelper
Jean-Philippe Lang
Adds a single controller for users and groups memberships and support for adding multiple projects at once (#11702)....
r13116 helper :principal_memberships
Jean-Philippe Lang
v0.2.0...
r5
Jean-Philippe Lang
Require password re-entry for sensitive actions (#19851)....
r13951 require_sudo_mode :create, :update, :destroy
Jean-Philippe Lang
v0.2.0...
r5 def index
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 sort_init 'login', 'asc'
Jean-Philippe Lang
Don't let users be sorted by email (#19161)....
r13758 sort_update %w(login firstname lastname admin created_on last_login_on)
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/users_controller.rb....
r6747
Jean-Philippe Lang
Restores object count and adds offset/limit attributes to API responses for paginated collections (#6140)....
r4375 case params[:format]
when 'xml', 'json'
@offset, @limit = api_offset_and_limit
else
@limit = per_page_option
end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/users_controller.rb....
r6747
Jean-Philippe Lang
Adds named scopes for users index....
r7961 @status = params[:status] || 1
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/users_controller.rb....
r6747
Jean-Philippe Lang
Add support for multiple email addresses per user (#4244)....
r13504 scope = User.logged.status(@status).preload(:email_address)
Jean-Philippe Lang
Adds named scopes for users index....
r7961 scope = scope.like(params[:name]) if params[:name].present?
scope = scope.in_group(params[:group_id]) if params[:group_id].present?
Jean-Philippe Lang
Adds the ability to search for a user on the administration users list....
r1943
Jean-Philippe Lang
Adds named scopes for users index....
r7961 @user_count = scope.count
Jean-Philippe Lang
Deprecation warnings (#12774)....
r10909 @user_pages = Paginator.new @user_count, @limit, params['page']
@offset ||= @user_pages.offset
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 @users = scope.order(sort_clause).limit(@limit).offset(@offset).to_a
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
Jean-Philippe Lang
Indentation....
r5034 respond_to do |format|
format.html {
Jean-Philippe Lang
Don't show non member and anonymous groups in filter....
r14966 @groups = Group.givable.sort
Jean-Philippe Lang
Adds a Group filter on the admin users list (#7893)....
r5030 render :layout => !request.xhr?
}
Jean-Philippe Lang
Adds a pseudo format to api template names and overrides ActionController#default_template so that api templates are chosen automatically....
r4352 format.api
Toshi MARUYAMA
remove trailing tabs from app/controllers/users_controller.rb...
r11189 end
Jean-Philippe Lang
v0.2.0...
r5 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/users_controller.rb....
r6747
Jean-Philippe Lang
AccountController#show (/account/show/:id) moved to UsersController#show (/users/:id)....
r2874 def show
Jean-Philippe Lang
Adds a role setting for controlling visibility of users: all or members of visible projects (#11724)....
r13202 unless @user.visible?
render_404
return
end
Jean-Baptiste Barth
Show projects depending on their visibility in user's profile. #6100...
r3821 # show projects based on current user visibility
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 @memberships = @user.memberships.where(Project.visible_condition(User.current)).to_a
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/users_controller.rb....
r6747
Jean-Philippe Lang
Add responders to UsersController....
r4337 respond_to do |format|
Jean-Philippe Lang
Don't load user activity for API responses (#18128)....
r13205 format.html {
events = Redmine::Activity::Fetcher.new(User.current, :author => @user).events(nil, nil, :limit => 10)
@events_by_day = events.group_by(&:event_date)
render :layout => 'base'
}
Jean-Philippe Lang
Adds a pseudo format to api template names and overrides ActionController#default_template so that api templates are chosen automatically....
r4352 format.api
Jean-Philippe Lang
Add responders to UsersController....
r4337 end
Jean-Philippe Lang
AccountController#show (/account/show/:id) moved to UsersController#show (/users/:id)....
r2874 end
Jean-Philippe Lang
Initial commit...
r2
Eric Davis
Refactor: rename UsersController#add to #new...
r4115 def new
Jean-Philippe Lang
Moves mail_notification param to user hash param so that it can be set using the User API....
r4382 @user = User.new(:language => Setting.default_language, :mail_notification => Setting.default_notification_option)
Jean-Philippe Lang
Option to generate a random password on user creation/update....
r11226 @user.safe_attributes = params[:user]
Jean-Philippe Lang
Replaces find(:all) calls....
r10687 @auth_sources = AuthSource.all
Eric Davis
Refactor: split UsersController#add into #add and #create...
r4101 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/users_controller.rb....
r6747
Eric Davis
Refactor: split UsersController#add into #add and #create...
r4101 def create
Jean-Philippe Lang
Moves mail_notification param to user hash param so that it can be set using the User API....
r4382 @user = User.new(:language => Setting.default_language, :mail_notification => Setting.default_notification_option)
Jean-Philippe Lang
Declare safe attributes for User and Projects models....
r4378 @user.safe_attributes = params[:user]
Eric Davis
Refactor: split UsersController#add into #add and #create...
r4101 @user.admin = params[:user][:admin] || false
@user.login = params[:user][:login]
Jean-Philippe Lang
Moves password param to user hash param so that it can be set using the User API....
r4379 @user.password, @user.password_confirmation = params[:user][:password], params[:user][:password_confirmation] unless @user.auth_source_id
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 @user.pref.attributes = params[:pref] if params[:pref]
Eric Davis
Allow admins to edit user's email notifications and preferences. #3503...
r4109
Eric Davis
Refactor: split UsersController#add into #add and #create...
r4101 if @user.save
Jean-Philippe Lang
Option to generate a random password on user creation/update....
r11226 Mailer.account_information(@user, @user.password).deliver if params[:send_information]
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/users_controller.rb....
r6747
Jean-Philippe Lang
Add responders to UsersController....
r4337 respond_to do |format|
format.html {
Jean-Philippe Lang
More specific flash message when creating a user account....
r9715 flash[:notice] = l(:notice_user_successful_create, :id => view_context.link_to(@user.login, user_path(@user)))
Jean-Philippe Lang
Use named routes in controllers....
r10754 if params[:continue]
Jean-Philippe Lang
Option to generate a random password on user creation/update....
r11226 attrs = params[:user].slice(:generate_password)
redirect_to new_user_path(:user => attrs)
Jean-Philippe Lang
Use named routes in controllers....
r10754 else
redirect_to edit_user_path(@user)
end
Jean-Philippe Lang
Add responders to UsersController....
r4337 }
Jean-Philippe Lang
Adds a pseudo format to api template names and overrides ActionController#default_template so that api templates are chosen automatically....
r4352 format.api { render :action => 'show', :status => :created, :location => user_url(@user) }
Jean-Philippe Lang
Add responders to UsersController....
r4337 end
Jean-Philippe Lang
v0.2.0...
r5 else
Jean-Philippe Lang
Replaces find(:all) calls....
r10687 @auth_sources = AuthSource.all
Jean-Philippe Lang
Moves password param to user hash param so that it can be set using the User API....
r4379 # Clear password input
@user.password = @user.password_confirmation = nil
Eric Davis
Allow admins to edit user's email notifications and preferences. #3503...
r4109
Jean-Philippe Lang
Add responders to UsersController....
r4337 respond_to do |format|
format.html { render :action => 'new' }
Jean-Philippe Lang
Adds a reusable method to render API response on validation failure....
r4341 format.api { render_validation_errors(@user) }
Jean-Philippe Lang
Add responders to UsersController....
r4337 end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Jean-Philippe Lang
v0.2.0...
r5 end
Jean-Philippe Lang
Initial commit...
r2
Jean-Philippe Lang
v0.2.0...
r5 def edit
Jean-Philippe Lang
Replaces find(:all) calls....
r10687 @auth_sources = AuthSource.all
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 @membership ||= Member.new
Eric Davis
Refactor: split UsersController#edit into #edit and #update...
r4116 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/users_controller.rb....
r6747
Eric Davis
Refactor: split UsersController#edit into #edit and #update...
r4116 def update
@user.admin = params[:user][:admin] if params[:user][:admin]
@user.login = params[:user][:login] if params[:user][:login]
Jean-Philippe Lang
Moves password param to user hash param so that it can be set using the User API....
r4379 if params[:user][:password].present? && (@user.auth_source_id.nil? || params[:user][:auth_source_id].blank?)
@user.password, @user.password_confirmation = params[:user][:password], params[:user][:password_confirmation]
Eric Davis
Refactor: split UsersController#edit into #edit and #update...
r4116 end
Jean-Philippe Lang
Declare safe attributes for User and Projects models....
r4378 @user.safe_attributes = params[:user]
Eric Davis
Refactor: split UsersController#edit into #edit and #update...
r4116 # Was the account actived ? (do it before User#save clears the change)
was_activated = (@user.status_change == [User::STATUS_REGISTERED, User::STATUS_ACTIVE])
# TODO: Similar to My#account
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 @user.pref.attributes = params[:pref] if params[:pref]
Eric Davis
Refactor: split UsersController#edit into #edit and #update...
r4116
if @user.save
@user.pref.save
if was_activated
Toshi MARUYAMA
replace Mailer deliver syntax to Rails3 style...
r9455 Mailer.account_activated(@user).deliver
Jean-Philippe Lang
Prevent admins from sending themselves their own password (#21436)....
r14584 elsif @user.active? && params[:send_information] && @user.password.present? && @user.auth_source_id.nil? && @user != User.current
Jean-Philippe Lang
Option to generate a random password on user creation/update....
r11226 Mailer.account_information(@user, @user.password).deliver
Eric Davis
Refactor: split UsersController#edit into #edit and #update...
r4116 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/users_controller.rb....
r6747
Jean-Philippe Lang
Add responders to UsersController....
r4337 respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_update)
Jean-Philippe Lang
Code cleanup....
r9229 redirect_to_referer_or edit_user_path(@user)
Jean-Philippe Lang
Add responders to UsersController....
r4337 }
Jean-Philippe Lang
Fixed that 200 API responses have a body containing one space (#11388)....
r9792 format.api { render_api_ok }
Jean-Philippe Lang
Add responders to UsersController....
r4337 end
Eric Davis
Refactor: split UsersController#edit into #edit and #update...
r4116 else
Jean-Philippe Lang
Replaces find(:all) calls....
r10687 @auth_sources = AuthSource.all
Eric Davis
Refactor: split UsersController#edit into #edit and #update...
r4116 @membership ||= Member.new
Jean-Philippe Lang
Moves password param to user hash param so that it can be set using the User API....
r4379 # Clear password input
@user.password = @user.password_confirmation = nil
Eric Davis
Refactor: split UsersController#edit into #edit and #update...
r4116
Jean-Philippe Lang
Add responders to UsersController....
r4337 respond_to do |format|
format.html { render :action => :edit }
Jean-Philippe Lang
Adds a reusable method to render API response on validation failure....
r4341 format.api { render_validation_errors(@user) }
Jean-Philippe Lang
Add responders to UsersController....
r4337 end
Eric Davis
Refactor: split UsersController#edit into #edit and #update...
r4116 end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Eric Davis
Refactor: split UsersController#edit into #edit and #update...
r4116
Jean-Philippe Lang
Enable ability for administrators to delete users (#7296)....
r4609 def destroy
@user.destroy
respond_to do |format|
Jean-Philippe Lang
Use named routes in controllers....
r10754 format.html { redirect_back_or_default(users_path) }
Jean-Philippe Lang
Fixed that 200 API responses have a body containing one space (#11388)....
r9792 format.api { render_api_ok }
Jean-Philippe Lang
Enable ability for administrators to delete users (#7296)....
r4609 end
end
Jean-Philippe Lang
Adds support for requesting information about current user using /users/current (#7141)....
r4430 private
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/users_controller.rb....
r6747
Jean-Philippe Lang
Adds support for requesting information about current user using /users/current (#7141)....
r4430 def find_user
if params[:id] == 'current'
require_login || return
@user = User.current
else
@user = User.find(params[:id])
end
rescue ActiveRecord::RecordNotFound
render_404
end
Jean-Philippe Lang
Initial commit...
r2 end