diff options
| author | Steven Thonus <steven@ln2.nl> | 2013-11-29 17:10:59 +0100 |
|---|---|---|
| committer | Steven Thonus <steven@ln2.nl> | 2013-12-16 14:39:14 +0100 |
| commit | 37383966ef3fada865d3d21a8ce7a3c640bbd11e (patch) | |
| tree | c7fe9015cd5d3b336e868498bb478fd523de0a86 /app/models/ability.rb | |
| parent | 99490159e5f9d6ff4b45f78b977d01caa1e3c4fc (diff) | |
| download | gitlab-ce-37383966ef3fada865d3d21a8ce7a3c640bbd11e.tar.gz | |
Archiving old projects; archived projects aren't shown on dashboard
features for archive projects
abilities for archived project
other abilities for archive projects
only limit commits and merges for archived projects
ability changed to prohibited actions on archived projects
added spec and feature tests for archive projects
changed search bar not to include archived projects
Diffstat (limited to 'app/models/ability.rb')
| -rw-r--r-- | app/models/ability.rb | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/app/models/ability.rb b/app/models/ability.rb index 6df56eed5b8..cf925141f2d 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -59,31 +59,35 @@ class Ability # Rules based on role in project if team.masters.include?(user) - rules << project_master_rules + rules += project_master_rules elsif team.developers.include?(user) - rules << project_dev_rules + rules += project_dev_rules elsif team.reporters.include?(user) - rules << project_report_rules + rules += project_report_rules elsif team.guests.include?(user) - rules << project_guest_rules + rules += project_guest_rules end if project.public? || project.internal? - rules << public_project_rules + rules += public_project_rules end if project.owner == user || user.admin? - rules << project_admin_rules + rules += project_admin_rules end if project.group && project.group.has_owner?(user) - rules << project_admin_rules + rules += project_admin_rules end - rules.flatten + if project.archived? + rules -= project_archived_rules + end + + rules end def public_project_rules @@ -125,6 +129,16 @@ class Ability ] end + def project_archived_rules + [ + :write_merge_request, + :push_code, + :push_code_to_protected_branches, + :modify_merge_request, + :admin_merge_request + ] + end + def project_master_rules project_dev_rules + [ :push_code_to_protected_branches, @@ -147,7 +161,8 @@ class Ability :change_namespace, :change_visibility_level, :rename_project, - :remove_project + :remove_project, + :archive_project ] end @@ -160,7 +175,7 @@ class Ability # Only group owner and administrators can manage group if group.has_owner?(user) || user.admin? - rules << [ + rules += [ :manage_group, :manage_namespace ] @@ -174,7 +189,7 @@ class Ability # Only namespace owner and administrators can manage it if namespace.owner == user || user.admin? - rules << [ + rules += [ :manage_namespace ] end |
