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
190 ['index', 'new', 'create', 'edit', 'update', 'destroy']
\r
192 pictures: @suply_default(
\r
193 ['credit', 'search'],
\r
199 resource_pictures: @suply_default(
\r
200 ['credit', 'by_original_picture', 'by_license_group', 'by_license', 'by_artist'],
\r
204 ['new', 'create', 'edit', 'update', 'destroy']
\r
206 speech_balloon_templates: @suply_default(
\r
207 ['by_panel', 'by_system_picture'],
\r
213 writing_formats: @suply_default(
\r
214 ['by_system_picture'],
\r
220 license_groups: @suply_default(
\r
221 ['by_resource_picture'],
\r
227 licenses: @suply_default(
\r
228 ['by_license_group', 'by_system_picture'],
\r
234 authors: @suply_default(
\r
239 ['edit', 'update', 'destroy']
\r
245 artists: @suply_default(
\r
253 ['edit', 'update', 'destroy']
\r
255 system_pictures: @suply_default(
\r
262 home: @suply_default(
\r
264 'profile', 'configure', 'create_token', 'delete_token',
\r
265 'scrolls', 'scroll_panels', 'comics', 'comic_stories', 'stories', 'story_sheets', 'sheets', 'sheet_panels',
\r
266 'panels', 'panel_pictures', 'speech_balloons', 'balloons', 'speeches', 'ground_pictures', 'ground_colors'
\r
269 'scrolls', 'scroll_panels', 'comics', 'comic_stories', 'stories', 'story_sheets', 'sheets', 'sheet_panels',
\r
270 'panels', 'panel_pictures', 'speech_balloons', 'balloons', 'speeches', 'ground_pictures', 'ground_colors'
\r
278 @blog_filters: () ->
\r
279 default_reader_filters = []
\r
280 default_user_filters = ['new', 'create', 'edit', 'update', 'destroy']
\r
281 default_author_filters = ['new', 'create', 'edit', 'update', 'destroy']
\r
284 reader: _.union(default_reader_filters, []),
\r
285 resource_reader: _.union(default_resource_reader_filters, []),
\r
286 user: _.union(default_user_filters, []),
\r
287 author: _.union(default_author_filters, [])
\r
290 user: _.union(default_user_filters, []),
\r
291 author: _.union(default_author_filters, [])
\r