diff options
author | http://jneen.net/ <jneen@jneen.net> | 2016-08-16 13:08:14 -0700 |
---|---|---|
committer | http://jneen.net/ <jneen@jneen.net> | 2016-08-30 11:39:22 -0700 |
commit | d87c1d550f4870275432698e3cb19033c6855a15 (patch) | |
tree | ecc6559dd15a53e4ca4f0ce353479db6d5a573fb /app/policies | |
parent | 3656d3b88a01a50a5eaf66a16b6ac47d3c58352c (diff) | |
download | gitlab-ce-d87c1d550f4870275432698e3cb19033c6855a15.tar.gz |
port notes and project snippets
Diffstat (limited to 'app/policies')
-rw-r--r-- | app/policies/note_policy.rb | 19 | ||||
-rw-r--r-- | app/policies/project_snippet_policy.rb | 20 |
2 files changed, 39 insertions, 0 deletions
diff --git a/app/policies/note_policy.rb b/app/policies/note_policy.rb new file mode 100644 index 00000000000..83847466ee2 --- /dev/null +++ b/app/policies/note_policy.rb @@ -0,0 +1,19 @@ +class NotePolicy < BasePolicy + def rules + delegate! @subject.project + + return unless @user + + if @subject.author == @user + can! :read_note + can! :update_note + can! :admin_note + can! :resolve_note + end + + if @subject.for_merge_request? && + @subject.noteable.author == @user + can! :resolve_note + end + end +end diff --git a/app/policies/project_snippet_policy.rb b/app/policies/project_snippet_policy.rb new file mode 100644 index 00000000000..57acccfafd9 --- /dev/null +++ b/app/policies/project_snippet_policy.rb @@ -0,0 +1,20 @@ +class ProjectSnippetPolicy < BasePolicy + def rules + can! :read_project_snippet if @subject.public? + return unless @user + + if @user && @subject.author == @user || @user.admin? + can! :read_project_snippet + can! :update_project_snippet + can! :admin_project_snippet + end + + if @subject.internal? && !@user.external? + can! :read_project_snippet + end + + if @subject.private? && @subject.project.team.member?(@user) + can! :read_project_snippet + end + end +end |