diff options
author | Dmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com> | 2011-10-09 01:36:38 +0400 |
---|---|---|
committer | Dmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com> | 2011-10-09 01:36:38 +0400 |
commit | e98c77857f9f765d1854b92c2dc33049504a596d (patch) | |
tree | 52fbfc1cdb55df21843965479c97be0c91121a9a /app/models/ability.rb | |
parent | 0f43e98ef8c2da8908b1107f75b67cda2572c2c4 (diff) |
init commitv0.9.4
Diffstat (limited to 'app/models/ability.rb')
-rw-r--r-- | app/models/ability.rb | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/app/models/ability.rb b/app/models/ability.rb new file mode 100644 index 00000000000..0a2c45f1289 --- /dev/null +++ b/app/models/ability.rb @@ -0,0 +1,34 @@ +class Ability + def self.allowed(object, subject) + case subject.class.name + when "Project" then project_abilities(object, subject) + else [] + end + end + + def self.project_abilities(user, project) + rules = [] + + rules << [ + :read_project, + :read_issue, + :read_team_member, + :read_note + ] if project.readers.include?(user) + + rules << [ + :write_project, + :write_issue, + :write_note + ] if project.writers.include?(user) + + rules << [ + :admin_project, + :admin_issue, + :admin_team_member, + :admin_note + ] if project.admins.include?(user) + + rules.flatten + end +end |