Commit 71e89df5e061e4c3a372977e7e6fb25f42791414
Exists in
master
and in
4 other branches
Merge pull request #2772 from zzet/bugfix/path_and_page-project-member-access-#2745
fix edit project members access link and page fixes refs #2745
Showing
10 changed files
with
42 additions
and
40 deletions
Show diff stats
app/controllers/admin/projects/application_controller.rb
app/controllers/admin/projects/members_controller.rb
... | ... | @@ -22,7 +22,7 @@ class Admin::Projects::MembersController < Admin::Projects::ApplicationControlle |
22 | 22 | private |
23 | 23 | |
24 | 24 | def team_member |
25 | - @member ||= project.users.find(params[:id]) | |
25 | + @member ||= project.users.find_by_username(params[:id]) | |
26 | 26 | end |
27 | 27 | |
28 | 28 | def team_member_relation | ... | ... |
app/controllers/admin/teams/members_controller.rb
app/controllers/admin/users_controller.rb
... | ... | @@ -7,25 +7,21 @@ class Admin::UsersController < Admin::ApplicationController |
7 | 7 | end |
8 | 8 | |
9 | 9 | def show |
10 | - @admin_user = User.find(params[:id]) | |
11 | - | |
12 | - @projects = if @admin_user.authorized_projects.empty? | |
10 | + projects = if admin_user.authorized_projects.empty? | |
13 | 11 | Project |
14 | 12 | else |
15 | - Project.without_user(@admin_user) | |
13 | + Project.without_user(admin_user) | |
16 | 14 | end.all |
17 | 15 | end |
18 | 16 | |
19 | 17 | def team_update |
20 | - @admin_user = User.find(params[:id]) | |
21 | - | |
22 | 18 | UsersProject.add_users_into_projects( |
23 | 19 | params[:project_ids], |
24 | - [@admin_user.id], | |
20 | + [admin_user.id], | |
25 | 21 | params[:project_access] |
26 | 22 | ) |
27 | 23 | |
28 | - redirect_to [:admin, @admin_user], notice: 'Teams were successfully updated.' | |
24 | + redirect_to [:admin, admin_user], notice: 'Teams were successfully updated.' | |
29 | 25 | end |
30 | 26 | |
31 | 27 | |
... | ... | @@ -34,13 +30,11 @@ class Admin::UsersController < Admin::ApplicationController |
34 | 30 | end |
35 | 31 | |
36 | 32 | def edit |
37 | - @admin_user = User.find(params[:id]) | |
33 | + admin_user | |
38 | 34 | end |
39 | 35 | |
40 | 36 | def block |
41 | - @admin_user = User.find(params[:id]) | |
42 | - | |
43 | - if @admin_user.block | |
37 | + if admin_user.block | |
44 | 38 | redirect_to :back, alert: "Successfully blocked" |
45 | 39 | else |
46 | 40 | redirect_to :back, alert: "Error occured. User was not blocked" |
... | ... | @@ -48,9 +42,7 @@ class Admin::UsersController < Admin::ApplicationController |
48 | 42 | end |
49 | 43 | |
50 | 44 | def unblock |
51 | - @admin_user = User.find(params[:id]) | |
52 | - | |
53 | - if @admin_user.update_attribute(:blocked, false) | |
45 | + if admin_user.update_attribute(:blocked, false) | |
54 | 46 | redirect_to :back, alert: "Successfully unblocked" |
55 | 47 | else |
56 | 48 | redirect_to :back, alert: "Error occured. User was not unblocked" |
... | ... | @@ -82,30 +74,34 @@ class Admin::UsersController < Admin::ApplicationController |
82 | 74 | params[:user].delete(:password_confirmation) |
83 | 75 | end |
84 | 76 | |
85 | - @admin_user = User.find(params[:id]) | |
86 | - @admin_user.admin = (admin && admin.to_i > 0) | |
77 | + admin_user.admin = (admin && admin.to_i > 0) | |
87 | 78 | |
88 | 79 | respond_to do |format| |
89 | - if @admin_user.update_attributes(params[:user], as: :admin) | |
90 | - format.html { redirect_to [:admin, @admin_user], notice: 'User was successfully updated.' } | |
80 | + if admin_user.update_attributes(params[:user], as: :admin) | |
81 | + format.html { redirect_to [:admin, admin_user], notice: 'User was successfully updated.' } | |
91 | 82 | format.json { head :ok } |
92 | 83 | else |
93 | 84 | format.html { render action: "edit" } |
94 | - format.json { render json: @admin_user.errors, status: :unprocessable_entity } | |
85 | + format.json { render json: admin_user.errors, status: :unprocessable_entity } | |
95 | 86 | end |
96 | 87 | end |
97 | 88 | end |
98 | 89 | |
99 | 90 | def destroy |
100 | - @admin_user = User.find(params[:id]) | |
101 | - if @admin_user.personal_projects.count > 0 | |
91 | + if admin_user.personal_projects.count > 0 | |
102 | 92 | redirect_to admin_users_path, alert: "User is a project owner and can't be removed." and return |
103 | 93 | end |
104 | - @admin_user.destroy | |
94 | + admin_user.destroy | |
105 | 95 | |
106 | 96 | respond_to do |format| |
107 | - format.html { redirect_to admin_users_url } | |
97 | + format.html { redirect_to admin_users_path } | |
108 | 98 | format.json { head :ok } |
109 | 99 | end |
110 | 100 | end |
101 | + | |
102 | + protected | |
103 | + | |
104 | + def admin_user | |
105 | + @admin_user ||= User.find_by_username(params[:id]) | |
106 | + end | |
111 | 107 | end | ... | ... |
app/controllers/team_members_controller.rb
... | ... | @@ -39,7 +39,7 @@ class TeamMembersController < ProjectResourceController |
39 | 39 | end |
40 | 40 | |
41 | 41 | def destroy |
42 | - @user_project_relation = project.users_projects.find_by_user_id(params[:id]) | |
42 | + @user_project_relation = project.users_projects.find_by_user_id(member) | |
43 | 43 | @user_project_relation.destroy |
44 | 44 | |
45 | 45 | respond_to do |format| |
... | ... | @@ -59,6 +59,6 @@ class TeamMembersController < ProjectResourceController |
59 | 59 | protected |
60 | 60 | |
61 | 61 | def member |
62 | - @member ||= User.find(params[:id]) | |
62 | + @member ||= User.find_by_username(params[:id]) | |
63 | 63 | end |
64 | 64 | end | ... | ... |
app/controllers/teams/members_controller.rb
app/models/user.rb
... | ... | @@ -143,6 +143,11 @@ class User < ActiveRecord::Base |
143 | 143 | # |
144 | 144 | # Instance methods |
145 | 145 | # |
146 | + | |
147 | + def to_param | |
148 | + username | |
149 | + end | |
150 | + | |
146 | 151 | def generate_password |
147 | 152 | if self.force_random_password |
148 | 153 | self.password = self.password_confirmation = Devise.friendly_token.first(8) | ... | ... |
app/views/admin/groups/show.html.haml
... | ... | @@ -72,16 +72,17 @@ |
72 | 72 | %th Users |
73 | 73 | %th Project Access: |
74 | 74 | |
75 | - - @group.users.each do |u| | |
76 | - %tr{class: "user_#{u.id}"} | |
77 | - %td.name= link_to u.name, admin_user_path(u) | |
75 | + - @group.users.each do |user| | |
76 | + - next unless user | |
77 | + %tr{class: "user_#{user.id}"} | |
78 | + %td.name= link_to user.name, admin_user_path(user) | |
78 | 79 | %td.projects_access |
79 | - - u.authorized_projects.in_namespace(@group).each do |project| | |
80 | - - u_p = u.users_projects.in_project(project).first | |
80 | + - user.authorized_projects.in_namespace(@group).each do |project| | |
81 | + - u_p = user.users_projects.in_project(project).first | |
81 | 82 | - next unless u_p |
82 | 83 | %span |
83 | - = project.name | |
84 | - = link_to "(#{ u_p.project_access_human })", edit_admin_team_member_path(u_p) | |
84 | + = project.name_with_namespace | |
85 | + = link_to "(#{ u_p.project_access_human })", edit_admin_project_member_path(project, user) | |
85 | 86 | %tr |
86 | 87 | %td.input= select_tag :user_ids, options_from_collection_for_select(@users , :id, :name), multiple: true, data: {placeholder: 'Select users'}, class: 'chosen span5' |
87 | 88 | %td= select_tag :project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3"} | ... | ... |
app/views/admin/users/show.html.haml
... | ... | @@ -123,5 +123,5 @@ |
123 | 123 | %tr |
124 | 124 | %td= link_to project.name_with_namespace, admin_project_path(project) |
125 | 125 | %td= tm.project_access_human |
126 | - %td= link_to 'Edit Access', edit_admin_team_member_path(tm), class: "btn small" | |
127 | - %td= link_to 'Remove from team', admin_team_member_path(tm), confirm: 'Are you sure?', method: :delete, class: "btn small danger" | |
126 | + %td= link_to 'Edit Access', edit_admin_project_member_path(project, tm.user), class: "btn small" | |
127 | + %td= link_to 'Remove from team', admin_project_member_path(project, tm.user), confirm: 'Are you sure?', method: :delete, class: "btn small danger" | ... | ... |
config/routes.rb
... | ... | @@ -84,7 +84,7 @@ Gitlab::Application.routes.draw do |
84 | 84 | get :team |
85 | 85 | put :team_update |
86 | 86 | end |
87 | - scope module: :projects, constraints: { id: /[^\/]+/ } do | |
87 | + scope module: :projects, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ } do | |
88 | 88 | resources :members, only: [:edit, :update, :destroy] |
89 | 89 | end |
90 | 90 | end | ... | ... |