+ # access block\r
+ # return sign in form if invalid url\r
+ # return null if url is valid\r
+ @test: (params, operators) ->\r
+ return @guest_url() if @is_deny('reader', params, operators) or @is_deny('resource_reader', params, operators) or @is_deny('user', params, operators)\r
+ return @new_author_url() if @is_deny('author', params, operators)\r
+ return @new_artist_url() if @is_deny('artist', params, operators)\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, operators) ->\r
+ n = 'is_' + role\r
+ if not 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_seeeions/new'\r
+ \r
+ @new_author_url: () ->\r
+ 'authors/new'\r
+ \r
+ @new_artist_url: () ->\r
+ 'artists/new'\r
+ \r
+ @suply_default: (reader, resource_reader, user, author, artist) ->\r
+ author_filter = if _.isFunction(author)\r
+ author()\r
+ else\r
+ _.union(@default_author_filters, author)\r
+ artist_filter = if _.isFunction(artist)\r
+ artist()\r
+ else\r
+ _.union(@default_artist_filters, artist)\r