Commit e90aebe259b1f81cb2523099cab4626b9276e751

Authored by Andrew8xx8
1 parent 9bd1983e

Personal snippets controlelr refactored

app/controllers/snippets_controller.rb
1 -class SnippetsController < ProjectResourceController  
2 - before_filter :module_enabled 1 +class SnippetsController < ApplicationController
3 before_filter :snippet, only: [:show, :edit, :destroy, :update, :raw] 2 before_filter :snippet, only: [:show, :edit, :destroy, :update, :raw]
4 3
5 - # Allow read any snippet  
6 - before_filter :authorize_read_snippet!  
7 -  
8 - # Allow write(create) snippet  
9 - before_filter :authorize_write_snippet!, only: [:new, :create]  
10 -  
11 # Allow modify snippet 4 # Allow modify snippet
12 before_filter :authorize_modify_snippet!, only: [:edit, :update] 5 before_filter :authorize_modify_snippet!, only: [:edit, :update]
13 6
@@ -17,22 +10,39 @@ class SnippetsController &lt; ProjectResourceController @@ -17,22 +10,39 @@ class SnippetsController &lt; ProjectResourceController
17 respond_to :html 10 respond_to :html
18 11
19 def index 12 def index
20 - @snippets = @project.snippets.fresh.non_expired 13 + @snippets = Snippet.public.fresh.non_expired.page(params[:page]).per(20)
  14 + end
  15 +
  16 + def user_index
  17 + @user = User.find_by_username(params[:username])
  18 +
  19 + @snippets = @current_user.snippets.fresh.non_expired
  20 +
  21 + @snippets = case params[:scope]
  22 + when 'public' then
  23 + @snippets.public
  24 + when 'private' then
  25 + @snippets.private
  26 + else
  27 + @snippets
  28 + end
  29 +
  30 + @snippets = @snippets.page(params[:page]).per(20)
21 end 31 end
22 32
23 def new 33 def new
24 - @snippet = @project.snippets.new 34 + @snippet = PersonalSnippet.new
25 end 35 end
26 36
27 def create 37 def create
28 - @snippet = @project.snippets.new(params[:snippet]) 38 + @snippet = PersonalSnippet.new(params[:personal_snippet])
29 @snippet.author = current_user 39 @snippet.author = current_user
30 @snippet.save 40 @snippet.save
31 41
32 if @snippet.valid? 42 if @snippet.valid?
33 - redirect_to [@project, @snippet] 43 + redirect_to snippet_path(@snippet)
34 else 44 else
35 - respond_with(@snippet) 45 + respond_with @snippet
36 end 46 end
37 end 47 end
38 48
@@ -40,27 +50,24 @@ class SnippetsController &lt; ProjectResourceController @@ -40,27 +50,24 @@ class SnippetsController &lt; ProjectResourceController
40 end 50 end
41 51
42 def update 52 def update
43 - @snippet.update_attributes(params[:snippet]) 53 + @snippet.update_attributes(params[:personal_snippet])
44 54
45 if @snippet.valid? 55 if @snippet.valid?
46 - redirect_to [@project, @snippet] 56 + redirect_to snippet_path(@snippet)
47 else 57 else
48 - respond_with(@snippet) 58 + respond_with @snippet
49 end 59 end
50 end 60 end
51 61
52 def show 62 def show
53 - @note = @project.notes.new(noteable: @snippet)  
54 - @target_type = :snippet  
55 - @target_id = @snippet.id  
56 end 63 end
57 64
58 def destroy 65 def destroy
59 - return access_denied! unless can?(current_user, :admin_snippet, @snippet) 66 + return access_denied! unless can?(current_user, :admin_personal_snippet, @snippet)
60 67
61 @snippet.destroy 68 @snippet.destroy
62 69
63 - redirect_to project_snippet_path(@project) 70 + redirect_to snippets_path
64 end 71 end
65 72
66 def raw 73 def raw
@@ -75,18 +82,14 @@ class SnippetsController &lt; ProjectResourceController @@ -75,18 +82,14 @@ class SnippetsController &lt; ProjectResourceController
75 protected 82 protected
76 83
77 def snippet 84 def snippet
78 - @snippet ||= @project.snippets.find(params[:id]) 85 + @snippet ||= PersonalSnippet.find(params[:id])
79 end 86 end
80 87
81 def authorize_modify_snippet! 88 def authorize_modify_snippet!
82 - return render_404 unless can?(current_user, :modify_snippet, @snippet) 89 + return render_404 unless can?(current_user, :modify_personal_snippet, @snippet)
83 end 90 end
84 91
85 def authorize_admin_snippet! 92 def authorize_admin_snippet!
86 - return render_404 unless can?(current_user, :admin_snippet, @snippet)  
87 - end  
88 -  
89 - def module_enabled  
90 - return render_404 unless @project.snippets_enabled 93 + return render_404 unless can?(current_user, :admin_personal_snippet, @snippet)
91 end 94 end
92 end 95 end
app/models/ability.rb
@@ -8,7 +8,7 @@ class Ability @@ -8,7 +8,7 @@ class Ability
8 when "Issue" then issue_abilities(user, subject) 8 when "Issue" then issue_abilities(user, subject)
9 when "Note" then note_abilities(user, subject) 9 when "Note" then note_abilities(user, subject)
10 when "ProjectSnippet" then project_snippet_abilities(user, subject) 10 when "ProjectSnippet" then project_snippet_abilities(user, subject)
11 - when "Snippet" then snippet_abilities(user, subject) 11 + when "PersonalSnippet" then personal_snippet_abilities(user, subject)
12 when "MergeRequest" then merge_request_abilities(user, subject) 12 when "MergeRequest" then merge_request_abilities(user, subject)
13 when "Group", "Namespace" then group_abilities(user, subject) 13 when "Group", "Namespace" then group_abilities(user, subject)
14 when "UserTeam" then user_team_abilities(user, subject) 14 when "UserTeam" then user_team_abilities(user, subject)
@@ -135,8 +135,7 @@ class Ability @@ -135,8 +135,7 @@ class Ability
135 rules.flatten 135 rules.flatten
136 end 136 end
137 137
138 -  
139 - [:issue, :note, :project_snippet, :snippet, :merge_request].each do |name| 138 + [:issue, :note, :project_snippet, :personal_snippet, :merge_request].each do |name|
140 define_method "#{name}_abilities" do |user, subject| 139 define_method "#{name}_abilities" do |user, subject|
141 if subject.author == user 140 if subject.author == user
142 [ 141 [