Commit 71e89df5e061e4c3a372977e7e6fb25f42791414

Authored by Dmitriy Zaporozhets
2 parents 439229ef 75a02e09

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
app/controllers/admin/projects/application_controller.rb
... ... @@ -6,6 +6,6 @@ class Admin::Projects::ApplicationController < Admin::ApplicationController
6 6 protected
7 7  
8 8 def project
9   - @project ||= Project.find_by_path(params[:project_id])
  9 + @project ||= Project.find_with_namespace(params[:project_id])
10 10 end
11 11 end
... ...
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
... ... @@ -36,6 +36,6 @@ class Admin::Teams::MembersController < Admin::Teams::ApplicationController
36 36 protected
37 37  
38 38 def team_member
39   - @member ||= user_team.members.find(params[:id])
  39 + @member ||= user_team.members.find_by_username(params[:id])
40 40 end
41 41 end
... ...
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
... ... @@ -43,7 +43,7 @@ class Teams::MembersController < Teams::ApplicationController
43 43 protected
44 44  
45 45 def team_member
46   - @member ||= user_team.members.find(params[:id])
  46 + @member ||= user_team.members.find_by_username(params[:id])
47 47 end
48 48  
49 49 end
... ...
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
... ...