new access rights implemented

This commit is contained in:
Dmitriy Zaporozhets 2011-12-07 10:04:57 +02:00
parent 68154e8fe9
commit 1b8f082061
11 changed files with 66 additions and 82 deletions

View file

@ -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

View file

@ -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"

View file

@ -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"
:javascript
$('select#team_member_user_id').selectmenu({width:300});
$('select#team_member_project_id').selectmenu({width:300});
:css
form select {
width:300px;
}
:javascript
$('select#team_member_user_id').chosen();
$('select#team_member_project_id').chosen();
$('select#team_member_repo_access').chosen();
$('select#team_member_project_access').chosen();

View file

@ -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

View file

@ -11,19 +11,13 @@
#infoblock
.span-6
%b Access:
%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 "read", 1, @admin_team_member.read, :disabled => :disabled
Web Access (Browse Repo)
%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

View file

@ -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

View file

@ -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();
});
})

View file

@ -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"

View file

@ -12,4 +12,5 @@
modal: true
});
$('select#team_member_user_id').chosen();
$('#team_member_new select#team_member_user_id').chosen();

View file

@ -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 }

View file

@ -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