hi,
i want to learn more about web2py rbac n auth_permission
imagine somthing like this
*models/db.py*
if db(db.auth_permission).isempty() and db(db.auth_membership).isempty():
""" insert """
# group
auth.add_group('Manager', 'Manager')
auth.add_group('Admin', 'Admin')
# user
db.auth_user.bulk_insert([{'first_name' : 'Manager', 'last_name' :
'Manager',
'email' : '[email protected]',
'password' : db.auth_user.password.validate('password')[0] },
{'first_name' : 'Admin', 'last_name' : 'Admin',
'email' : '[email protected]',
'password' : db.auth_user.password.validate('password')[0] } ] )
"""
membership (group_id, user_id)
"""
auth.add_membership('1', '1')
auth.add_membership('2', '1')
auth.add_membership('2', '2')
# permission
auth.add_permission(1, 'create', 'test', 0)
auth.add_permission(1, 'read', 'test', 0)
auth.add_permission(1, 'update', 'test', 0)
auth.add_permission(1, 'delete', 'test', 0)
auth.add_permission(1, 'select', 'test', 0)
auth.add_permission(2, 'create', 'test', 0)
auth.add_permission(2, 'read', 'test', 0)
auth.add_permission(2, 'select', 'test', 0)
db.define_table('test', Field('test') )
*controllers/default.py*
def create_access(table):
return auth.has_permission('create', table, 0, auth.user_id)
def update_access(table):
return auth.has_permission('update', table, 0, auth.user_id)
def delete_access(table):
return auth.has_permission('delete', table, 0, auth.user_id)
@auth.requires_login()
def test():
table = db.test
grid = SQLFORM.grid(table, create = create_access(table), editable =
update_access(table),
deletable = delete_access(table))
return locals()
*my question*
1. imagine the table created is more than 100 so, i must create the
permission with 800 records? base on example code above, group_id = 1 (5
records), group_id = 2 (3 records) on each table 100 (5+3 * 100)
2. base on 2nd question, i think it could be simpler to do something like
this (rather than input permission with 800 records) :
controllers/default.py
has_membership_manager = auth.has_membership('Manager')
create = True
editable = has_membership_manager
deletable = has_membership_manager
details = True
3. is it possible to use it to manage the menu too? i usually do this, but
don't have any idea to use it with auth_permission (read_access)
*models/menu.py*
# Accounting
if auth.has_membership(role = 'Accounting'):
response.menu += []
# Finance
if auth.has_membership(role = 'Finance'):
response.menu += []
*controllers/finance.py*
auth.requires(auth.has_membership(role = 'Finance'))(lambda: None)()
has_membership_manager = auth.has_membership('Manager')
create = True
editable = has_membership_manager
deletable = has_membership_manager
details = True
any idea or thought is welcome.
thanks and best regards,
stifan
--
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.