From 96d49bf04ce77c975fe500f4d961e4a1ffed4c26 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Sun, 30 Dec 2012 14:43:00 +0200 Subject: Use sdoc to generate application code documentation --- doc/code/classes/Ability.html | 507 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 507 insertions(+) create mode 100644 doc/code/classes/Ability.html (limited to 'doc/code/classes/Ability.html') diff --git a/doc/code/classes/Ability.html b/doc/code/classes/Ability.html new file mode 100644 index 00000000000..c50e5d3e708 --- /dev/null +++ b/doc/code/classes/Ability.html @@ -0,0 +1,507 @@ + + + + + Ability + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + +
Methods
+
+ +
A
+
+ +
+ +
G
+
+ +
+ +
P
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + +
Class Public methods
+ +
+
+ + allowed(object, subject) + + +
+ + +
+ +
+ + + + + + +
+ + +
+
# File app/models/ability.rb, line 3
+def allowed(object, subject)
+  case subject.class.name
+  when "Project" then project_abilities(object, subject)
+  when "Issue" then issue_abilities(object, subject)
+  when "Note" then note_abilities(object, subject)
+  when "Snippet" then snippet_abilities(object, subject)
+  when "MergeRequest" then merge_request_abilities(object, subject)
+  when "Group" then group_abilities(object, subject)
+  else []
+  end
+end
+
+
+ +
+ +
+
+ + group_abilities(user, group) + + +
+ + +
+ +
+ + + + + + +
+ + +
+
# File app/models/ability.rb, line 107
+def group_abilities user, group
+  rules = []
+
+  rules << [
+    :manage_group
+  ] if group.owner == user
+
+  rules.flatten
+end
+
+
+ +
+ +
+
+ + project_abilities(user, project) + + +
+ + +
+ +
+ + + + + + +
+ + +
+
# File app/models/ability.rb, line 15
+def project_abilities(user, project)
+  rules = []
+
+  # Rules based on role in project
+  if project.master_access_for?(user)
+    rules << project_master_rules
+
+  elsif project.dev_access_for?(user)
+    rules << project_dev_rules
+
+  elsif project.report_access_for?(user)
+    rules << project_report_rules
+
+  elsif project.guest_access_for?(user)
+    rules << project_guest_rules
+  end
+
+  if project.namespace
+    # If user own project namespace
+    # (Ex. group owner or account owner)
+    if project.namespace.owner == user
+      rules << project_admin_rules
+    end
+  else
+    # For compatibility with global projects
+    # use projects.owner_id
+    if project.owner == user
+      rules << project_admin_rules
+    end
+  end
+
+
+  rules.flatten
+end
+
+
+ +
+ +
+
+ + project_admin_rules() + + +
+ + +
+ +
+ + + + + + +
+ + +
+
# File app/models/ability.rb, line 99
+def project_admin_rules
+  project_master_rules + [
+    :change_namespace,
+    :rename_project,
+    :remove_project
+  ]
+end
+
+
+ +
+ +
+
+ + project_dev_rules() + + +
+ + +
+ +
+ + + + + + +
+ + +
+
# File app/models/ability.rb, line 74
+def project_dev_rules
+  project_report_rules + [
+    :write_wiki,
+    :push_code
+  ]
+end
+
+
+ +
+ +
+
+ + project_guest_rules() + + +
+ + +
+ +
+ + + + + + +
+ + +
+
# File app/models/ability.rb, line 50
+def project_guest_rules
+  [
+    :read_project,
+    :read_wiki,
+    :read_issue,
+    :read_milestone,
+    :read_snippet,
+    :read_team_member,
+    :read_merge_request,
+    :read_note,
+    :write_project,
+    :write_issue,
+    :write_note
+  ]
+end
+
+
+ +
+ +
+
+ + project_master_rules() + + +
+ + +
+ +
+ + + + + + +
+ + +
+
# File app/models/ability.rb, line 81
+def project_master_rules
+  project_dev_rules + [
+    :push_code_to_protected_branches,
+    :modify_issue,
+    :modify_snippet,
+    :modify_merge_request,
+    :admin_issue,
+    :admin_milestone,
+    :admin_snippet,
+    :admin_team_member,
+    :admin_merge_request,
+    :admin_note,
+    :accept_mr,
+    :admin_wiki,
+    :admin_project
+  ]
+end
+
+
+ +
+ +
+
+ + project_report_rules() + + +
+ + +
+ +
+ + + + + + +
+ + +
+
# File app/models/ability.rb, line 66
+def project_report_rules
+  project_guest_rules + [
+    :download_code,
+    :write_merge_request,
+    :write_snippet
+  ]
+end
+
+
+ +
+
+ +
+ + \ No newline at end of file -- cgit v1.2.1