Commit 3cce570c4c63efc1d0e2e264bdd1e4c2b4a2e530

Authored by Dmitriy Zaporozhets
1 parent 20ce3980

Allow forking of public projects by authenticated users. Fixes #4152

Showing 1 changed file with 22 additions and 1 deletions   Show diff stats
app/models/ability.rb
@@ -38,10 +38,14 @@ class Ability @@ -38,10 +38,14 @@ class Ability
38 elsif team.reporters.include?(user) 38 elsif team.reporters.include?(user)
39 rules << project_report_rules 39 rules << project_report_rules
40 40
41 - elsif team.guests.include?(user) or project.public? 41 + elsif team.guests.include?(user)
42 rules << project_guest_rules 42 rules << project_guest_rules
43 end 43 end
44 44
  45 + if project.public?
  46 + rules << public_project_rules
  47 + end
  48 +
45 if project.owner == user || user.admin? 49 if project.owner == user || user.admin?
46 rules << project_admin_rules 50 rules << project_admin_rules
47 end 51 end
@@ -49,6 +53,23 @@ class Ability @@ -49,6 +53,23 @@ class Ability
49 rules.flatten 53 rules.flatten
50 end 54 end
51 55
  56 + def public_project_rules
  57 + [
  58 + :download_code,
  59 + :fork_project,
  60 + :read_project,
  61 + :read_wiki,
  62 + :read_issue,
  63 + :read_milestone,
  64 + :read_project_snippet,
  65 + :read_team_member,
  66 + :read_merge_request,
  67 + :read_note,
  68 + :write_issue,
  69 + :write_note
  70 + ]
  71 + end
  72 +
52 def project_guest_rules 73 def project_guest_rules
53 [ 74 [
54 :read_project, 75 :read_project,