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 |