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
@@ -6,6 +6,6 @@ class Admin::Projects::ApplicationController < Admin::ApplicationController | @@ -6,6 +6,6 @@ class Admin::Projects::ApplicationController < Admin::ApplicationController | ||
6 | protected | 6 | protected |
7 | 7 | ||
8 | def project | 8 | def project |
9 | - @project ||= Project.find_by_path(params[:project_id]) | 9 | + @project ||= Project.find_with_namespace(params[:project_id]) |
10 | end | 10 | end |
11 | end | 11 | end |
app/controllers/admin/projects/members_controller.rb
@@ -22,7 +22,7 @@ class Admin::Projects::MembersController < Admin::Projects::ApplicationControlle | @@ -22,7 +22,7 @@ class Admin::Projects::MembersController < Admin::Projects::ApplicationControlle | ||
22 | private | 22 | private |
23 | 23 | ||
24 | def team_member | 24 | def team_member |
25 | - @member ||= project.users.find(params[:id]) | 25 | + @member ||= project.users.find_by_username(params[:id]) |
26 | end | 26 | end |
27 | 27 | ||
28 | def team_member_relation | 28 | def team_member_relation |
app/controllers/admin/teams/members_controller.rb
@@ -36,6 +36,6 @@ class Admin::Teams::MembersController < Admin::Teams::ApplicationController | @@ -36,6 +36,6 @@ class Admin::Teams::MembersController < Admin::Teams::ApplicationController | ||
36 | protected | 36 | protected |
37 | 37 | ||
38 | def team_member | 38 | def team_member |
39 | - @member ||= user_team.members.find(params[:id]) | 39 | + @member ||= user_team.members.find_by_username(params[:id]) |
40 | end | 40 | end |
41 | end | 41 | end |
app/controllers/admin/users_controller.rb
@@ -7,25 +7,21 @@ class Admin::UsersController < Admin::ApplicationController | @@ -7,25 +7,21 @@ class Admin::UsersController < Admin::ApplicationController | ||
7 | end | 7 | end |
8 | 8 | ||
9 | def show | 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 | Project | 11 | Project |
14 | else | 12 | else |
15 | - Project.without_user(@admin_user) | 13 | + Project.without_user(admin_user) |
16 | end.all | 14 | end.all |
17 | end | 15 | end |
18 | 16 | ||
19 | def team_update | 17 | def team_update |
20 | - @admin_user = User.find(params[:id]) | ||
21 | - | ||
22 | UsersProject.add_users_into_projects( | 18 | UsersProject.add_users_into_projects( |
23 | params[:project_ids], | 19 | params[:project_ids], |
24 | - [@admin_user.id], | 20 | + [admin_user.id], |
25 | params[:project_access] | 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 | end | 25 | end |
30 | 26 | ||
31 | 27 | ||
@@ -34,13 +30,11 @@ class Admin::UsersController < Admin::ApplicationController | @@ -34,13 +30,11 @@ class Admin::UsersController < Admin::ApplicationController | ||
34 | end | 30 | end |
35 | 31 | ||
36 | def edit | 32 | def edit |
37 | - @admin_user = User.find(params[:id]) | 33 | + admin_user |
38 | end | 34 | end |
39 | 35 | ||
40 | def block | 36 | def block |
41 | - @admin_user = User.find(params[:id]) | ||
42 | - | ||
43 | - if @admin_user.block | 37 | + if admin_user.block |
44 | redirect_to :back, alert: "Successfully blocked" | 38 | redirect_to :back, alert: "Successfully blocked" |
45 | else | 39 | else |
46 | redirect_to :back, alert: "Error occured. User was not blocked" | 40 | redirect_to :back, alert: "Error occured. User was not blocked" |
@@ -48,9 +42,7 @@ class Admin::UsersController < Admin::ApplicationController | @@ -48,9 +42,7 @@ class Admin::UsersController < Admin::ApplicationController | ||
48 | end | 42 | end |
49 | 43 | ||
50 | def unblock | 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 | redirect_to :back, alert: "Successfully unblocked" | 46 | redirect_to :back, alert: "Successfully unblocked" |
55 | else | 47 | else |
56 | redirect_to :back, alert: "Error occured. User was not unblocked" | 48 | redirect_to :back, alert: "Error occured. User was not unblocked" |
@@ -82,30 +74,34 @@ class Admin::UsersController < Admin::ApplicationController | @@ -82,30 +74,34 @@ class Admin::UsersController < Admin::ApplicationController | ||
82 | params[:user].delete(:password_confirmation) | 74 | params[:user].delete(:password_confirmation) |
83 | end | 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 | respond_to do |format| | 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 | format.json { head :ok } | 82 | format.json { head :ok } |
92 | else | 83 | else |
93 | format.html { render action: "edit" } | 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 | end | 86 | end |
96 | end | 87 | end |
97 | end | 88 | end |
98 | 89 | ||
99 | def destroy | 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 | redirect_to admin_users_path, alert: "User is a project owner and can't be removed." and return | 92 | redirect_to admin_users_path, alert: "User is a project owner and can't be removed." and return |
103 | end | 93 | end |
104 | - @admin_user.destroy | 94 | + admin_user.destroy |
105 | 95 | ||
106 | respond_to do |format| | 96 | respond_to do |format| |
107 | - format.html { redirect_to admin_users_url } | 97 | + format.html { redirect_to admin_users_path } |
108 | format.json { head :ok } | 98 | format.json { head :ok } |
109 | end | 99 | end |
110 | end | 100 | end |
101 | + | ||
102 | + protected | ||
103 | + | ||
104 | + def admin_user | ||
105 | + @admin_user ||= User.find_by_username(params[:id]) | ||
106 | + end | ||
111 | end | 107 | end |
app/controllers/team_members_controller.rb
@@ -39,7 +39,7 @@ class TeamMembersController < ProjectResourceController | @@ -39,7 +39,7 @@ class TeamMembersController < ProjectResourceController | ||
39 | end | 39 | end |
40 | 40 | ||
41 | def destroy | 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 | @user_project_relation.destroy | 43 | @user_project_relation.destroy |
44 | 44 | ||
45 | respond_to do |format| | 45 | respond_to do |format| |
@@ -59,6 +59,6 @@ class TeamMembersController < ProjectResourceController | @@ -59,6 +59,6 @@ class TeamMembersController < ProjectResourceController | ||
59 | protected | 59 | protected |
60 | 60 | ||
61 | def member | 61 | def member |
62 | - @member ||= User.find(params[:id]) | 62 | + @member ||= User.find_by_username(params[:id]) |
63 | end | 63 | end |
64 | end | 64 | end |
app/controllers/teams/members_controller.rb
@@ -43,7 +43,7 @@ class Teams::MembersController < Teams::ApplicationController | @@ -43,7 +43,7 @@ class Teams::MembersController < Teams::ApplicationController | ||
43 | protected | 43 | protected |
44 | 44 | ||
45 | def team_member | 45 | def team_member |
46 | - @member ||= user_team.members.find(params[:id]) | 46 | + @member ||= user_team.members.find_by_username(params[:id]) |
47 | end | 47 | end |
48 | 48 | ||
49 | end | 49 | end |
app/models/user.rb
@@ -143,6 +143,11 @@ class User < ActiveRecord::Base | @@ -143,6 +143,11 @@ class User < ActiveRecord::Base | ||
143 | # | 143 | # |
144 | # Instance methods | 144 | # Instance methods |
145 | # | 145 | # |
146 | + | ||
147 | + def to_param | ||
148 | + username | ||
149 | + end | ||
150 | + | ||
146 | def generate_password | 151 | def generate_password |
147 | if self.force_random_password | 152 | if self.force_random_password |
148 | self.password = self.password_confirmation = Devise.friendly_token.first(8) | 153 | self.password = self.password_confirmation = Devise.friendly_token.first(8) |
app/views/admin/groups/show.html.haml
@@ -72,16 +72,17 @@ | @@ -72,16 +72,17 @@ | ||
72 | %th Users | 72 | %th Users |
73 | %th Project Access: | 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 | %td.projects_access | 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 | - next unless u_p | 82 | - next unless u_p |
82 | %span | 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 | %tr | 86 | %tr |
86 | %td.input= select_tag :user_ids, options_from_collection_for_select(@users , :id, :name), multiple: true, data: {placeholder: 'Select users'}, class: 'chosen span5' | 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 | %td= select_tag :project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3"} | 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,5 +123,5 @@ | ||
123 | %tr | 123 | %tr |
124 | %td= link_to project.name_with_namespace, admin_project_path(project) | 124 | %td= link_to project.name_with_namespace, admin_project_path(project) |
125 | %td= tm.project_access_human | 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,7 +84,7 @@ Gitlab::Application.routes.draw do | ||
84 | get :team | 84 | get :team |
85 | put :team_update | 85 | put :team_update |
86 | end | 86 | end |
87 | - scope module: :projects, constraints: { id: /[^\/]+/ } do | 87 | + scope module: :projects, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ } do |
88 | resources :members, only: [:edit, :update, :destroy] | 88 | resources :members, only: [:edit, :update, :destroy] |
89 | end | 89 | end |
90 | end | 90 | end |