1 class Pettanr.ActionFilter
\r
4 # return sign in form if invalid url
\r
5 # return null if url is valid
\r
7 return @guest_url() if @is_deny('reader', params) or @is_deny('resource_reader', params) or @is_deny('user', params)
\r
8 return @new_author_url() if @is_deny('author', params)
\r
9 return @new_artist_url() if @is_deny('artist', params)
\r
18 @my_filters: (role, params) ->
\r
20 c = f[params['controller']] || {}
\r
24 @before_filter: (action_name, filter_action_names) ->
\r
25 _.contains(filter_action_names, action_name)
\r
27 # return false if allow
\r
28 # return true if deny
\r
29 @is_deny: (role, params) ->
\r
31 if not Pettanr.cache.operators[n]() # ex: operators.is_user()
\r
32 filter = @my_filters(role, params)
\r
33 if @before_filter(params['action'], filter)
\r
40 @new_author_url: () ->
\r
43 @new_artist_url: () ->
\r
46 @suply_default: (reader, resource_reader, user, author, artist) ->
\r
47 author_filter = if _.isFunction(author)
\r
50 _.union(@default_author_filters, author)
\r
51 artist_filter = if _.isFunction(artist)
\r
54 _.union(@default_artist_filters, artist)
\r
56 reader: _.union(@default_reader_filters, reader),
\r
57 resource_reader: _.union(@default_resource_reader_filters, resource_reader),
\r
58 user: _.union(@default_user_filters, user),
\r
59 author: author_filter,
\r
60 artist: artist_filter
\r
63 @default_reader_filters = ['index', 'show']
\r
64 @default_resource_reader_filters = []
\r
65 @default_user_filters = ['new', 'create', 'edit', 'update', 'destroy']
\r
66 @default_author_filters = ['new', 'create', 'edit', 'update', 'destroy']
\r
67 @default_artist_filters = []
\r
71 folders: @suply_default(
\r
78 scrolls: @suply_default(
\r
79 ['play', 'by_panel', 'by_author'],
\r
85 scroll_panels: @suply_default(
\r
86 ['by_panel', 'by_scroll', 'by_author'],
\r
92 comics: @suply_default(
\r
93 ['play', 'by_story', 'by_author'],
\r
99 comic_stories: @suply_default(
\r
100 ['by_story', 'by_comic', 'by_author'],
\r
106 stories: @suply_default(
\r
107 ['play', 'by_comic', 'by_sheet', 'by_author'],
\r
113 story_sheets: @suply_default(
\r
114 ['by_story', 'by_sheet', 'by_author'],
\r
120 sheets: @suply_default(
\r
121 ['play', 'by_story', 'by_panel', 'by_author'],
\r
127 sheet_panels: @suply_default(
\r
128 ['by_panel', 'by_sheet', 'by_author'],
\r
134 panels: @suply_default(
\r
135 ['by_scroll', 'by_sheet', 'by_author', 'by_speech_balloon_template'],
\r
141 panel_pictures: @suply_default(
\r
142 ['by_panel', 'by_author'],
\r
148 speech_balloons: @suply_default(
\r
149 ['by_panel', 'by_author', 'by_speech_balloon_template'],
\r
155 speeches: @suply_default(
\r
156 ['by_author', 'by_speech_balloon', 'by_speech_balloon_template', 'by_writing_format'],
\r
162 balloons: @suply_default(
\r
169 ground_pictures: @suply_default(
\r
170 ['by_panel', 'by_author'],
\r
176 ground_colors: @suply_default(
\r
177 ['by_panel', 'by_author'],
\r
183 original_pictures: @suply_default(
\r
188 ['index', 'new', 'create', 'edit', 'update', 'destroy']
\r
190 pictures: @suply_default(
\r
191 ['credit', 'search'],
\r
197 resource_pictures: @suply_default(
\r
198 ['credit', 'by_original_picture', 'by_license_group', 'by_license', 'by_artist'],
\r
202 ['new', 'create', 'edit', 'update', 'destroy']
\r
204 speech_balloon_templates: @suply_default(
\r
205 ['by_panel', 'by_system_picture'],
\r
211 writing_formats: @suply_default(
\r
212 ['by_system_picture'],
\r
218 license_groups: @suply_default(
\r
219 ['by_resource_picture'],
\r
225 licenses: @suply_default(
\r
226 ['by_license_group', 'by_system_picture'],
\r
232 authors: @suply_default(
\r
237 ['edit', 'update', 'destroy']
\r
241 artists: @suply_default(
\r
247 ['edit', 'update', 'destroy']
\r
249 system_pictures: @suply_default(
\r
256 home: @suply_default(
\r
258 'profile', 'configure', 'create_token', 'delete_token',
\r
259 'scrolls', 'scroll_panels', 'comics', 'comic_stories', 'stories', 'story_sheets', 'sheets', 'sheet_panels',
\r
260 'panels', 'panel_pictures', 'speech_balloons', 'balloons', 'speeches', 'ground_pictures', 'ground_colors'
\r
263 'scrolls', 'scroll_panels', 'comics', 'comic_stories', 'stories', 'story_sheets', 'sheets', 'sheet_panels',
\r
264 'panels', 'panel_pictures', 'speech_balloons', 'balloons', 'speeches', 'ground_pictures', 'ground_colors'
\r
272 @blog_filters: () ->
\r
273 default_reader_filters = []
\r
274 default_user_filters = ['new', 'create', 'edit', 'update', 'destroy']
\r
275 default_author_filters = ['new', 'create', 'edit', 'update', 'destroy']
\r
278 reader: _.union(default_reader_filters, []),
\r
279 resource_reader: _.union(default_resource_reader_filters, []),
\r
280 user: _.union(default_user_filters, []),
\r
281 author: _.union(default_author_filters, [])
\r
284 user: _.union(default_user_filters, []),
\r
285 author: _.union(default_author_filters, [])
\r