mirror of
https://github.com/kakwa/ldapcherry
synced 2024-11-25 02:34:31 +01:00
begin implementing modify user form
This commit is contained in:
parent
234a82b3bd
commit
834b5a5152
@ -292,6 +292,7 @@ class LdapCherry(object):
|
||||
self.temp_groups = self.temp_lookup.get_template('groups.tmpl')
|
||||
self.temp_form = self.temp_lookup.get_template('form.tmpl')
|
||||
self.temp_selfmodify = self.temp_lookup.get_template('selfmodify.tmpl')
|
||||
self.temp_modify = self.temp_lookup.get_template('modify.tmpl')
|
||||
|
||||
self._init_auth(config)
|
||||
|
||||
@ -338,6 +339,21 @@ class LdapCherry(object):
|
||||
ret[u][attrid] = tmp[u][attr]
|
||||
return ret
|
||||
|
||||
def _get_user(self, username):
|
||||
if username is None:
|
||||
return {}
|
||||
ret = {}
|
||||
for b in self.backends:
|
||||
tmp = self.backends[b].get_user(username)
|
||||
for attr in tmp:
|
||||
if attr in self.attributes.backend_attributes[b]:
|
||||
attrid = self.attributes.backend_attributes[b][attr]
|
||||
if not attr in ret:
|
||||
ret[attrid] = tmp[attr]
|
||||
return ret
|
||||
|
||||
|
||||
|
||||
def _check_admin(self):
|
||||
if self.auth_mode == 'none':
|
||||
return True
|
||||
@ -504,7 +520,7 @@ class LdapCherry(object):
|
||||
for r in self.roles.flatten:
|
||||
display_names[r] = self.roles.flatten[r]['display_name']
|
||||
roles_js = json.dumps(display_names, separators=(',',':'))
|
||||
form = self.temp_form.render(attributes=self.attributes.attributes, values=None)
|
||||
form = self.temp_form.render(attributes=self.attributes.attributes, values=None, modify=False)
|
||||
roles = self.temp_roles.render(roles=self.roles.flatten, graph=self.roles.graph, graph_js=graph_js, roles_js=roles_js)
|
||||
return self.temp_adduser.render(form=form, roles=roles, is_admin=is_admin, notification=notification)
|
||||
|
||||
@ -516,16 +532,36 @@ class LdapCherry(object):
|
||||
pass
|
||||
|
||||
@cherrypy.expose
|
||||
def modify(self, **params):
|
||||
def modify(self, user=None, **params):
|
||||
""" modify user page """
|
||||
self._check_auth(must_admin=True)
|
||||
is_admin = self._check_admin()
|
||||
pass
|
||||
|
||||
if cherrypy.request.method.upper() == 'POST':
|
||||
notification = "<script type=\"text/javascript\">$.notify('User Modify')</script>"
|
||||
self._adduser(params)
|
||||
else:
|
||||
notification = ''
|
||||
|
||||
graph={}
|
||||
for r in self.roles.graph:
|
||||
s = list(self.roles.graph[r]['sub_roles'])
|
||||
p = list(self.roles.graph[r]['parent_roles'])
|
||||
graph[r] = { 'sub_roles': s, 'parent_roles': p}
|
||||
graph_js = json.dumps(graph, separators=(',',':'))
|
||||
display_names = {}
|
||||
for r in self.roles.flatten:
|
||||
display_names[r] = self.roles.flatten[r]['display_name']
|
||||
user_attrs = self._get_user(user)
|
||||
roles_js = json.dumps(display_names, separators=(',',':'))
|
||||
form = self.temp_form.render(attributes=self.attributes.attributes, values=user_attrs, modify=True)
|
||||
roles = self.temp_roles.render(roles=self.roles.flatten, graph=self.roles.graph, graph_js=graph_js, roles_js=roles_js)
|
||||
return self.temp_modify.render(form=form, roles=roles, is_admin=is_admin, notification=notification)
|
||||
|
||||
@cherrypy.expose
|
||||
def selfmodify(self, **params):
|
||||
""" self modify user page """
|
||||
self._check_auth(must_admin=False)
|
||||
is_admin = self._check_admin()
|
||||
form = self.temp_form.render(attributes=self.attributes.get_selfattributes(), values=None)
|
||||
form = self.temp_form.render(attributes=self.attributes.get_selfattributes(), values=None, modify=True)
|
||||
return self.temp_selfmodify.render(form=form, is_admin=is_admin)
|
||||
|
@ -19,22 +19,31 @@ for a in sorted(attributes.keys(), key=lambda attr: attributes[attr]['weight']):
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<%
|
||||
if modify:
|
||||
required = ''
|
||||
else:
|
||||
required = ' required '
|
||||
if not values is None and a in values:
|
||||
value = ' value="'+ values[a] + '"'
|
||||
value2 = '<option>'+ values[a] +'</option>'
|
||||
if type(values[a]) is list:
|
||||
tmp = values[a][0]
|
||||
else:
|
||||
tmp = values[a]
|
||||
value = ' value="'+ tmp + '"'
|
||||
value2 = '<option>'+ tmp +'</option>'
|
||||
else:
|
||||
value = ''
|
||||
value2 = ''
|
||||
%>
|
||||
|
||||
<span class="input-group-addon" id="basic-addon1">${attr['display_name']}</span>
|
||||
% if attr['type'] == 'string':
|
||||
<input type="text" name="${a}" class="form-control" placeholder="${attr['description']}" aria-describedby="basic-addon1" required ${value}>
|
||||
<input type="text" name="${a}" class="form-control" placeholder="${attr['description']}" aria-describedby="basic-addon1" ${required} ${value}>
|
||||
% elif attr['type'] == 'email':
|
||||
<input type="email" name="${a}" class="form-control" placeholder="${attr['description']}" aria-describedby="basic-addon1" required ${value} data-error="email address is invalid">
|
||||
<input type="email" name="${a}" class="form-control" placeholder="${attr['description']}" aria-describedby="basic-addon1" ${required} ${value} data-error="email address is invalid">
|
||||
% elif attr['type'] == 'int':
|
||||
<input type="number" name="${a}" class="form-control" placeholder="${attr['description']}" aria-describedby="basic-addon1" required ${value}>
|
||||
<input type="number" name="${a}" class="form-control" placeholder="${attr['description']}" aria-describedby="basic-addon1" ${required} ${value}>
|
||||
% elif attr['type'] == 'fix':
|
||||
<input type="hidden" name="${a}" class="form-control" placeholder="${attr['description']}" aria-describedby="basic-addon1" required value="${attr['value']}">
|
||||
<input type="hidden" name="${a}" class="form-control" placeholder="${attr['description']}" aria-describedby="basic-addon1" ${required} value="${attr['value']}">
|
||||
<span class="form-control" placeholder="${attr['description']}" aria-describedby="basic-addon1">${attr['value']}</span>
|
||||
% elif attr['type'] == 'stringlist':
|
||||
<select class="form-control" name="type">
|
||||
@ -44,9 +53,9 @@ for a in sorted(attributes.keys(), key=lambda attr: attributes[attr]['weight']):
|
||||
%endfor
|
||||
</select>
|
||||
% elif attr['type'] == 'password':
|
||||
<input type="password" class="form-control" name="${a}1" id="${a}1" placeholder="${attr['description']}" required>
|
||||
<input type="password" class="form-control" name="${a}1" id="${a}1" placeholder="${attr['description']}" ${required}>
|
||||
<span class="input-group-addon" id="basic-addon1">Retype ${attr['display_name']}</span>
|
||||
<input type="password" class="form-control" name="${a}2" id="#${a}2" data-match="#${a}1" placeholder="Confirm" required>
|
||||
<input type="password" class="form-control" name="${a}2" id="#${a}2" data-match="#${a}1" placeholder="Confirm" ${required}>
|
||||
% endif
|
||||
</div>
|
||||
</div>
|
||||
|
26
resources/templates/modify.tmpl
Normal file
26
resources/templates/modify.tmpl
Normal file
@ -0,0 +1,26 @@
|
||||
<%inherit file="navbar.tmpl"/>
|
||||
<%block name="core">
|
||||
<div class="row clearfix top-buffer bottom-buffer">
|
||||
<div class="col-md-2 column">
|
||||
</div>
|
||||
<div class="col-md-12 column">
|
||||
<div class="well well-sm">
|
||||
<form method='POST' action='/modify' role="form" class="form-signin" data-toggle="validator">
|
||||
<h2 class="h3">Modify user's attributes:</h2>
|
||||
${form}
|
||||
<h2 class="h3">Enable/Disable user's roles:</h2>
|
||||
${roles}
|
||||
<h2 class="h3">Delete user's individual groups:</h2>
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<button class="btn btn-default blue" type="submit">
|
||||
<span class="glyphicon glyphicon-cog"> Modify User</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2 column">
|
||||
</div>
|
||||
</div>
|
||||
</%block>
|
Loading…
Reference in New Issue
Block a user