abstracted 0.3.3 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,83 @@
1
+ class AbstractResourcePolicy
2
+
3
+ class Scope
4
+ attr_reader :current_user, :scope
5
+
6
+ def initialize(user, scope)
7
+ @current_user = user
8
+ @scope = scope
9
+ end
10
+
11
+ def resolve
12
+ scope.all
13
+ end
14
+ end
15
+
16
+ attr_reader :current_user, :model
17
+
18
+ def initialize(current_user, model)
19
+ @current_user = current_user
20
+ @model = model
21
+ end
22
+
23
+ def index?
24
+ # @current_user.admin?
25
+ true
26
+ end
27
+
28
+ def new?
29
+ # @current_user.admin?
30
+ true
31
+ end
32
+
33
+ def edit?
34
+ # @current_user.admin?
35
+ true
36
+ end
37
+
38
+ def show?
39
+ # @current_user.admin? or @current_user == @user
40
+ true
41
+ end
42
+
43
+ def create?
44
+ # @current_user.admin?
45
+ true
46
+ end
47
+
48
+ def update?
49
+ # @current_user.admin?
50
+ true
51
+ end
52
+
53
+ def destroy?
54
+ # return false if @current_user == @user
55
+ # @current_user.admin?
56
+ true
57
+ end
58
+
59
+ def attach?
60
+ true
61
+ end
62
+
63
+ def detach?
64
+ true
65
+ end
66
+
67
+ def prefer?
68
+ true
69
+ end
70
+
71
+ def defer?
72
+ true
73
+ end
74
+
75
+ def activate?
76
+ true
77
+ end
78
+
79
+ def deactivate?
80
+ true
81
+ end
82
+
83
+ end
@@ -87,12 +87,56 @@ end
87
87
 
88
88
 
89
89
  class UsersController < AbstractResourcesController
90
+ def current_user
91
+ # User.create! id: 1010101, login: 'test'
92
+ end
93
+ def authenticate_user!
94
+ true
95
+ end
96
+ def print
97
+ authorize resource
98
+ render text: 'done', layout: false
99
+ end
100
+ def edit
101
+ authorize resource
102
+ render text: 'done', layout: false
103
+ end
104
+ def show
105
+ authorize resource
106
+ render text: 'done', layout: false
107
+ end
108
+ def index
109
+ authorize resource
110
+ render text: 'done', layout: false
111
+ end
90
112
  def resource_params
91
113
  params.require(:user).permit(:id, :login, posts_attributes: [:id, :title, :_destroy])
92
114
  end
93
115
  end
94
116
 
95
117
  class PostsController < AbstractResourcesController
118
+ def current_user
119
+ # User.create! id: 1010101, login: 'test'
120
+ end
121
+ def print
122
+ authorize resource
123
+ render text: 'done', layout: false
124
+ end
125
+ def edit
126
+ authorize resource
127
+ render text: 'done', layout: false
128
+ end
129
+ def show
130
+ authorize resource
131
+ render text: 'done', layout: false
132
+ end
133
+ def authenticate_user!
134
+ true
135
+ end
136
+ def index
137
+ authorize resource
138
+ render text: 'done', layout: false
139
+ end
96
140
  def resource_params
97
141
  params.require(:post).permit(:id, :title, :user_id)
98
142
  end
@@ -100,15 +144,62 @@ end
100
144
 
101
145
  class User < AbstractResource
102
146
  has_many :posts
147
+ def current_user
148
+ end
103
149
  end
104
150
 
105
151
  class Post < AbstractResource
106
152
  belongs_to :user
107
153
  end
108
154
 
155
+ class UserPolicy < AbstractResourcePolicy
156
+ def print?
157
+ true
158
+ end
159
+ end
160
+
161
+ class PostPolicy < AbstractResourcePolicy
162
+ def print?
163
+ true
164
+ end
165
+ end
166
+
109
167
  Rails.application.routes.draw do
110
168
  resources :posts
111
169
  resources :users do
112
- resources :posts
170
+ member do
171
+ get :print
172
+ end
173
+ collection do
174
+ get :print
175
+ end
176
+ resources :posts do
177
+ member do
178
+ get :print
179
+ end
180
+ collection do
181
+ get :print
182
+ end
183
+ end
184
+ end
185
+
186
+ scope '/admin' do
187
+ resources :users do
188
+ member do
189
+ get :print
190
+ end
191
+ collection do
192
+ get :print
193
+ end
194
+ resources :posts do
195
+ member do
196
+ get :print
197
+ end
198
+ collection do
199
+ get :print
200
+ end
201
+ end
202
+ end
113
203
  end
204
+
114
205
  end
@@ -2,6 +2,8 @@
2
2
  require 'factory_girl_rails'
3
3
  require 'pry'
4
4
  require 'pry-nav'
5
+ require "pundit/rspec"
6
+ require 'pundit'
5
7
 
6
8
  Rails.backtrace_cleaner.remove_silencers!
7
9
  # Load support files
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abstracted
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Walther H Diechmann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-21 00:00:00.000000000 Z
11
+ date: 2016-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -272,16 +272,17 @@ files:
272
272
  - app/assets/javascripts/abstracted/.keep
273
273
  - app/assets/javascripts/abstracted/app.fab_delete.coffee
274
274
  - app/assets/javascripts/abstracted/app.materialize.coffee
275
+ - app/assets/javascripts/abstracted/app.page_scrolling.coffee
275
276
  - app/assets/javascripts/abstracted/app.resource_form.coffee
276
277
  - app/assets/javascripts/abstracted/app.resources_list.coffee
277
278
  - app/assets/javascripts/abstracted/app.shared.coffee
278
279
  - app/assets/javascripts/abstracted/app.sweetalert.coffee
279
280
  - app/assets/javascripts/abstracted/keypress.coffee
280
281
  - app/assets/javascripts/init.js.coffee
281
- - app/assets/javascripts/pagescrolling.js.coffee
282
282
  - app/assets/javascripts/triggers.coffee
283
283
  - app/assets/stylesheets/abstract_resources.css
284
284
  - app/assets/stylesheets/abstracted/.keep
285
+ - app/assets/stylesheets/balloon.min.css
285
286
  - app/assets/stylesheets/scaffold.css
286
287
  - app/assets/stylesheets/selectize.css.scss
287
288
  - app/controllers/.keep
@@ -380,6 +381,7 @@ files:
380
381
  - spec/factories/users.rb
381
382
  - spec/features/posts/manage_posts_spec.rb
382
383
  - spec/models/abstract_resource_spec.rb
384
+ - spec/policies/abstract_resources_policy.rb
383
385
  - spec/rails_helper.rb
384
386
  - spec/spec_helper.rb
385
387
  - test/integration/abstract_resource_test.rb
@@ -635,6 +637,7 @@ test_files:
635
637
  - spec/factories/users.rb
636
638
  - spec/features/posts/manage_posts_spec.rb
637
639
  - spec/models/abstract_resource_spec.rb
640
+ - spec/policies/abstract_resources_policy.rb
638
641
  - spec/rails_helper.rb
639
642
  - spec/spec_helper.rb
640
643
  - test/integration/abstract_resource_test.rb
@@ -1,93 +0,0 @@
1
- loadingPage = false
2
- currentPage = 0
3
- totalPages = 0
4
- navPaginator = ''
5
- lastPage = 0
6
- nextPage = 0
7
- pageUrl = ''
8
- contxt = null
9
- scrollTimeout = false
10
-
11
- @evalPageNumber = (elem) ->
12
- if elem
13
- try
14
- pn = elem[0].href
15
- .split('?')[1]
16
- .split('&')
17
- .filter (el,i,array) ->
18
- if el.match /^page/
19
- return el
20
- .join('')
21
- .split('=')[1]
22
- parseInt(pn)
23
- catch error
24
- pn = 0
25
-
26
- #
27
- # setVariables prepares for a great scrolling experience
28
- #
29
- @setVariables = (elem) ->
30
- navPaginator = $('nav.pagination')
31
- try
32
- pageUrl = navPaginator.find('a[rel=next]')[0].href.replace( '?', '.js?scrolling=true&')
33
- lastPage = evalPageNumber navPaginator.find('span.last a')
34
- nextPage = evalPageNumber navPaginator.find('a[rel=next]')
35
- contxt = $(elem)
36
- if nextPage > 1
37
- nextPage = 1
38
- true
39
-
40
- catch error
41
- console.log error
42
- return false
43
-
44
- #
45
- # closeToBottom checks to see if you're close to the bottom of the screen
46
- #
47
- @closeToBottom = () ->
48
- return false if navPaginator.size() == 0
49
- return ($(window).scrollTop() - parseInt($(document).height()) + parseInt($(window).height())) > -200
50
-
51
- @findNextPageToLoad = () ->
52
- nextPage += 1
53
- if nextPage > lastPage
54
- clearTimeout( scrollTimeout )
55
- return false
56
- if !pageUrl.split("?")[0].split(".js")[0].match window.location.href.split("?")[0]
57
- clearTimeout( scrollTimeout )
58
- return false
59
- pageUrl
60
- .replace /page=\d*&/, 'page=' + nextPage + '&'
61
-
62
-
63
- @loadNextPage = () ->
64
- if !loadingPage
65
- url = findNextPageToLoad()
66
- if url
67
- loadingPage = true
68
- jqxhr = $.ajax
69
- url: url
70
- type: 'GET'
71
- dataType: 'html'
72
- .done (data) ->
73
- contxt.find('tbody').append(data)
74
- loadingPage=false
75
- .fail (data) ->
76
- loadingPage = false
77
- console.log 'err'
78
- #
79
- # scroll a list - behind the scenes calling in extra pages of content
80
- #
81
- @scrollTable = (elem) ->
82
- return unless setVariables(elem)
83
- if nextPage > 0
84
- scrollHandler = () ->
85
- clearTimeout( scrollTimeout )
86
- if closeToBottom()
87
- $.when loadNextPage()
88
- .then scrollTimeout = setTimeout( scrollHandler, 250)
89
- .then navPaginator.hide()
90
- else
91
- setTimeout( scrollHandler, 250)
92
-
93
- scrollTimeout = setTimeout( scrollHandler, 250)