Thanks for the explanation, Anthony! It seems I had different expectations regarding the definition of "everybody", but I guess either way makes sense.
On Thursday, November 3, 2016 at 3:58:50 AM UTC+1, Anthony wrote: > > Perhaps the documentation could explain this better, but the > auth.has_permission method is designed to check whether a specific user or > specific group has a particular permission. It does not check whether the > current user is logged in. > > If you do not specify either the user_id argument or the group_id > argument, it does the following: > > 1. If there is an auth.settings.everybody_group_id, it checks whether > that group has the permission in question (the idea being that it doesn't > matter which user is being checked, as every user is by definition a > member > of the everybody_group_id group). > 2. If there is no auth.settings.everybody_group_id but the current > user is logged in, it checks whether the currently logged in user has the > permission in question. > 3. If neither #1 nor #2, it will return False. > > Note, if you instead use the @auth.requires_permission decorator, that > will by default also require login. Otherwise, if you want to use > auth.has_permission, you must separately check whether the current user is > logged in. > > > Anthony > > On Wednesday, November 2, 2016 at 7:04:16 PM UTC-4, Horst Horst wrote: >> >> I've found a behavior in 2.14.6 which makes me scratch my head. I have set >> >> auth.settings.everybody_group_id = 2 >> >> in order to make every user part of the "user" group (2). The >> auth_membership reflects this explicitely for each added user. >> >> I have granted several permissions to group 2, e.g. one identified by the >> constant PERM_READ in a table 'piece'. Now, if I call a controller without >> being logged in (so that auth.user_id == None), to my surprise >> >> auth.has_permission(PERM_READ, "piece", piece_id) >> >> returns True. If I do not set auth.settings.everybody_group_id, however, >> the same check returns False. >> >> So it seems that the "None" user implicitly gets group 2 permissions >> (without this being reflected in the membership table). >> >> Is this desired behavior? >> > -- 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.

