summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com>2011-12-07 10:04:57 +0200
committerDmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com>2011-12-07 10:04:57 +0200
commit1b8f082061e3f120ab02b263cb68e3433b028ef6 (patch)
tree8c4dd949e79b9b04f0d53e3b17f13b06ae2d6385
parent68154e8fe9d6266f3b1ae00e48530143f87cd138 (diff)
downloadgitlab-ce-1b8f082061e3f120ab02b263cb68e3433b028ef6.tar.gz
new access rights implemented
-rw-r--r--app/controllers/projects_controller.rb2
-rw-r--r--app/views/admin/projects/show.html.haml13
-rw-r--r--app/views/admin/team_members/_form.html.haml23
-rw-r--r--app/views/admin/team_members/index.html.haml18
-rw-r--r--app/views/admin/team_members/show.html.haml16
-rw-r--r--app/views/admin/users/show.html.haml10
-rw-r--r--app/views/projects/_team.html.haml2
-rw-r--r--app/views/team_members/_form.html.haml15
-rw-r--r--app/views/team_members/new.js.haml3
-rw-r--r--spec/models/note_spec.rb18
-rw-r--r--spec/requests/team_members_spec.rb26
11 files changed, 65 insertions, 81 deletions
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 460393bae15..8d9adedfbcf 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -30,7 +30,7 @@ class ProjectsController < ApplicationController
Project.transaction do
@project.save!
- @project.users_projects.create!(:admin => true, :read => true, :write => true, :user => current_user)
+ @project.users_projects.create!(:repo_access => Repository::REPO_RW , :project_access => Project::PROJECT_RWA, :user => current_user)
# when project saved no team member exist so
# project repository should be updated after first user add
diff --git a/app/views/admin/projects/show.html.haml b/app/views/admin/projects/show.html.haml
index e913754cccb..cd7a3a810bf 100644
--- a/app/views/admin/projects/show.html.haml
+++ b/app/views/admin/projects/show.html.haml
@@ -43,18 +43,17 @@
%tr
%th Name
%th Added
- %th Web
- %th Git
- %th Admin
+ %th Project Access
+ %th Repository Access
%th
- @admin_project.users_projects.each do |tm|
%tr
- %td= link_to tm.user_name, admin_team_member_path(tm)
+ %td
+ = link_to tm.user_name, admin_team_member_path(tm)
%td= time_ago_in_words(tm.updated_at) + " ago"
- %td= check_box_tag "read", 1, @admin_project.readers.include?(tm.user), :disabled => :disabled
- %td= check_box_tag "commit", 1, @admin_project.writers.include?(tm.user), :disabled => :disabled
- %td.span-2= check_box_tag "admin", 1, @admin_project.admins.include?(tm.user), :disabled => :disabled
+ %td= select_tag :project_access, options_for_select(Project.access_options, tm.project_access), :class => "project-access-select", :disabled => :disabled
+ %td= select_tag :repo_access, options_for_select(Repository.access_options, tm.repo_access), :class => "repo-access-select", :disabled => :disabled
%td= link_to 'Destroy', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete
= link_to 'New Team Member', new_admin_team_member_path(:team_member => {:project_id => @admin_project.id}), :class => "grey-button"
diff --git a/app/views/admin/team_members/_form.html.haml b/app/views/admin/team_members/_form.html.haml
index 042c84ef655..f8e7f1043d0 100644
--- a/app/views/admin/team_members/_form.html.haml
+++ b/app/views/admin/team_members/_form.html.haml
@@ -17,21 +17,26 @@
= f.select :project_id, Project.all.map { |user| [user.name, user.id] }
.span-6
- %b Access:
+ %b Project Access:
.span-6
- = f.check_box :read
- Web Access (Browse Repo)
+ = f.select :project_access, options_for_select(Project.access_options, @admin_team_member.project_access), {}, :class => "project-access-select"
+
.span-6
- = f.check_box :write
- Git Access (User will be added to commiters list)
+ %b Repository Access:
.span-6
- = f.check_box :admin
- Admin (Can manage project)
+ = f.select :repo_access, options_for_select(Repository.access_options, @admin_team_member.repo_access), {}, :class => "repo-access-select"
%br
.actions
= f.submit 'Save', :class => "grey-button"
+:css
+ form select {
+ width:300px;
+ }
+
:javascript
- $('select#team_member_user_id').selectmenu({width:300});
- $('select#team_member_project_id').selectmenu({width:300});
+ $('select#team_member_user_id').chosen();
+ $('select#team_member_project_id').chosen();
+ $('select#team_member_repo_access').chosen();
+ $('select#team_member_project_access').chosen();
diff --git a/app/views/admin/team_members/index.html.haml b/app/views/admin/team_members/index.html.haml
index 0cd87d21a48..8033e690642 100644
--- a/app/views/admin/team_members/index.html.haml
+++ b/app/views/admin/team_members/index.html.haml
@@ -3,21 +3,21 @@
%table
%thead
%th Name
- %th Email
- %th Read
- %th Git
- %th Manage
+ %th Project Access
+ %th Repo Access
%th Added
%th
%th
- members.each do |tm|
- user = tm.user
%tr
- %td.span-6= link_to tm.user_name, admin_team_member_path(tm)
- %td.span-6= tm.user_email
- %td.span-1= check_box_tag "read", 1, project.readers.include?(user), :disabled => :disabled
- %td.span-1= check_box_tag "commit", 1, project.writers.include?(user), :disabled => :disabled
- %td.span-2= check_box_tag "admin", 1, project.admins.include?(user), :disabled => :disabled
+ %td.span-6
+ = link_to tm.user_name, admin_team_member_path(tm)
+ %br
+ %br
+ = tm.user_email
+ %td.span-3= select_tag :project_access, options_for_select(Project.access_options, tm.project_access), :class => "project-access-select", :disabled => :disabled
+ %td.span-3= select_tag :repo_access, options_for_select(Repository.access_options, tm.repo_access), :class => "repo-access-select", :disabled => :disabled
%td.span-3= time_ago_in_words(tm.updated_at) + " ago"
%td= link_to 'Edit', edit_admin_team_member_path(tm), :id => "edit_#{dom_id(tm)}"
%td= link_to 'Destroy', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete
diff --git a/app/views/admin/team_members/show.html.haml b/app/views/admin/team_members/show.html.haml
index 1555424bf3c..8579b6afae0 100644
--- a/app/views/admin/team_members/show.html.haml
+++ b/app/views/admin/team_members/show.html.haml
@@ -11,19 +11,13 @@
#infoblock
.span-6
- %b Access:
- %br
- .span-6
- = check_box_tag "read", 1, @admin_team_member.read, :disabled => :disabled
- Web Access (Browse Repo)
+ %b Project Access:
+ = select_tag :project_access, options_for_select(Project.access_options, @admin_team_member.project_access), :class => "project-access-select", :disabled => true
+
%br
.span-6
- = check_box_tag "commit", 1, @admin_team_member.write, :disabled => :disabled
- Git Access (User will be added to commiters list)
- %br
- .span-6.append-bottom
- = check_box_tag "admin", 1, @admin_team_member.admin, :disabled => :disabled
- Admin (Can manage project)
+ %b Repository Access:
+ = select_tag :repo_access, options_for_select(Repository.access_options, @admin_team_member.repo_access), :class => "repo-access-select", :disabled => true
%br
diff --git a/app/views/admin/users/show.html.haml b/app/views/admin/users/show.html.haml
index 2fc2daa75c2..da8f4370cab 100644
--- a/app/views/admin/users/show.html.haml
+++ b/app/views/admin/users/show.html.haml
@@ -51,9 +51,8 @@
%thead
%th Name
%th Added
- %th Web
- %th Git
- %th Admin
+ %th Project Access
+ %th Repository Access
%th
%th
@@ -62,9 +61,8 @@
%tr
%td= link_to project.name, admin_project_path(project)
%td= time_ago_in_words(tm.updated_at) + " ago"
- %td= check_box_tag "read", 1, project.readers.include?(@admin_user), :disabled => :disabled
- %td= check_box_tag "commit", 1, project.writers.include?(@admin_usertm), :disabled => :disabled
- %td.span-2= check_box_tag "admin", 1, project.admins.include?(@admin_user), :disabled => :disabled
+ %td= select_tag :project_access, options_for_select(Project.access_options, tm.project_access), :class => "project-access-select", :disabled => :disabled
+ %td= select_tag :repo_access, options_for_select(Repository.access_options, tm.repo_access), :class => "repo-access-select", :disabled => :disabled
%td= link_to 'Edit', edit_admin_team_member_path(tm)
%td= link_to 'Cancel', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete
diff --git a/app/views/projects/_team.html.haml b/app/views/projects/_team.html.haml
index ebf3e9a8ec0..e3d36136cc7 100644
--- a/app/views/projects/_team.html.haml
+++ b/app/views/projects/_team.html.haml
@@ -14,7 +14,7 @@
:javascript
$(function(){
- $('.repo-access-select, .project-access-select').live("change", function() {
+ $('#team-table .repo-access-select, #team-table .project-access-select').live("change", function() {
$(this.form).submit();
});
})
diff --git a/app/views/team_members/_form.html.haml b/app/views/team_members/_form.html.haml
index c413485b38e..786369e3bb0 100644
--- a/app/views/team_members/_form.html.haml
+++ b/app/views/team_members/_form.html.haml
@@ -10,16 +10,15 @@
.span-6
= f.select(:user_id, User.not_in_project(@project).all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, { :style => "width:300px" })
.span-6
- %b Access:
+ %b Project Access:
.span-6
- = f.check_box :read
- Web Access
+ = f.select :project_access, options_for_select(Project.access_options, @team_member.project_access), {}, :class => "project-access-select"
+
.span-6
- = f.check_box :write
- Git Access
- .span-6.append-bottom
- = f.check_box :admin
- Admin
+ %b Repository Access:
+ .span-6
+ = f.select :repo_access, options_for_select(Repository.access_options, @team_member.repo_access), {}, :class => "repo-access-select"
%br
.span-6
= f.submit 'Save', :class => "grey-button"
+
diff --git a/app/views/team_members/new.js.haml b/app/views/team_members/new.js.haml
index af3e99f6b4b..fe1ae1c7393 100644
--- a/app/views/team_members/new.js.haml
+++ b/app/views/team_members/new.js.haml
@@ -12,4 +12,5 @@
modal: true
});
- $('select#team_member_user_id').chosen();
+
+ $('#team_member_new select#team_member_user_id').chosen();
diff --git a/spec/models/note_spec.rb b/spec/models/note_spec.rb
index bd3f3934aec..ce7488dbb8d 100644
--- a/spec/models/note_spec.rb
+++ b/spec/models/note_spec.rb
@@ -31,9 +31,9 @@ describe Note do
describe :read do
before do
- @p1.users_projects.create(:user => @u1, :read => false)
- @p1.users_projects.create(:user => @u2, :read => true)
- @p2.users_projects.create(:user => @u3, :read => true)
+ @p1.users_projects.create(:user => @u1, :project_access => Project::PROJECT_N)
+ @p1.users_projects.create(:user => @u2, :project_access => Project::PROJECT_R)
+ @p2.users_projects.create(:user => @u3, :project_access => Project::PROJECT_R)
end
it { @abilities.allowed?(@u1, :read_note, @p1).should be_false }
@@ -43,9 +43,9 @@ describe Note do
describe :write do
before do
- @p1.users_projects.create(:user => @u1, :write => false)
- @p1.users_projects.create(:user => @u2, :write => true)
- @p2.users_projects.create(:user => @u3, :write => true)
+ @p1.users_projects.create(:user => @u1, :project_access => Project::PROJECT_R)
+ @p1.users_projects.create(:user => @u2, :project_access => Project::PROJECT_RW)
+ @p2.users_projects.create(:user => @u3, :project_access => Project::PROJECT_RW)
end
it { @abilities.allowed?(@u1, :write_note, @p1).should be_false }
@@ -55,9 +55,9 @@ describe Note do
describe :admin do
before do
- @p1.users_projects.create(:user => @u1, :admin => false)
- @p1.users_projects.create(:user => @u2, :admin => true)
- @p2.users_projects.create(:user => @u3, :admin => true)
+ @p1.users_projects.create(:user => @u1, :project_access => Project::PROJECT_R)
+ @p1.users_projects.create(:user => @u2, :project_access => Project::PROJECT_RWA)
+ @p2.users_projects.create(:user => @u3, :project_access => Project::PROJECT_RWA)
end
it { @abilities.allowed?(@u1, :admin_note, @p1).should be_false }
diff --git a/spec/requests/team_members_spec.rb b/spec/requests/team_members_spec.rb
index 3178cd2afaa..c15ef19c724 100644
--- a/spec/requests/team_members_spec.rb
+++ b/spec/requests/team_members_spec.rb
@@ -32,11 +32,10 @@ describe "TeamMembers" do
describe "fill in" do
before do
page.execute_script("$('#team_member_user_id').show();")
- select @user_1.name, :from => "team_member_user_id"
-
- within "#team_member_new" do
- check "team_member_read"
- check "team_member_write"
+ within "#team_member_new" do
+ select @user_1.name, :from => "team_member_user_id"
+ select "Report", :from => "team_member_project_access"
+ select "Pull", :from => "team_member_repo_access"
end
end
@@ -48,20 +47,9 @@ describe "TeamMembers" do
page.should have_content @user_1.name
- @member.read.should be_true
- @member.write.should be_true
- @member.admin.should be_false
- end
-
- it "should not allow creation without access selected" do
- within "#team_member_new" do
- uncheck "team_member_read"
- uncheck "team_member_write"
- uncheck "team_member_admin"
- end
-
- expect { click_button "Save" }.to_not change {UsersProject.count}
- page.should have_content("Please choose at least one Role in the Access list")
+ @member.reload
+ @member.project_access.should == Project::PROJECT_RW
+ @member.repo_access.should == Repository::REPO_R
end
end
end