Commit 1b8f082061e3f120ab02b263cb68e3433b028ef6
1 parent
68154e8f
Exists in
master
and in
4 other branches
new access rights implemented
Showing
11 changed files
with
65 additions
and
81 deletions
Show diff stats
app/controllers/projects_controller.rb
| @@ -30,7 +30,7 @@ class ProjectsController < ApplicationController | @@ -30,7 +30,7 @@ class ProjectsController < ApplicationController | ||
| 30 | 30 | ||
| 31 | Project.transaction do | 31 | Project.transaction do |
| 32 | @project.save! | 32 | @project.save! |
| 33 | - @project.users_projects.create!(:admin => true, :read => true, :write => true, :user => current_user) | 33 | + @project.users_projects.create!(:repo_access => Repository::REPO_RW , :project_access => Project::PROJECT_RWA, :user => current_user) |
| 34 | 34 | ||
| 35 | # when project saved no team member exist so | 35 | # when project saved no team member exist so |
| 36 | # project repository should be updated after first user add | 36 | # project repository should be updated after first user add |
app/views/admin/projects/show.html.haml
| @@ -43,18 +43,17 @@ | @@ -43,18 +43,17 @@ | ||
| 43 | %tr | 43 | %tr |
| 44 | %th Name | 44 | %th Name |
| 45 | %th Added | 45 | %th Added |
| 46 | - %th Web | ||
| 47 | - %th Git | ||
| 48 | - %th Admin | 46 | + %th Project Access |
| 47 | + %th Repository Access | ||
| 49 | %th | 48 | %th |
| 50 | 49 | ||
| 51 | - @admin_project.users_projects.each do |tm| | 50 | - @admin_project.users_projects.each do |tm| |
| 52 | %tr | 51 | %tr |
| 53 | - %td= link_to tm.user_name, admin_team_member_path(tm) | 52 | + %td |
| 53 | + = link_to tm.user_name, admin_team_member_path(tm) | ||
| 54 | %td= time_ago_in_words(tm.updated_at) + " ago" | 54 | %td= time_ago_in_words(tm.updated_at) + " ago" |
| 55 | - %td= check_box_tag "read", 1, @admin_project.readers.include?(tm.user), :disabled => :disabled | ||
| 56 | - %td= check_box_tag "commit", 1, @admin_project.writers.include?(tm.user), :disabled => :disabled | ||
| 57 | - %td.span-2= check_box_tag "admin", 1, @admin_project.admins.include?(tm.user), :disabled => :disabled | 55 | + %td= select_tag :project_access, options_for_select(Project.access_options, tm.project_access), :class => "project-access-select", :disabled => :disabled |
| 56 | + %td= select_tag :repo_access, options_for_select(Repository.access_options, tm.repo_access), :class => "repo-access-select", :disabled => :disabled | ||
| 58 | %td= link_to 'Destroy', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete | 57 | %td= link_to 'Destroy', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete |
| 59 | 58 | ||
| 60 | = link_to 'New Team Member', new_admin_team_member_path(:team_member => {:project_id => @admin_project.id}), :class => "grey-button" | 59 | = link_to 'New Team Member', new_admin_team_member_path(:team_member => {:project_id => @admin_project.id}), :class => "grey-button" |
app/views/admin/team_members/_form.html.haml
| @@ -17,21 +17,26 @@ | @@ -17,21 +17,26 @@ | ||
| 17 | = f.select :project_id, Project.all.map { |user| [user.name, user.id] } | 17 | = f.select :project_id, Project.all.map { |user| [user.name, user.id] } |
| 18 | 18 | ||
| 19 | .span-6 | 19 | .span-6 |
| 20 | - %b Access: | 20 | + %b Project Access: |
| 21 | .span-6 | 21 | .span-6 |
| 22 | - = f.check_box :read | ||
| 23 | - Web Access (Browse Repo) | 22 | + = f.select :project_access, options_for_select(Project.access_options, @admin_team_member.project_access), {}, :class => "project-access-select" |
| 23 | + | ||
| 24 | .span-6 | 24 | .span-6 |
| 25 | - = f.check_box :write | ||
| 26 | - Git Access (User will be added to commiters list) | 25 | + %b Repository Access: |
| 27 | .span-6 | 26 | .span-6 |
| 28 | - = f.check_box :admin | ||
| 29 | - Admin (Can manage project) | 27 | + = f.select :repo_access, options_for_select(Repository.access_options, @admin_team_member.repo_access), {}, :class => "repo-access-select" |
| 30 | %br | 28 | %br |
| 31 | .actions | 29 | .actions |
| 32 | = f.submit 'Save', :class => "grey-button" | 30 | = f.submit 'Save', :class => "grey-button" |
| 33 | 31 | ||
| 32 | +:css | ||
| 33 | + form select { | ||
| 34 | + width:300px; | ||
| 35 | + } | ||
| 36 | + | ||
| 34 | :javascript | 37 | :javascript |
| 35 | - $('select#team_member_user_id').selectmenu({width:300}); | ||
| 36 | - $('select#team_member_project_id').selectmenu({width:300}); | 38 | + $('select#team_member_user_id').chosen(); |
| 39 | + $('select#team_member_project_id').chosen(); | ||
| 40 | + $('select#team_member_repo_access').chosen(); | ||
| 41 | + $('select#team_member_project_access').chosen(); | ||
| 37 | 42 |
app/views/admin/team_members/index.html.haml
| @@ -3,21 +3,21 @@ | @@ -3,21 +3,21 @@ | ||
| 3 | %table | 3 | %table |
| 4 | %thead | 4 | %thead |
| 5 | %th Name | 5 | %th Name |
| 6 | - %th Email | ||
| 7 | - %th Read | ||
| 8 | - %th Git | ||
| 9 | - %th Manage | 6 | + %th Project Access |
| 7 | + %th Repo Access | ||
| 10 | %th Added | 8 | %th Added |
| 11 | %th | 9 | %th |
| 12 | %th | 10 | %th |
| 13 | - members.each do |tm| | 11 | - members.each do |tm| |
| 14 | - user = tm.user | 12 | - user = tm.user |
| 15 | %tr | 13 | %tr |
| 16 | - %td.span-6= link_to tm.user_name, admin_team_member_path(tm) | ||
| 17 | - %td.span-6= tm.user_email | ||
| 18 | - %td.span-1= check_box_tag "read", 1, project.readers.include?(user), :disabled => :disabled | ||
| 19 | - %td.span-1= check_box_tag "commit", 1, project.writers.include?(user), :disabled => :disabled | ||
| 20 | - %td.span-2= check_box_tag "admin", 1, project.admins.include?(user), :disabled => :disabled | 14 | + %td.span-6 |
| 15 | + = link_to tm.user_name, admin_team_member_path(tm) | ||
| 16 | + %br | ||
| 17 | + %br | ||
| 18 | + = tm.user_email | ||
| 19 | + %td.span-3= select_tag :project_access, options_for_select(Project.access_options, tm.project_access), :class => "project-access-select", :disabled => :disabled | ||
| 20 | + %td.span-3= select_tag :repo_access, options_for_select(Repository.access_options, tm.repo_access), :class => "repo-access-select", :disabled => :disabled | ||
| 21 | %td.span-3= time_ago_in_words(tm.updated_at) + " ago" | 21 | %td.span-3= time_ago_in_words(tm.updated_at) + " ago" |
| 22 | %td= link_to 'Edit', edit_admin_team_member_path(tm), :id => "edit_#{dom_id(tm)}" | 22 | %td= link_to 'Edit', edit_admin_team_member_path(tm), :id => "edit_#{dom_id(tm)}" |
| 23 | %td= link_to 'Destroy', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete | 23 | %td= link_to 'Destroy', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete |
app/views/admin/team_members/show.html.haml
| @@ -11,19 +11,13 @@ | @@ -11,19 +11,13 @@ | ||
| 11 | 11 | ||
| 12 | #infoblock | 12 | #infoblock |
| 13 | .span-6 | 13 | .span-6 |
| 14 | - %b Access: | ||
| 15 | - %br | ||
| 16 | - .span-6 | ||
| 17 | - = check_box_tag "read", 1, @admin_team_member.read, :disabled => :disabled | ||
| 18 | - Web Access (Browse Repo) | 14 | + %b Project Access: |
| 15 | + = select_tag :project_access, options_for_select(Project.access_options, @admin_team_member.project_access), :class => "project-access-select", :disabled => true | ||
| 16 | + | ||
| 19 | %br | 17 | %br |
| 20 | .span-6 | 18 | .span-6 |
| 21 | - = check_box_tag "commit", 1, @admin_team_member.write, :disabled => :disabled | ||
| 22 | - Git Access (User will be added to commiters list) | ||
| 23 | - %br | ||
| 24 | - .span-6.append-bottom | ||
| 25 | - = check_box_tag "admin", 1, @admin_team_member.admin, :disabled => :disabled | ||
| 26 | - Admin (Can manage project) | 19 | + %b Repository Access: |
| 20 | + = select_tag :repo_access, options_for_select(Repository.access_options, @admin_team_member.repo_access), :class => "repo-access-select", :disabled => true | ||
| 27 | 21 | ||
| 28 | %br | 22 | %br |
| 29 | 23 |
app/views/admin/users/show.html.haml
| @@ -51,9 +51,8 @@ | @@ -51,9 +51,8 @@ | ||
| 51 | %thead | 51 | %thead |
| 52 | %th Name | 52 | %th Name |
| 53 | %th Added | 53 | %th Added |
| 54 | - %th Web | ||
| 55 | - %th Git | ||
| 56 | - %th Admin | 54 | + %th Project Access |
| 55 | + %th Repository Access | ||
| 57 | %th | 56 | %th |
| 58 | %th | 57 | %th |
| 59 | 58 | ||
| @@ -62,9 +61,8 @@ | @@ -62,9 +61,8 @@ | ||
| 62 | %tr | 61 | %tr |
| 63 | %td= link_to project.name, admin_project_path(project) | 62 | %td= link_to project.name, admin_project_path(project) |
| 64 | %td= time_ago_in_words(tm.updated_at) + " ago" | 63 | %td= time_ago_in_words(tm.updated_at) + " ago" |
| 65 | - %td= check_box_tag "read", 1, project.readers.include?(@admin_user), :disabled => :disabled | ||
| 66 | - %td= check_box_tag "commit", 1, project.writers.include?(@admin_usertm), :disabled => :disabled | ||
| 67 | - %td.span-2= check_box_tag "admin", 1, project.admins.include?(@admin_user), :disabled => :disabled | 64 | + %td= select_tag :project_access, options_for_select(Project.access_options, tm.project_access), :class => "project-access-select", :disabled => :disabled |
| 65 | + %td= select_tag :repo_access, options_for_select(Repository.access_options, tm.repo_access), :class => "repo-access-select", :disabled => :disabled | ||
| 68 | %td= link_to 'Edit', edit_admin_team_member_path(tm) | 66 | %td= link_to 'Edit', edit_admin_team_member_path(tm) |
| 69 | %td= link_to 'Cancel', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete | 67 | %td= link_to 'Cancel', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete |
| 70 | 68 |
app/views/projects/_team.html.haml
| @@ -14,7 +14,7 @@ | @@ -14,7 +14,7 @@ | ||
| 14 | 14 | ||
| 15 | :javascript | 15 | :javascript |
| 16 | $(function(){ | 16 | $(function(){ |
| 17 | - $('.repo-access-select, .project-access-select').live("change", function() { | 17 | + $('#team-table .repo-access-select, #team-table .project-access-select').live("change", function() { |
| 18 | $(this.form).submit(); | 18 | $(this.form).submit(); |
| 19 | }); | 19 | }); |
| 20 | }) | 20 | }) |
app/views/team_members/_form.html.haml
| @@ -10,16 +10,15 @@ | @@ -10,16 +10,15 @@ | ||
| 10 | .span-6 | 10 | .span-6 |
| 11 | = f.select(:user_id, User.not_in_project(@project).all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, { :style => "width:300px" }) | 11 | = f.select(:user_id, User.not_in_project(@project).all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, { :style => "width:300px" }) |
| 12 | .span-6 | 12 | .span-6 |
| 13 | - %b Access: | 13 | + %b Project Access: |
| 14 | .span-6 | 14 | .span-6 |
| 15 | - = f.check_box :read | ||
| 16 | - Web Access | 15 | + = f.select :project_access, options_for_select(Project.access_options, @team_member.project_access), {}, :class => "project-access-select" |
| 16 | + | ||
| 17 | .span-6 | 17 | .span-6 |
| 18 | - = f.check_box :write | ||
| 19 | - Git Access | ||
| 20 | - .span-6.append-bottom | ||
| 21 | - = f.check_box :admin | ||
| 22 | - Admin | 18 | + %b Repository Access: |
| 19 | + .span-6 | ||
| 20 | + = f.select :repo_access, options_for_select(Repository.access_options, @team_member.repo_access), {}, :class => "repo-access-select" | ||
| 23 | %br | 21 | %br |
| 24 | .span-6 | 22 | .span-6 |
| 25 | = f.submit 'Save', :class => "grey-button" | 23 | = f.submit 'Save', :class => "grey-button" |
| 24 | + |
app/views/team_members/new.js.haml
spec/models/note_spec.rb
| @@ -31,9 +31,9 @@ describe Note do | @@ -31,9 +31,9 @@ describe Note do | ||
| 31 | 31 | ||
| 32 | describe :read do | 32 | describe :read do |
| 33 | before do | 33 | before do |
| 34 | - @p1.users_projects.create(:user => @u1, :read => false) | ||
| 35 | - @p1.users_projects.create(:user => @u2, :read => true) | ||
| 36 | - @p2.users_projects.create(:user => @u3, :read => true) | 34 | + @p1.users_projects.create(:user => @u1, :project_access => Project::PROJECT_N) |
| 35 | + @p1.users_projects.create(:user => @u2, :project_access => Project::PROJECT_R) | ||
| 36 | + @p2.users_projects.create(:user => @u3, :project_access => Project::PROJECT_R) | ||
| 37 | end | 37 | end |
| 38 | 38 | ||
| 39 | it { @abilities.allowed?(@u1, :read_note, @p1).should be_false } | 39 | it { @abilities.allowed?(@u1, :read_note, @p1).should be_false } |
| @@ -43,9 +43,9 @@ describe Note do | @@ -43,9 +43,9 @@ describe Note do | ||
| 43 | 43 | ||
| 44 | describe :write do | 44 | describe :write do |
| 45 | before do | 45 | before do |
| 46 | - @p1.users_projects.create(:user => @u1, :write => false) | ||
| 47 | - @p1.users_projects.create(:user => @u2, :write => true) | ||
| 48 | - @p2.users_projects.create(:user => @u3, :write => true) | 46 | + @p1.users_projects.create(:user => @u1, :project_access => Project::PROJECT_R) |
| 47 | + @p1.users_projects.create(:user => @u2, :project_access => Project::PROJECT_RW) | ||
| 48 | + @p2.users_projects.create(:user => @u3, :project_access => Project::PROJECT_RW) | ||
| 49 | end | 49 | end |
| 50 | 50 | ||
| 51 | it { @abilities.allowed?(@u1, :write_note, @p1).should be_false } | 51 | it { @abilities.allowed?(@u1, :write_note, @p1).should be_false } |
| @@ -55,9 +55,9 @@ describe Note do | @@ -55,9 +55,9 @@ describe Note do | ||
| 55 | 55 | ||
| 56 | describe :admin do | 56 | describe :admin do |
| 57 | before do | 57 | before do |
| 58 | - @p1.users_projects.create(:user => @u1, :admin => false) | ||
| 59 | - @p1.users_projects.create(:user => @u2, :admin => true) | ||
| 60 | - @p2.users_projects.create(:user => @u3, :admin => true) | 58 | + @p1.users_projects.create(:user => @u1, :project_access => Project::PROJECT_R) |
| 59 | + @p1.users_projects.create(:user => @u2, :project_access => Project::PROJECT_RWA) | ||
| 60 | + @p2.users_projects.create(:user => @u3, :project_access => Project::PROJECT_RWA) | ||
| 61 | end | 61 | end |
| 62 | 62 | ||
| 63 | it { @abilities.allowed?(@u1, :admin_note, @p1).should be_false } | 63 | it { @abilities.allowed?(@u1, :admin_note, @p1).should be_false } |
spec/requests/team_members_spec.rb
| @@ -32,11 +32,10 @@ describe "TeamMembers" do | @@ -32,11 +32,10 @@ describe "TeamMembers" do | ||
| 32 | describe "fill in" do | 32 | describe "fill in" do |
| 33 | before do | 33 | before do |
| 34 | page.execute_script("$('#team_member_user_id').show();") | 34 | page.execute_script("$('#team_member_user_id').show();") |
| 35 | - select @user_1.name, :from => "team_member_user_id" | ||
| 36 | - | ||
| 37 | - within "#team_member_new" do | ||
| 38 | - check "team_member_read" | ||
| 39 | - check "team_member_write" | 35 | + within "#team_member_new" do |
| 36 | + select @user_1.name, :from => "team_member_user_id" | ||
| 37 | + select "Report", :from => "team_member_project_access" | ||
| 38 | + select "Pull", :from => "team_member_repo_access" | ||
| 40 | end | 39 | end |
| 41 | end | 40 | end |
| 42 | 41 | ||
| @@ -48,20 +47,9 @@ describe "TeamMembers" do | @@ -48,20 +47,9 @@ describe "TeamMembers" do | ||
| 48 | 47 | ||
| 49 | page.should have_content @user_1.name | 48 | page.should have_content @user_1.name |
| 50 | 49 | ||
| 51 | - @member.read.should be_true | ||
| 52 | - @member.write.should be_true | ||
| 53 | - @member.admin.should be_false | ||
| 54 | - end | ||
| 55 | - | ||
| 56 | - it "should not allow creation without access selected" do | ||
| 57 | - within "#team_member_new" do | ||
| 58 | - uncheck "team_member_read" | ||
| 59 | - uncheck "team_member_write" | ||
| 60 | - uncheck "team_member_admin" | ||
| 61 | - end | ||
| 62 | - | ||
| 63 | - expect { click_button "Save" }.to_not change {UsersProject.count} | ||
| 64 | - page.should have_content("Please choose at least one Role in the Access list") | 50 | + @member.reload |
| 51 | + @member.project_access.should == Project::PROJECT_RW | ||
| 52 | + @member.repo_access.should == Repository::REPO_R | ||
| 65 | end | 53 | end |
| 66 | end | 54 | end |
| 67 | end | 55 | end |