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: (mode, reader, resource_reader, user, author, artist) ->
\r
47 author_filter = if _.isFunction(author)
\r
50 _.union(@default_filters[mode].author, author)
\r
51 artist_filter = if _.isFunction(artist)
\r
54 _.union(@default_filters[mode].artist, artist)
\r
56 reader: _.union(@default_filters[mode].reader, reader),
\r
57 resource_reader: _.union(@default_filters[mode].resource_reader, resource_reader),
\r
58 user: _.union(@default_filters[mode].user, user),
\r
59 author: author_filter,
\r
60 artist: artist_filter
\r
63 @suply_sns_default: (reader, resource_reader, user, author, artist) ->
\r
64 @suply_default('sns', reader, resource_reader, user, author, artist)
\r
66 @suply_blog_default: (reader, resource_reader, user, author, artist) ->
\r
67 @suply_default('blog', reader, resource_reader, user, author, artist)
\r
69 @default_filters = {
\r
71 reader: ['index', 'show']
\r
73 user: ['new', 'create', 'edit', 'update', 'destroy']
\r
74 author: ['new', 'create', 'edit', 'update', 'destroy']
\r
80 user: ['new', 'create', 'edit', 'update', 'destroy']
\r
81 author: ['new', 'create', 'edit', 'update', 'destroy']
\r
88 folders: @suply_sns_default(
\r
95 scrolls: @suply_sns_default(
\r
96 ['play', 'by_panel', 'by_author'],
\r
102 scroll_panels: @suply_sns_default(
\r
103 ['by_panel', 'by_scroll', 'by_author'],
\r
109 comics: @suply_sns_default(
\r
110 ['play', 'by_story', 'by_author'],
\r
116 comic_stories: @suply_sns_default(
\r
117 ['by_story', 'by_comic', 'by_author'],
\r
123 stories: @suply_sns_default(
\r
124 ['play', 'by_comic', 'by_sheet', 'by_author'],
\r
130 story_sheets: @suply_sns_default(
\r
131 ['by_story', 'by_sheet', 'by_author'],
\r
137 sheets: @suply_sns_default(
\r
138 ['play', 'by_story', 'by_panel', 'by_author'],
\r
144 sheet_panels: @suply_sns_default(
\r
145 ['by_panel', 'by_sheet', 'by_author'],
\r
151 panels: @suply_sns_default(
\r
152 ['by_scroll', 'by_sheet', 'by_author', 'by_speech_balloon_template'],
\r
158 panel_pictures: @suply_sns_default(
\r
159 ['by_panel', 'by_author'],
\r
165 speech_balloons: @suply_sns_default(
\r
166 ['by_panel', 'by_author', 'by_speech_balloon_template'],
\r
172 speeches: @suply_sns_default(
\r
173 ['by_author', 'by_speech_balloon', 'by_speech_balloon_template', 'by_writing_format'],
\r
179 balloons: @suply_sns_default(
\r
186 ground_pictures: @suply_sns_default(
\r
187 ['by_panel', 'by_author'],
\r
193 ground_colors: @suply_sns_default(
\r
194 ['by_panel', 'by_author'],
\r
200 original_pictures: @suply_sns_default(
\r
207 ['index', 'new', 'create', 'edit', 'update', 'destroy']
\r
209 pictures: @suply_sns_default(
\r
210 ['credit', 'search'],
\r
216 resource_pictures: @suply_sns_default(
\r
217 ['credit', 'by_original_picture', 'by_license_group', 'by_license', 'by_artist'],
\r
221 ['new', 'create', 'edit', 'update', 'destroy']
\r
223 speech_balloon_templates: @suply_sns_default(
\r
224 ['by_panel', 'by_system_picture'],
\r
230 writing_formats: @suply_sns_default(
\r
231 ['by_system_picture'],
\r
237 license_groups: @suply_sns_default(
\r
238 ['by_resource_picture'],
\r
244 licenses: @suply_sns_default(
\r
245 ['by_license_group', 'by_system_picture'],
\r
251 authors: @suply_sns_default(
\r
256 ['edit', 'update', 'destroy']
\r
262 artists: @suply_sns_default(
\r
270 ['edit', 'update', 'destroy']
\r
272 system_pictures: @suply_sns_default(
\r
279 home: @suply_sns_default(
\r
281 'profile', 'configure', 'create_token', 'delete_token',
\r
282 'scrolls', 'scroll_panels', 'comics', 'comic_stories', 'stories', 'story_sheets', 'sheets', 'sheet_panels',
\r
283 'panels', 'panel_pictures', 'speech_balloons', 'balloons', 'speeches', 'ground_pictures', 'ground_colors'
\r
286 'scrolls', 'scroll_panels', 'comics', 'comic_stories', 'stories', 'story_sheets', 'sheets', 'sheet_panels',
\r
287 'panels', 'panel_pictures', 'speech_balloons', 'balloons', 'speeches', 'ground_pictures', 'ground_colors'
\r
295 @blog_filters: () ->
\r
297 folders: @suply_blog_default(
\r
304 scrolls: @suply_blog_default(
\r
311 scroll_panels: @suply_blog_default(
\r
318 comics: @suply_blog_default(
\r
325 comic_stories: @suply_blog_default(
\r
332 stories: @suply_blog_default(
\r
339 story_sheets: @suply_blog_default(
\r
346 sheets: @suply_blog_default(
\r
353 sheet_panels: @suply_blog_default(
\r
360 panels: @suply_blog_default(
\r
367 panel_pictures: @suply_blog_default(
\r
374 speech_balloons: @suply_blog_default(
\r
381 speeches: @suply_blog_default(
\r
388 balloons: @suply_blog_default(
\r
395 ground_pictures: @suply_blog_default(
\r
402 ground_colors: @suply_blog_default(
\r
409 original_pictures: @suply_blog_default(
\r
416 ['index', 'new', 'create', 'edit', 'update', 'destroy']
\r
418 pictures: @suply_blog_default(
\r
425 resource_pictures: @suply_blog_default(
\r
430 ['new', 'create', 'edit', 'update', 'destroy']
\r
432 speech_balloon_templates: @suply_blog_default(
\r
439 writing_formats: @suply_blog_default(
\r
446 license_groups: @suply_blog_default(
\r
453 licenses: @suply_blog_default(
\r
460 authors: @suply_blog_default(
\r
465 ['edit', 'update', 'destroy']
\r
471 artists: @suply_blog_default(
\r
479 ['edit', 'update', 'destroy']
\r
481 system_pictures: @suply_blog_default(
\r
488 home: @suply_blog_default(
\r
490 'profile', 'configure', 'create_token', 'delete_token',
\r
491 'scrolls', 'scroll_panels', 'comics', 'comic_stories', 'stories', 'story_sheets', 'sheets', 'sheet_panels',
\r
492 'panels', 'panel_pictures', 'speech_balloons', 'balloons', 'speeches', 'ground_pictures', 'ground_colors'
\r
495 'scrolls', 'scroll_panels', 'comics', 'comic_stories', 'stories', 'story_sheets', 'sheets', 'sheet_panels',
\r
496 'panels', 'panel_pictures', 'speech_balloons', 'balloons', 'speeches', 'ground_pictures', 'ground_colors'
\r