class Pettanr.ActionFilter\r
\r
- @suply_default: (reader, resource_reader, user, author) ->\r
+ # access block\r
+ # return sign in form if invalid url\r
+ # return null if url is valid\r
+ @test: (params) ->\r
+ return @guest_url() if @is_deny('reader', params) or @is_deny('resource_reader', params) or @is_deny('user', params)\r
+ return @new_author_url() if @is_deny('author', params)\r
+ return @new_artist_url() if @is_deny('artist', params)\r
+ null\r
+ \r
+ @filters: () ->\r
+ if Pettanr.is_sns()\r
+ @sns_filters()\r
+ else\r
+ @blog_filters()\r
+ \r
+ @my_filters: (role, params) ->\r
+ f = @filters()\r
+ c = f[params['controller']] || {}\r
+ r = c[role]\r
+ r\r
+ \r
+ @before_filter: (action_name, filter_action_names) ->\r
+ _.contains(filter_action_names, action_name)\r
+ \r
+ # return false if allow\r
+ # return true if deny\r
+ @is_deny: (role, params) ->\r
+ n = 'is_' + role\r
+ if not Pettanr.cache.operators[n]() # ex: operators.is_user()\r
+ filter = @my_filters(role, params)\r
+ if @before_filter(params['action'], filter)\r
+ return true\r
+ false\r
+ \r
+ @guest_url: () ->\r
+ 'user_sessions/new'\r
+ \r
+ @new_author_url: () ->\r
+ 'authors/new'\r
+ \r
+ @new_artist_url: () ->\r
+ 'artists/new'\r
+ \r
+ @suply_default: (mode, reader, resource_reader, user, author, artist) ->\r
+ author_filter = if _.isFunction(author)\r
+ author()\r
+ else\r
+ _.union(@default_filters[mode].author, author)\r
+ artist_filter = if _.isFunction(artist)\r
+ artist()\r
+ else\r
+ _.union(@default_filters[mode].artist, artist)\r
{\r
- reader: _.union(default_reader_filters, reader),\r
- resource_reader: _.union(default_resource_reader_filters, resource_reader),\r
- user: _.union(default_user_filters, user),\r
- author: _.union(default_author_filters, author)\r
+ reader: _.union(@default_filters[mode].reader, reader),\r
+ resource_reader: _.union(@default_filters[mode].resource_reader, resource_reader),\r
+ user: _.union(@default_filters[mode].user, user),\r
+ author: author_filter,\r
+ artist: artist_filter\r
+ }\r
+ \r
+ @suply_sns_default: (reader, resource_reader, user, author, artist) ->\r
+ @suply_default('sns', reader, resource_reader, user, author, artist)\r
+ \r
+ @suply_blog_default: (reader, resource_reader, user, author, artist) ->\r
+ @suply_default('blog', reader, resource_reader, user, author, artist)\r
+ \r
+ @default_filters = {\r
+ sns: {\r
+ reader: ['index', 'show']\r
+ resource_reader: []\r
+ user: ['new', 'create', 'edit', 'update', 'destroy']\r
+ author: ['new', 'create', 'edit', 'update', 'destroy']\r
+ artist: []\r
+ },\r
+ blog: {\r
+ reader: []\r
+ resource_reader: []\r
+ user: ['new', 'create', 'edit', 'update', 'destroy']\r
+ author: ['new', 'create', 'edit', 'update', 'destroy']\r
+ artist: []\r
}\r
+ }\r
\r
@sns_filters: () ->\r
- default_reader_filters = ['index', 'show']\r
- default_resource_reader_filters = []\r
- default_user_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
- default_author_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
{\r
- 'folders': {\r
- reader: _.union(default_reader_filters, ['root', 'watch']),\r
- resource_reader: _.union(default_resource_reader_filters, []),\r
- user: _.union(default_user_filters, []),\r
- author: _.union(default_author_filters, [])\r
- },\r
- 'scrolls': {\r
- reader: _.union(default_reader_filters, ['play', 'by_panel', 'by_author']),\r
- resource_reader: _.union(default_resource_reader_filters, []),\r
- user: _.union(default_user_filters, []),\r
- author: _.union(default_author_filters, [])\r
- },\r
- scroll_panels: {\r
- reader: _.union(default_reader_filters, ['by_panel', 'by_scroll', 'by_author']),\r
- resource_reader: _.union(default_resource_reader_filters, []),\r
- user: _.union(default_user_filters, []),\r
- author: _.union(default_author_filters, [])\r
- },\r
- comics: {\r
- },\r
- comic_stories: {\r
- },\r
- stories: {\r
- },\r
- story_sheets: {\r
- },\r
- sheets: {\r
- },\r
- sheet_panels: {\r
- },\r
- panels: {\r
- },\r
- panel_pictures: {\r
- },\r
- speech_balloons: {\r
- },\r
- speeches: {\r
- },\r
- balloons: {\r
- },\r
- ground_pictures: {\r
- },\r
- ground_colors: {\r
- },\r
- original_pictures: {\r
- },\r
- pictures: {\r
- },\r
- resource_pictures: {\r
- },\r
- speech_balloon_templates: {\r
- },\r
- writing_formats: {\r
- },\r
- license_groups: {\r
- },\r
- licenses: {\r
- },\r
- authors: {\r
- },\r
- artists: {\r
- },\r
- system_pictures: {\r
- },\r
- home: {\r
- },\r
+ folders: @suply_sns_default(\r
+ ['root', 'watch'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ scrolls: @suply_sns_default(\r
+ ['play', 'by_panel', 'by_author'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ scroll_panels: @suply_sns_default(\r
+ ['by_panel', 'by_scroll', 'by_author'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ comics: @suply_sns_default(\r
+ ['play', 'by_story', 'by_author'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ comic_stories: @suply_sns_default(\r
+ ['by_story', 'by_comic', 'by_author'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ stories: @suply_sns_default(\r
+ ['play', 'by_comic', 'by_sheet', 'by_author'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ story_sheets: @suply_sns_default(\r
+ ['by_story', 'by_sheet', 'by_author'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ sheets: @suply_sns_default(\r
+ ['play', 'by_story', 'by_panel', 'by_author'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ sheet_panels: @suply_sns_default(\r
+ ['by_panel', 'by_sheet', 'by_author'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ panels: @suply_sns_default(\r
+ ['by_scroll', 'by_sheet', 'by_author', 'by_speech_balloon_template'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ panel_pictures: @suply_sns_default(\r
+ ['by_panel', 'by_author'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ speech_balloons: @suply_sns_default(\r
+ ['by_panel', 'by_author', 'by_speech_balloon_template'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ speeches: @suply_sns_default(\r
+ ['by_author', 'by_speech_balloon', 'by_speech_balloon_template', 'by_writing_format'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ balloons: @suply_sns_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ ground_pictures: @suply_sns_default(\r
+ ['by_panel', 'by_author'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ ground_colors: @suply_sns_default(\r
+ ['by_panel', 'by_author'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ original_pictures: @suply_sns_default(\r
+ ['history'], \r
+ [], \r
+ [], \r
+ () ->\r
+ []\r
+ , \r
+ ['index', 'new', 'create', 'edit', 'update', 'destroy']\r
+ ),\r
+ pictures: @suply_sns_default(\r
+ ['credit', 'search'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ resource_pictures: @suply_sns_default(\r
+ ['credit', 'by_original_picture', 'by_license_group', 'by_license', 'by_artist'], \r
+ [], \r
+ [], \r
+ [], \r
+ ['new', 'create', 'edit', 'update', 'destroy']\r
+ ),\r
+ speech_balloon_templates: @suply_sns_default(\r
+ ['by_panel', 'by_system_picture'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ writing_formats: @suply_sns_default(\r
+ ['by_system_picture'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ license_groups: @suply_sns_default(\r
+ ['by_resource_picture'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ licenses: @suply_sns_default(\r
+ ['by_license_group', 'by_system_picture'], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ authors: @suply_sns_default(\r
+ [], \r
+ [], \r
+ [], \r
+ () ->\r
+ ['edit', 'update', 'destroy']\r
+ , \r
+ () ->\r
+ []\r
+ , \r
+ ),\r
+ artists: @suply_sns_default(\r
+ [], \r
+ [], \r
+ [], \r
+ () ->\r
+ []\r
+ , \r
+ () ->\r
+ ['edit', 'update', 'destroy']\r
+ ),\r
+ system_pictures: @suply_sns_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ home: @suply_sns_default(\r
+ [\r
+ 'profile', 'configure', 'create_token', 'delete_token', \r
+ 'scrolls', 'scroll_panels', 'comics', 'comic_stories', 'stories', 'story_sheets', 'sheets', 'sheet_panels', \r
+ 'panels', 'panel_pictures', 'speech_balloons', 'balloons', 'speeches', 'ground_pictures', 'ground_colors'\r
+ ], \r
+ [\r
+ 'scrolls', 'scroll_panels', 'comics', 'comic_stories', 'stories', 'story_sheets', 'sheets', 'sheet_panels', \r
+ 'panels', 'panel_pictures', 'speech_balloons', 'balloons', 'speeches', 'ground_pictures', 'ground_colors'\r
+ ], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
}\r
\r
@blog_filters: () ->\r
- default_reader_filters = []\r
- default_user_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
- default_author_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
{\r
- 'folders': {\r
- reader: _.union(default_reader_filters, []),\r
- resource_reader: _.union(default_resource_reader_filters, []),\r
- user: _.union(default_user_filters, []),\r
- author: _.union(default_author_filters, [])\r
- },\r
- 'scrolls': {\r
- user: _.union(default_user_filters, []),\r
- author: _.union(default_author_filters, [])\r
- },\r
+ folders: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ scrolls: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ scroll_panels: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ comics: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ comic_stories: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ stories: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ story_sheets: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ sheets: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ sheet_panels: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ panels: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ panel_pictures: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ speech_balloons: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ speeches: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ balloons: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ ground_pictures: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ ground_colors: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ original_pictures: @suply_blog_default(\r
+ ['history'], \r
+ [], \r
+ [], \r
+ () ->\r
+ []\r
+ , \r
+ ['index', 'new', 'create', 'edit', 'update', 'destroy']\r
+ ),\r
+ pictures: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ resource_pictures: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ ['new', 'create', 'edit', 'update', 'destroy']\r
+ ),\r
+ speech_balloon_templates: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ writing_formats: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ license_groups: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ licenses: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ authors: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ () ->\r
+ ['edit', 'update', 'destroy']\r
+ , \r
+ () ->\r
+ []\r
+ , \r
+ ),\r
+ artists: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ () ->\r
+ []\r
+ , \r
+ () ->\r
+ ['edit', 'update', 'destroy']\r
+ ),\r
+ system_pictures: @suply_blog_default(\r
+ [], \r
+ [], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
+ home: @suply_blog_default(\r
+ [\r
+ 'profile', 'configure', 'create_token', 'delete_token', \r
+ 'scrolls', 'scroll_panels', 'comics', 'comic_stories', 'stories', 'story_sheets', 'sheets', 'sheet_panels', \r
+ 'panels', 'panel_pictures', 'speech_balloons', 'balloons', 'speeches', 'ground_pictures', 'ground_colors'\r
+ ], \r
+ [\r
+ 'scrolls', 'scroll_panels', 'comics', 'comic_stories', 'stories', 'story_sheets', 'sheets', 'sheet_panels', \r
+ 'panels', 'panel_pictures', 'speech_balloons', 'balloons', 'speeches', 'ground_pictures', 'ground_colors'\r
+ ], \r
+ [], \r
+ [], \r
+ []\r
+ ),\r
}\r
\r