If the user is logged in, then auth.user_groups contains a dictionary of
the user's roles. You can also use auth.has_membership('role name') to
check membership.
You can search auth.user_groups for a role, e.g.,
if any (role in ['customer_service', 'admin'] for role in auth.user_groups.
itervalues()):
On Monday, June 2, 2014 8:53:55 AM UTC-4, Yebach wrote:
>
> Hello
>
> I am trying to get user's role looking into membership table etc.
>
> Following all the codes on majority of forums my code does not work.
>
> this is my controller
>
> from gluon.tools import Auth
>
> database = request.cookies['mycookie'].value
> db = DAL('postgres://postgres:[email protected]/' + database,
> migrate=False)
> auth = Auth(db)
>
> def index():
> if not auth.is_logged_in():
>
> login_adress= auth.settings.login_url = URL('user','user',
> args='login')
> redirect (login_adress)
>
> print auth.user_id ###Works
>
> print auth.user_group ### result is <bound method Auth.user_group of
> <gluon.tools.Auth object at 0x000000000A307F28>>
> print auth.has_membership(auth.id_group('Member'),auth.user.id)
>
> <type 'exceptions.AttributeError'> 'NoneType' object has no attribute
> 'role'
>
> Also, If I try with some DAL select sentances none of them work. error is
> usually
>
> if code is
> rows = db(db.auth_user).select()
>
> or
>
> rows = db((db.auth_user.email ==
> auth.user.email)&(db.auth_membership.user_id == auth.user_id)&(
> db.auth_group.id==db.auth_membership.group_id)).select(db.auth_group.ALL)
>
> error is
>
> <type 'exceptions.KeyError'> 'auth_user'
>
> what am I doing wrong here. It is a f#"$"# simple ask. Get user role so I
> can get a user a specific view based on that role (btw any suggestions on
> that would be nice).
>
> thank you
>
--
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.