user/manage, thanks Anthony
This commit is contained in:
@@ -1 +1 @@
|
||||
Version 2.4.7-stable+timestamp.2013.05.31.10.40.23
|
||||
Version 2.4.7-stable+timestamp.2013.05.31.11.25.20
|
||||
|
||||
@@ -31,12 +31,14 @@ def user():
|
||||
http://..../[app]/default/user/profile
|
||||
http://..../[app]/default/user/retrieve_password
|
||||
http://..../[app]/default/user/change_password
|
||||
http://..../[app]/default/user/manage_users (requires membership in
|
||||
use @auth.requires_login()
|
||||
@auth.requires_membership('group name')
|
||||
@auth.requires_permission('read','table name',record_id)
|
||||
to decorate functions that need access control
|
||||
"""
|
||||
return dict(form=auth())
|
||||
auth.settings.manager_group_id=1
|
||||
return auth() if request.extension=='load' else dict(form=auth())
|
||||
|
||||
|
||||
@cache.action()
|
||||
|
||||
@@ -1,4 +1,23 @@
|
||||
{{extend 'layout.html'}}
|
||||
{{if request.args(0) == 'manage':}}
|
||||
<h2>{{=T('Manage Access Control')}}</h2>
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#users" data-toggle="tab">Users</a></li>
|
||||
<li><a href="#roles" data-toggle="tab">Roles</a></li>
|
||||
<li><a href="#permissions" data-toggle="tab">Permissions</a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="users">
|
||||
{{=LOAD(f='user.load', args=[request.args(0), auth.settings.table_user_name], ajax=True, user_signature=True)}}
|
||||
</div>
|
||||
<div class="tab-pane" id="roles">
|
||||
{{=LOAD(f='user.load', args=[request.args(0), auth.settings.table_group_name], ajax=True, user_signature=True)}}
|
||||
</div>
|
||||
<div class="tab-pane" id="permissions">
|
||||
{{=LOAD(f='user.load', args=[request.args(0), auth.settings.table_permission_name], ajax=True, user_signature=True)}}
|
||||
</div>
|
||||
</div>
|
||||
{{else:}}
|
||||
<h2>{{=T( request.args(0).replace('_',' ').capitalize() )}}</h2>
|
||||
<div id="web2py_user_form">
|
||||
{{
|
||||
@@ -21,3 +40,4 @@ jQuery("#web2py_user_form input:visible:enabled:first").focus();
|
||||
web2py_validate_entropy(jQuery('#no_table_new_password'),100);
|
||||
{{pass}}
|
||||
//--></script>
|
||||
{{pass}}
|
||||
|
||||
+36
-1
@@ -878,6 +878,7 @@ class Auth(object):
|
||||
alternate_requires_registration=False,
|
||||
create_user_groups="user_%(id)s",
|
||||
everybody_group_id=None,
|
||||
manager_group_id=None,
|
||||
login_captcha=None,
|
||||
register_captcha=None,
|
||||
retrieve_username_captcha=None,
|
||||
@@ -1278,7 +1279,7 @@ class Auth(object):
|
||||
'retrieve_username', 'retrieve_password',
|
||||
'reset_password', 'request_reset_password',
|
||||
'change_password', 'profile', 'groups',
|
||||
'impersonate', 'not_authorized'):
|
||||
'impersonate', 'not_authorized','manage'):
|
||||
if len(request.args) >= 2 and args[0] == 'impersonate':
|
||||
return getattr(self, args[0])(request.args[1])
|
||||
else:
|
||||
@@ -2935,6 +2936,40 @@ class Auth(object):
|
||||
return SQLFORM.factory(Field('user_id', 'integer'))
|
||||
return SQLFORM(table_user, user.id, readonly=True)
|
||||
|
||||
def manage(self):
|
||||
T = current.T
|
||||
request = current.request
|
||||
db = self.db
|
||||
tablename = request.args(1)
|
||||
if not self.has_membership(self.settings.manager_group_id):
|
||||
# not URL.verify(request, user_signature=True, hash_vars=False):
|
||||
raise HTTP(403)
|
||||
if not tablename or not tablename in db.tables:
|
||||
return ''
|
||||
table = db[tablename]
|
||||
formname = '%s_grid' % tablename
|
||||
if tablename == self.settings.table_user_name:
|
||||
self.settings.table_user._plural = T('Users')
|
||||
self.settings.table_membership._plural = T('Roles')
|
||||
self.settings.table_membership._id.readable = False
|
||||
self.settings.table_membership.user_id.label = T('User')
|
||||
self.settings.table_membership.group_id.label = T('Role')
|
||||
grid = SQLFORM.smartgrid(
|
||||
table, args=request.args[:2],
|
||||
user_signature=True,
|
||||
linked_tables=[self.settings.table_membership_name],
|
||||
maxtextlength=1000, formname=formname)
|
||||
else:
|
||||
table._id.readable = False
|
||||
self.settings.table_permission.group_id.label = T('Role')
|
||||
self.settings.table_permission.name.label = T('Permission')
|
||||
orderby = 'role' if tablename == self.settings.table_group_name \
|
||||
else 'group_id'
|
||||
grid = SQLFORM.grid(
|
||||
table, args=request.args[:2], orderby=table[orderby],
|
||||
user_signature=True, maxtextlength=1000, formname=formname)
|
||||
return grid
|
||||
|
||||
def update_groups(self):
|
||||
if not self.user:
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user