##// END OF EJS Templates
Adds support for requesting information about current user using /users/current (#7141)....
Jean-Philippe Lang -
r4430:599bc450730b
parent child
Show More
@@ -19,6 +19,7 class UsersController < ApplicationController
19 layout 'admin'
19 layout 'admin'
20
20
21 before_filter :require_admin, :except => :show
21 before_filter :require_admin, :except => :show
22 before_filter :find_user, :only => [:show, :edit, :update, :edit_membership, :destroy_membership]
22 accept_key_auth :index, :show, :create, :update
23 accept_key_auth :index, :show, :create, :update
23
24
24 helper :sort
25 helper :sort
@@ -61,8 +62,6 class UsersController < ApplicationController
61 end
62 end
62
63
63 def show
64 def show
64 @user = User.find(params[:id])
65
66 # show projects based on current user visibility
65 # show projects based on current user visibility
67 @memberships = @user.memberships.all(:conditions => Project.visible_by(User.current))
66 @memberships = @user.memberships.all(:conditions => Project.visible_by(User.current))
68
67
@@ -80,8 +79,6 class UsersController < ApplicationController
80 format.html { render :layout => 'base' }
79 format.html { render :layout => 'base' }
81 format.api
80 format.api
82 end
81 end
83 rescue ActiveRecord::RecordNotFound
84 render_404
85 end
82 end
86
83
87 def new
84 def new
@@ -130,16 +127,12 class UsersController < ApplicationController
130 end
127 end
131
128
132 def edit
129 def edit
133 @user = User.find(params[:id])
134
135 @auth_sources = AuthSource.find(:all)
130 @auth_sources = AuthSource.find(:all)
136 @membership ||= Member.new
131 @membership ||= Member.new
137 end
132 end
138
133
139 verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed }
134 verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed }
140 def update
135 def update
141 @user = User.find(params[:id])
142
143 @user.admin = params[:user][:admin] if params[:user][:admin]
136 @user.admin = params[:user][:admin] if params[:user][:admin]
144 @user.login = params[:user][:login] if params[:user][:login]
137 @user.login = params[:user][:login] if params[:user][:login]
145 if params[:user][:password].present? && (@user.auth_source_id.nil? || params[:user][:auth_source_id].blank?)
138 if params[:user][:password].present? && (@user.auth_source_id.nil? || params[:user][:auth_source_id].blank?)
@@ -185,7 +178,6 class UsersController < ApplicationController
185 end
178 end
186
179
187 def edit_membership
180 def edit_membership
188 @user = User.find(params[:id])
189 @membership = Member.edit_membership(params[:membership_id], params[:membership], @user)
181 @membership = Member.edit_membership(params[:membership_id], params[:membership], @user)
190 @membership.save if request.post?
182 @membership.save if request.post?
191 respond_to do |format|
183 respond_to do |format|
@@ -208,7 +200,6 class UsersController < ApplicationController
208 end
200 end
209
201
210 def destroy_membership
202 def destroy_membership
211 @user = User.find(params[:id])
212 @membership = Member.find(params[:membership_id])
203 @membership = Member.find(params[:membership_id])
213 if request.post? && @membership.deletable?
204 if request.post? && @membership.deletable?
214 @membership.destroy
205 @membership.destroy
@@ -218,4 +209,17 class UsersController < ApplicationController
218 format.js { render(:update) {|page| page.replace_html "tab-content-memberships", :partial => 'users/memberships'} }
209 format.js { render(:update) {|page| page.replace_html "tab-content-memberships", :partial => 'users/memberships'} }
219 end
210 end
220 end
211 end
212
213 private
214
215 def find_user
216 if params[:id] == 'current'
217 require_login || return
218 @user = User.current
219 else
220 @user = User.find(params[:id])
221 end
222 rescue ActiveRecord::RecordNotFound
223 render_404
224 end
221 end
225 end
@@ -120,6 +120,20 class UsersControllerTest < ActionController::TestCase
120 assert project_ids.include?(2) #private project admin can see
120 assert project_ids.include?(2) #private project admin can see
121 end
121 end
122
122
123 def test_show_current_should_require_authentication
124 @request.session[:user_id] = nil
125 get :show, :id => 'current'
126 assert_response 302
127 end
128
129 def test_show_current
130 @request.session[:user_id] = 2
131 get :show, :id => 'current'
132 assert_response :success
133 assert_template 'show'
134 assert_equal User.find(2), assigns(:user)
135 end
136
123 def test_new
137 def test_new
124 get :new
138 get :new
125
139
@@ -50,6 +50,23 class ApiTest::UsersTest < ActionController::IntegrationTest
50 end
50 end
51 end
51 end
52 end
52 end
53
54 context "GET /users/current" do
55 context ".xml" do
56 should "require authentication" do
57 get '/users/current.xml'
58
59 assert_response 401
60 end
61
62 should "return current user" do
63 get '/users/current.xml', {}, :authorization => credentials('jsmith')
64
65 assert_tag :tag => 'user',
66 :child => {:tag => 'id', :content => '2'}
67 end
68 end
69 end
53
70
54 context "POST /users" do
71 context "POST /users" do
55 context "with valid parameters" do
72 context "with valid parameters" do
@@ -286,6 +286,7 class RoutingTest < ActionController::IntegrationTest
286 context "users" do
286 context "users" do
287 should_route :get, "/users", :controller => 'users', :action => 'index'
287 should_route :get, "/users", :controller => 'users', :action => 'index'
288 should_route :get, "/users/44", :controller => 'users', :action => 'show', :id => '44'
288 should_route :get, "/users/44", :controller => 'users', :action => 'show', :id => '44'
289 should_route :get, "/users/current", :controller => 'users', :action => 'show', :id => 'current'
289 should_route :get, "/users/new", :controller => 'users', :action => 'new'
290 should_route :get, "/users/new", :controller => 'users', :action => 'new'
290 should_route :get, "/users/444/edit", :controller => 'users', :action => 'edit', :id => '444'
291 should_route :get, "/users/444/edit", :controller => 'users', :action => 'edit', :id => '444'
291 should_route :get, "/users/222/edit/membership", :controller => 'users', :action => 'edit', :id => '222', :tab => 'membership'
292 should_route :get, "/users/222/edit/membership", :controller => 'users', :action => 'edit', :id => '222', :tab => 'membership'
General Comments 0
You need to be logged in to leave comments. Login now