##// END OF EJS Templates
When copying issues, let the status be changed to default or left unchanged....
When copying issues, let the status be changed to default or left unchanged. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9404 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r9229:18270ee5879b
r9270:09375960d69d
Show More
users_controller.rb
227 lines | 7.6 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
Adds a Group filter on the admin users list (#7893)....
r5030 # Copyright (C) 2006-2011 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
Enable ability for administrators to delete users (#7296)....
r4609 before_filter :find_user, :only => [:show, :edit, :update, :destroy, :edit_membership, :destroy_membership]
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
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
Validates sort_key and sort_order params (#2378)....
r2169 sort_update %w(login firstname lastname mail 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
Adds named scopes for users index....
r7961 scope = User.logged.status(@status)
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
Restores object count and adds offset/limit attributes to API responses for paginated collections (#6140)....
r4375 @user_pages = Paginator.new self, @user_count, @limit, params['page']
@offset ||= @user_pages.current.offset
Jean-Philippe Lang
Adds a Group filter on the admin users list (#7893)....
r5030 @users = scope.find :all,
Jean-Philippe Lang
Restores object count and adds offset/limit attributes to API responses for paginated collections (#6140)....
r4375 :order => sort_clause,
:limit => @limit,
:offset => @offset
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
Adds a Group filter on the admin users list (#7893)....
r5030 @groups = Group.all.sort
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
Jean-Philippe Lang
Indentation....
r5034 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-Baptiste Barth
Show projects depending on their visibility in user's profile. #6100...
r3821 # show projects based on current user visibility
Jean-Philippe Lang
Removed calls to deprecated Project.visible_by method....
r5208 @memberships = @user.memberships.all(:conditions => Project.visible_condition(User.current))
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 events = Redmine::Activity::Fetcher.new(User.current, :author => @user).events(nil, nil, :limit => 10)
@events_by_day = events.group_by(&:event_date)
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/users_controller.rb....
r6747
Jean-Philippe Lang
Let administrators see locked user profiles....
r3379 unless User.current.admin?
if !@user.active? || (@user != User.current && @memberships.empty? && events.empty?)
render_404
return
end
Jean-Philippe Lang
AccountController#show (/account/show/:id) moved to UsersController#show (/users/:id)....
r2874 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 { 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)
Eric Davis
Refactor: split UsersController#add into #add and #create...
r4101 @auth_sources = AuthSource.find(:all)
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
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
Rails 3.1 compatibility....
r8947 @user.pref.attributes = params[:pref]
@user.pref[:no_self_notified] = (params[:no_self_notified] == '1')
Eric Davis
Allow admins to edit user's email notifications and preferences. #3503...
r4109 @user.pref.save
Jean-Philippe Lang
Moves mail_notification param to user hash param so that it can be set using the User API....
r4382 @user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : [])
Eric Davis
Allow admins to edit user's email notifications and preferences. #3503...
r4109
Jean-Philippe Lang
Fixes password sending when creating user....
r4386 Mailer.deliver_account_information(@user, params[:user][:password]) 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 {
flash[:notice] = l(:notice_successful_create)
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/users_controller.rb....
r6747 redirect_to(params[:continue] ?
{:controller => 'users', :action => 'new'} :
Jean-Philippe Lang
Add responders to UsersController....
r4337 {:controller => 'users', :action => 'edit', :id => @user}
)
}
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
Eric Davis
Refactor: split UsersController#add into #add and #create...
r4101 @auth_sources = AuthSource.find(: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
added svn:eol-style native property on /app files...
r330 @auth_sources = AuthSource.find(:all)
@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
@user.pref.attributes = params[:pref]
@user.pref[:no_self_notified] = (params[:no_self_notified] == '1')
if @user.save
@user.pref.save
Jean-Philippe Lang
Moves mail_notification param to user hash param so that it can be set using the User API....
r4382 @user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : [])
Eric Davis
Refactor: split UsersController#edit into #edit and #update...
r4116
if was_activated
Mailer.deliver_account_activated(@user)
Jean-Philippe Lang
Moves password param to user hash param so that it can be set using the User API....
r4379 elsif @user.active? && params[:send_information] && !params[:user][:password].blank? && @user.auth_source_id.nil?
Mailer.deliver_account_information(@user, params[:user][:password])
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
Dry Users API responders....
r4340 format.api { head :ok }
Jean-Philippe Lang
Add responders to UsersController....
r4337 end
Eric Davis
Refactor: split UsersController#edit into #edit and #update...
r4116 else
@auth_sources = AuthSource.find(:all)
@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|
format.html { redirect_to(users_url) }
format.api { head :ok }
end
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 def edit_membership
Eric Davis
Refactor: Extract method to the Member model...
r3487 @membership = Member.edit_membership(params[:membership_id], params[:membership], @user)
Jean-Philippe Lang
REST urls for user memberships....
r8026 @membership.save
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 respond_to do |format|
Jean-Baptiste Barth
Added a warning when a new user or group membership is invalid. #3834...
r3820 if @membership.valid?
format.html { redirect_to :controller => 'users', :action => 'edit', :id => @user, :tab => 'memberships' }
format.js {
render(:update) {|page|
page.replace_html "tab-content-memberships", :partial => 'users/memberships'
page.visual_effect(:highlight, "member-#{@membership.id}")
}
}
else
format.js {
render(:update) {|page|
page.alert(l(:notice_failed_to_save_members, :errors => @membership.errors.full_messages.join(', ')))
}
}
end
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
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 def destroy_membership
Jean-Philippe Lang
User groups branch merged....
r2755 @membership = Member.find(params[:membership_id])
Jean-Philippe Lang
REST urls for user memberships....
r8026 if @membership.deletable?
Jean-Philippe Lang
User groups branch merged....
r2755 @membership.destroy
end
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 respond_to do |format|
format.html { redirect_to :controller => 'users', :action => 'edit', :id => @user, :tab => 'memberships' }
format.js { render(:update) {|page| page.replace_html "tab-content-memberships", :partial => 'users/memberships'} }
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
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