-class Pettanr.RouterFilter\r
- \r
- filters: () ->\r
- if Pettanr.is_sns()\r
- Pettanr.ActionFilter.sns_filters()\r
- else\r
- Pettanr.ActionFilter.blog_filters()\r
- \r
- my_filters: (role, params) ->\r
- f = @filters()\r
- c = f[params['controller']] || {}\r
- r = c[role]\r
- r\r
- \r
- # return false if allow\r
- # return true if deny\r
- authenticate: (role, params, operators) ->\r
- n = 'is_' + role\r
- if not operators[n]() # ex: operators.is_user()\r
- filter = @my_filters(role, params)\r
- if Pettanr.before_filter(params['action'], filter)\r
- return true\r
- false\r
- \r
-class Pettanr.HeaderRouter extends Pettanr.LocalRouter\r
- \r
- initialize: () ->\r
- super()\r
- _.extend(this, Pettanr.RouterFilter)\r
- \r
-class Pettanr.BodyRouter extends Pettanr.GlobalRouter\r
- \r
- initialize: () ->\r
- super()\r
- _.extend(this, Pettanr.RouterFilter.prototype)\r
- \r
- navigate: (url, options, operators) ->\r
- safe_url = @block(url, operators) || url\r
- super(safe_url, options)\r
- \r
- # access block\r
- # return sign in form if invalid url\r
- # return null if url is valid\r
- block: (url, operators) ->\r
- params = @url_to_params(url)\r
- return @guest_url() if @authenticate('reader', params, operators) or @authenticate('resource_reader', params, operators) or @authenticate('user', params, operators)\r
- return @new_author_url() if @authenticate('author', params, operators)\r
- return @new_artist_url() if @authenticate('artist', params, operators)\r
- null\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