[Catalyst] Advanced role-based authorization

sindharta_tanuwijaya at yahoo.co.jp sindharta_tanuwijaya at yahoo.co.jp
Tue May 20 05:08:37 BST 2008


Hi,

I don't think you can achieve that by Catalyst::Plugin::Authorization but please correct me if I am wrong.

On a side note though, I also had an idea that is similar to yours some time ago, but I scrapped it because the number of records in
users_pages_roles tables will increase exponentially as the number of users and pages increase.
I wonder how the sharing function is implemented in Google Docs though.

Sindharta

jakac <jakac at iprom.si> wrote:     Hello!
 
 I am new to Catalyst and I am developing my first web application using this really
 great framework. I really like the way Catalyst allows me to build my application but
 now I have a problem which I can not resolve by myself.
 
 I studied the tutorial and I understand the whole concept of "role based" authorization
 where we have three tables:
 
 - users (list of users with primary key user_id)
 - roles (list of roles with primary key role_id)
 - users_roles (with user_id - role_id relations)
 
 but for my application I need a bit more advanced system than that because every
 user has also multiple pages and different roles for each page (he can edit some,
 only view the others etc.). One user has different permissions for each of the pages and
 also more users have access (and different permissions) to the same page.
 So I need 4 tables:
 
 - users (list of users with primary key user_id)
 - roles (list of roles with primary key role_id)
 - pages (list of pages with primary key page_id)
 - users_pages_roles (with user_id - page_id - role_id relations)
 
 e.g.:
 user1 | page1 | edit
 user1 | page2 | edit
 user2 | page2 | view
 user3 | page1 | edit
 user3 | page2 | view
 etc.
 
 How can I make this kind of authorization using Catalyst? How to build a model
 and configure "roles" plugin?
 
 Also with simple role based system I can check if user has permission to use that part
 of application using:
  
$c->assert_user_roles( qw/rolename/ );
 What about with this kind of "advanced" authorization?
 
 Thank you all!
 
 JakaC.
 
 _______________________________________________
List: Catalyst at lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
Dev site: http://dev.catalyst.perl.org/

 

 
---------------------------------
GANBARE! NIPPON! Win your ticket to Olympic Games 2008.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20080520/3fcb1508/attachment.htm


More information about the Catalyst mailing list