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
This commit is contained in:
Dmitriy Zaporozhets 2013-01-25 13:45:08 -08:00
commit 71e89df5e0
10 changed files with 42 additions and 40 deletions

View file

@ -6,6 +6,6 @@ class Admin::Projects::ApplicationController < Admin::ApplicationController
protected protected
def project def project
@project ||= Project.find_by_path(params[:project_id]) @project ||= Project.find_with_namespace(params[:project_id])
end end
end end

View file

@ -22,7 +22,7 @@ class Admin::Projects::MembersController < Admin::Projects::ApplicationControlle
private private
def team_member def team_member
@member ||= project.users.find(params[:id]) @member ||= project.users.find_by_username(params[:id])
end end
def team_member_relation def team_member_relation

View file

@ -36,6 +36,6 @@ class Admin::Teams::MembersController < Admin::Teams::ApplicationController
protected protected
def team_member def team_member
@member ||= user_team.members.find(params[:id]) @member ||= user_team.members.find_by_username(params[:id])
end end
end end

View file

@ -7,25 +7,21 @@ class Admin::UsersController < Admin::ApplicationController
end end
def show def show
@admin_user = User.find(params[:id]) projects = if admin_user.authorized_projects.empty?
@projects = if @admin_user.authorized_projects.empty?
Project Project
else else
Project.without_user(@admin_user) Project.without_user(admin_user)
end.all end.all
end end
def team_update def team_update
@admin_user = User.find(params[:id])
UsersProject.add_users_into_projects( UsersProject.add_users_into_projects(
params[:project_ids], params[:project_ids],
[@admin_user.id], [admin_user.id],
params[:project_access] params[:project_access]
) )
redirect_to [:admin, @admin_user], notice: 'Teams were successfully updated.' redirect_to [:admin, admin_user], notice: 'Teams were successfully updated.'
end end
@ -34,13 +30,11 @@ class Admin::UsersController < Admin::ApplicationController
end end
def edit def edit
@admin_user = User.find(params[:id]) admin_user
end end
def block def block
@admin_user = User.find(params[:id]) if admin_user.block
if @admin_user.block
redirect_to :back, alert: "Successfully blocked" redirect_to :back, alert: "Successfully blocked"
else else
redirect_to :back, alert: "Error occured. User was not blocked" redirect_to :back, alert: "Error occured. User was not blocked"
@ -48,9 +42,7 @@ class Admin::UsersController < Admin::ApplicationController
end end
def unblock def unblock
@admin_user = User.find(params[:id]) if admin_user.update_attribute(:blocked, false)
if @admin_user.update_attribute(:blocked, false)
redirect_to :back, alert: "Successfully unblocked" redirect_to :back, alert: "Successfully unblocked"
else else
redirect_to :back, alert: "Error occured. User was not unblocked" redirect_to :back, alert: "Error occured. User was not unblocked"
@ -82,30 +74,34 @@ class Admin::UsersController < Admin::ApplicationController
params[:user].delete(:password_confirmation) params[:user].delete(:password_confirmation)
end end
@admin_user = User.find(params[:id]) admin_user.admin = (admin && admin.to_i > 0)
@admin_user.admin = (admin && admin.to_i > 0)
respond_to do |format| respond_to do |format|
if @admin_user.update_attributes(params[:user], as: :admin) if admin_user.update_attributes(params[:user], as: :admin)
format.html { redirect_to [:admin, @admin_user], notice: 'User was successfully updated.' } format.html { redirect_to [:admin, admin_user], notice: 'User was successfully updated.' }
format.json { head :ok } format.json { head :ok }
else else
format.html { render action: "edit" } format.html { render action: "edit" }
format.json { render json: @admin_user.errors, status: :unprocessable_entity } format.json { render json: admin_user.errors, status: :unprocessable_entity }
end end
end end
end end
def destroy def destroy
@admin_user = User.find(params[:id]) if admin_user.personal_projects.count > 0
if @admin_user.personal_projects.count > 0
redirect_to admin_users_path, alert: "User is a project owner and can't be removed." and return redirect_to admin_users_path, alert: "User is a project owner and can't be removed." and return
end end
@admin_user.destroy admin_user.destroy
respond_to do |format| respond_to do |format|
format.html { redirect_to admin_users_url } format.html { redirect_to admin_users_path }
format.json { head :ok } format.json { head :ok }
end end
end end
protected
def admin_user
@admin_user ||= User.find_by_username(params[:id])
end
end end

View file

@ -39,7 +39,7 @@ class TeamMembersController < ProjectResourceController
end end
def destroy def destroy
@user_project_relation = project.users_projects.find_by_user_id(params[:id]) @user_project_relation = project.users_projects.find_by_user_id(member)
@user_project_relation.destroy @user_project_relation.destroy
respond_to do |format| respond_to do |format|
@ -59,6 +59,6 @@ class TeamMembersController < ProjectResourceController
protected protected
def member def member
@member ||= User.find(params[:id]) @member ||= User.find_by_username(params[:id])
end end
end end

View file

@ -43,7 +43,7 @@ class Teams::MembersController < Teams::ApplicationController
protected protected
def team_member def team_member
@member ||= user_team.members.find(params[:id]) @member ||= user_team.members.find_by_username(params[:id])
end end
end end

View file

@ -143,6 +143,11 @@ class User < ActiveRecord::Base
# #
# Instance methods # Instance methods
# #
def to_param
username
end
def generate_password def generate_password
if self.force_random_password if self.force_random_password
self.password = self.password_confirmation = Devise.friendly_token.first(8) self.password = self.password_confirmation = Devise.friendly_token.first(8)

View file

@ -72,16 +72,17 @@
%th Users %th Users
%th Project Access: %th Project Access:
- @group.users.each do |u| - @group.users.each do |user|
%tr{class: "user_#{u.id}"} - next unless user
%td.name= link_to u.name, admin_user_path(u) %tr{class: "user_#{user.id}"}
%td.name= link_to user.name, admin_user_path(user)
%td.projects_access %td.projects_access
- u.authorized_projects.in_namespace(@group).each do |project| - user.authorized_projects.in_namespace(@group).each do |project|
- u_p = u.users_projects.in_project(project).first - u_p = user.users_projects.in_project(project).first
- next unless u_p - next unless u_p
%span %span
= project.name = project.name_with_namespace
= link_to "(#{ u_p.project_access_human })", edit_admin_team_member_path(u_p) = link_to "(#{ u_p.project_access_human })", edit_admin_project_member_path(project, user)
%tr %tr
%td.input= select_tag :user_ids, options_from_collection_for_select(@users , :id, :name), multiple: true, data: {placeholder: 'Select users'}, class: 'chosen span5' %td.input= select_tag :user_ids, options_from_collection_for_select(@users , :id, :name), multiple: true, data: {placeholder: 'Select users'}, class: 'chosen span5'
%td= select_tag :project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3"} %td= select_tag :project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3"}

View file

@ -123,5 +123,5 @@
%tr %tr
%td= link_to project.name_with_namespace, admin_project_path(project) %td= link_to project.name_with_namespace, admin_project_path(project)
%td= tm.project_access_human %td= tm.project_access_human
%td= link_to 'Edit Access', edit_admin_team_member_path(tm), class: "btn small" %td= link_to 'Edit Access', edit_admin_project_member_path(project, tm.user), class: "btn small"
%td= link_to 'Remove from team', admin_team_member_path(tm), confirm: 'Are you sure?', method: :delete, class: "btn small danger" %td= link_to 'Remove from team', admin_project_member_path(project, tm.user), confirm: 'Are you sure?', method: :delete, class: "btn small danger"

View file

@ -84,7 +84,7 @@ Gitlab::Application.routes.draw do
get :team get :team
put :team_update put :team_update
end end
scope module: :projects, constraints: { id: /[^\/]+/ } do scope module: :projects, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ } do
resources :members, only: [:edit, :update, :destroy] resources :members, only: [:edit, :update, :destroy]
end end
end end