On Tuesday, November 24, 2015 at 3:59:28 PM UTC+1, Richard wrote: > > Thanks for reply Simone, I see the complexity and the limitless recursion > that can occur... I guess, I will go with flat group of access which will > overlap... My main issue was that I would avoid having two way to assign > the same set of permissions... Let say I have tool A, so I create group A, > so any users member of group A has access to tool A... That why I would had > reuse group A to provide access to tool A to all member of group B, which > could also provide access to group C, D, etc. This implies refactoring to > RBAC by having auth_membership relation between group and not only user and > group which prevent having foreign key for user_id and have a > "group_member_id" (sorry no better name) that is kind of duplicated > group_id... It would surely break web2py membership verification since > web2py surely make the assomption that there is always an user id attach to > membership relation which could not be the case. >
web2py's "has_membership" just checks for group membership. if user "X" isn't member of group A, user is not authorized. > > So, I follow your advice and keep it simple... The only drawback that I > see is that I may end with differents groups that provide access to the > same ressource... group A above has access to tool/func A and group > "Department X" which could have also access to tool A and another set of > function at the same time... > > Thanks again > > Richard > > On Mon, Nov 23, 2015 at 5:06 PM, Niphlod <[email protected] <javascript:>> > wrote: > >> This has been reported before but it just triggers for the next level up >> in the hierarchy (Group C that manages access to Group B that manages >> access to Group A). >> RBAC as is is a complete and finite tool to manage permission: it >> enforces (as many other things in web2py) sane defaults, levelling all >> permissions hierarchies to one level. >> The fact that you'd need to code your own "hierarchy of permission upon >> permission" shouldn't stop you (and frankly, if put on a piece of paper, >> isn't hard to implement) >> >> Loosely said, you can choose any of two ways: >> - have your groups linked by some other external reference, and >> recursively querying for membership >> - manage ephemeral groups that can be flatly queried, basically >> multiplying permissions flattening the structure >> >> Recursively querying the database to check for permission is really >> heavy, but if your app needs it, go for it. >> Think, though, that you need to check if a user "X" belonging to only one >> group, Group A, has access to resource "Z". >> In hierarchy-defined groups (the structure more familiar to a human >> brain), you'd need to traverse all permissions to "Z" (that are only given >> to Group C), then see if a Group B has access to everything Group C has >> access to, then if a Group A has access to everything that Group B has >> access to. >> >> A way to check for the user "X" in one step if has access to "Z" is easy, >> too, and generally less resource intensive... >> When you create resource "Z", you grant access to Group C, AND Group B, >> AND Group C. >> OR, you can assign to user "X" Group A AND Group B AND Group C, and >> assign "Z" permissions to C only. >> >> Granted, the less resource intensive way NEEDS to plan a "manage >> permissions" machinery accordingly to your needs, but you need to ask >> yourself how many times your app assigns/revokes permission and how many >> times it checks for permissions (and how many times will you feel more >> comfortable debugging it :-P). >> >> >> >> On Monday, November 23, 2015 at 4:11:55 PM UTC+1, Richard wrote: >>> >>> Hello, >>> >>> I would like to know how (if possible) I can manage group access for >>> permission granted by other role. For example, I have group A, that allow >>> user member from it to access func A... But how can I create or represent >>> that all members of group B can grant the access to group A and group C for >>> instance? In web2py the membersphip don't allow to represent that a role is >>> a member of another role... So how to avoid a repetitive assignment by >>> using group assignment? >>> >>> Thanks >>> >>> Richard >>> >> -- >> Resources: >> - http://web2py.com >> - http://web2py.com/book (Documentation) >> - http://github.com/web2py/web2py (Source code) >> - https://code.google.com/p/web2py/issues/list (Report Issues) >> --- >> You received this message because you are subscribed to the Google Groups >> "web2py-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

