access_rules.rb
上传用户:netsea168
上传日期:2022-07-22
资源大小:4652k
文件大小:6k
源码类别:

Ajax

开发平台:

Others

  1. # Localization.lang = ''
  2. # LisiaSoft::AccessControl, permit to manage, backend, and frontend access.
  3. # Based on the LoginSystem of Lipisadmin
  4. # You can define on the fly, roles access, for example:
  5. #   Typo::AccessControl.map :require => [ :administrator, :manager, :customer ]  do |map|
  6. #     # Shared Permission
  7. #     map.permission "backend/base"
  8. #     # Module Permission
  9. #     map.project_module :accounts, "backend/accounts" do |project|
  10. #       project.menu :list, { :action => :index }, :class => "icon-no-group"
  11. #       project.menu :new,  { :action => :new }, :class => "icon-new"
  12. #     end
  13. #   end
  14. #   Typo::AccessControl.map :require => :customer do |map|
  15. #     # Shared Permission
  16. #     map.permission "frontend/cart"
  17. #     # Module Permission
  18. #     map.project_module :store, "frontend/store" do |map|
  19. #       map.menu :add, { :cart => :add }, :class => "icon-no-group"
  20. #       map.menu :list,  { :cart => :list }, :class => "icon-no-group"
  21. #     end  
  22. #   end                                                                    
  23. # So the when you do:
  24. #
  25. #   Typo::AccessControl.roles
  26. #   # => [:administrator, :manager, :customer]
  27. #   
  28. #   Typo::AccessControl.project_modules(:customer)
  29. #   # => [#<Typo::AccessControl::ProjectModule:0x254a9c8 @controller="backend/accounts", @name=:accounts, @menus=[#<Typo::AccessControl::Menu:0x254a928 @url={:action=>:index}, @name=:list, @options={:class=>"icon-no-group"}>, #<Typo::AccessControl::Menu:0x254a8d8 @url={:action=>:new}, @name=:new, @options={:class=>"icon-new"}>]>, #<Typo::AccessControl::ProjectModule:0x254a84c @controller="frontend/store", @name=:store, @menus=[#<Typo::AccessControl::Menu:0x254a7d4 @url={:cart=>:add}, @name=:add, @options={}>, #<Typo::AccessControl::Menu:0x254a798 @url={:cart=>:list}, @name=:list, @options={}>]>]
  30. #
  31. #   Typo::AccessControl.allowed_controllers(:customer)
  32. #   => ["backend/base", "backend/accounts", "frontend/cart", "frontend/store"]
  33. #  
  34. # If in your controller there is *login_required* our Authenticated System verify the allowed_controllers for the account role (Ex: :customer),
  35. # if not satisfed you will be redirected to login page.
  36. #
  37. # An account have two columns, role, that is a string, and project_modules, that is an array (with serialize)
  38. # For example, whe can decide that an Account with role :customers can see only, the module project :store.
  39. AccessControl.map :require => [ :admin, :publisher, :contributor ]  do |map|
  40.   map.permission "admin/base"
  41.   map.permission "admin/cache"
  42.   map.permission "admin/dashboard"
  43.   map.permission "admin/textfilters"
  44.   # FIXME: For previews, during production 'previews' is needed, during
  45.   # test, 'articles' is needed. Proposed solution: move previews to
  46.   # ArticlesController
  47.   map.permission "previews"
  48.   map.permission "articles"
  49.   map.project_module :write, nil do |project|
  50.     project.menu    "Write",            { :controller => "admin/content",    :action => "new" }
  51.     project.submenu "Article",          { :controller => "admin/content",    :action => "new" }
  52.   project.submenu "Page",             { :controller => "admin/pages",      :action => "new" }
  53.   end
  54.   map.project_module :content, nil do |project|
  55.     project.menu    "Manage",           { :controller => "admin/content",    :action => "index" }
  56.     project.submenu "Articles",         { :controller => "admin/content",    :action => "index" }
  57.     project.submenu "Comments",         { :controller => "admin/feedback" }
  58.   project.submenu "Pages",            { :controller => "admin/pages",      :action => "index" }
  59.   project.submenu "Categories",       { :controller => "admin/categories", :action => "index" }
  60.   project.submenu "Files",            { :controller => "admin/resources",  :action => "index" }
  61.   project.submenu "Images",           { :controller => "admin/resources",  :action => "images"}
  62.   project.submenu "Tags",             { :controller => "admin/tags",       :action => "index" }
  63.   project.submenu "",                      { :controller => "admin/comments", :action => "show" }
  64.     project.submenu "",                      { :controller => "admin/comments", :action => "new" }
  65.     project.submenu "",                      { :controller => "admin/comments", :action => "edit" }
  66.     project.submenu "",                      { :controller => "admin/comments", :action => "destroy" }
  67.     project.submenu "",                      { :controller => "admin/trackbacks", :action => "show" }
  68.     project.submenu "",                      { :controller => "admin/trackbacks", :action => "new" }
  69.     project.submenu "",                      { :controller => "admin/trackbacks", :action => "edit" }
  70.     project.submenu "",                      { :controller => "admin/trackbacks", :action => "destroy" }
  71.   end
  72.   map.project_module :themes, nil do |project|
  73.     project.menu    "Customize",             { :controller => "admin/themes", :action => "index"  }
  74.     project.submenu "Choose theme",          { :controller => "admin/themes", :action => "index" }
  75.     project.submenu "Customize sidebar",     { :controller => "admin/sidebar", :action => "index" }
  76.     project.submenu "Theme editor",          { :controller => "admin/themes", :action => "editor" }
  77.     project.submenu "View theme catalogue",       { :controller => "admin/themes", :action => "catalogue" }
  78.   end
  79.   
  80.   map.project_module :settings, nil do |project|
  81.     project.menu    "Settings",              { :controller => "admin/settings", :action => "index" }
  82.     project.submenu "General settings",      { :controller => "admin/settings", :action => "index" }
  83.     project.submenu "Write",                 { :controller => "admin/settings", :action => "write" }
  84.     project.submenu "Feedback",              { :controller => "admin/settings", :action => "feedback" }
  85.     project.submenu "SEO",                   { :controller => "admin/settings", :action => "seo" }
  86.     project.submenu "Users",                 { :controller => "admin/users", :action => "index" }
  87.     project.submenu "",                 { :controller => "admin/users", :action => "show" }
  88.     project.submenu "",                 { :controller => "admin/users", :action => "new" }
  89.     project.submenu "",                 { :controller => "admin/users", :action => "edit" }
  90.     project.submenu "",                 { :controller => "admin/users", :action => "destroy" }
  91.   end    
  92.   
  93.   map.project_module :profile, "admin/profiles" do |project|
  94.     project.menu    "Profile",                 { :action => "index" }
  95.   end
  96. end