new access rights implemented
This commit is contained in:
parent
68154e8fe9
commit
1b8f082061
11 changed files with 66 additions and 82 deletions
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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();
|
||||
});
|
||||
})
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -12,4 +12,5 @@
|
|||
modal: true
|
||||
|
||||
});
|
||||
$('select#team_member_user_id').chosen();
|
||||
|
||||
$('#team_member_new select#team_member_user_id').chosen();
|
||||
|
|
|
@ -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 }
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue