Skip to content

Commit

Permalink
Merge fbd3293 into 856157a
Browse files Browse the repository at this point in the history
  • Loading branch information
cconnert committed Jul 10, 2019
2 parents 856157a + fbd3293 commit 71aa3c8
Show file tree
Hide file tree
Showing 9 changed files with 140 additions and 46 deletions.
84 changes: 84 additions & 0 deletions ldapcherry/backend/backendLdap.py
Expand Up @@ -460,12 +460,82 @@ def del_user(self, username):
dn = self._byte_p2(self._get_user(self._byte_p2(username), NO_ATTR))
# delete
if dn is not None:
groups = self.get_groups(username)
self._logger(
severity=logging.DEBUG,
msg="%(backend)s: removing user '%(user)s' from '%(group)s'" % {
'user': username,
'group': groups,
'backend': self.backend_name
}
)
self.del_from_groups(username, groups)
ldap_client.delete_s(dn)
else:
ldap_client.unbind_s()
raise UserDoesntExist(username, self.backend_name)
ldap_client.unbind_s()

def __isModify(self, username, attrs, old_attrs, attr):
modify = True
# early exit
if old_attrs.get(attr) is None:
return modify
# various modification checks
if type(old_attrs[attr]) is list:
if type(attrs[attr]) is list:
if old_attrs[attr] == attrs[attr]:
self._logger(
severity=logging.DEBUG,
msg="%(backend)s: skipping modification of equal-attribute '%(attr)s'"
"/'%(oldAttr)s' for user '%(user)s'" % {
'user': username,
'attr': attrs[attr],
'oldAttr': old_attrs[attr],
'backend': self.backend_name
}
)
modify = False
if attrs[attr] in old_attrs[attr]:
self._logger(
severity=logging.DEBUG,
msg="%(backend)s: skipping modification of attribute '%(attr)s'"
" for user '%(user)s' as it is contained by '%(oldAttr)s'" % {
'user': username,
'attr': attrs[attr],
'oldAttr': old_attrs[attr],
'backend': self.backend_name
}
)
modify = False
else:
if type(attrs[attr]) is list:
if old_attrs[attr] in attrs[attr]:
self._logger(
severity=logging.DEBUG,
msg="%(backend)s: skipping modification of contained-attribute '%(attr)s' "
"for user '%(user)s'" % {
'user': username,
'attr': attrs[attr],
'backend': self.backend_name
}
)
modify = False
else:
if attrs[attr] == old_attrs[attr]:
self._logger(
severity=logging.DEBUG,
msg="%(backend)s: skipping modification of equal-attribute '%(attr)s'"
"/'%(oldAttr)s' for user '%(user)s'" % {
'user': username,
'attr': attrs[attr],
'oldAttr': old_attrs[attr],
'backend': self.backend_name
}
)
modify = False
return modify

def set_attrs(self, username, attrs):
""" set user attributes"""
ldap_client = self._bind()
Expand All @@ -475,6 +545,20 @@ def set_attrs(self, username, attrs):
dn = self._byte_p2(tmp[0])
old_attrs = tmp[1]
for attr in attrs:
# skip equal attributes
if not self.__isModify(username, attrs, old_attrs, attr):
continue
else:
self._logger(
severity=logging.DEBUG,
msg="%(backend)s: modifying user '%(user)s':"
" '%(attr)s' vs. '%(oldAttr)s'" % {
'user': username,
'attr': attrs[attr],
'oldAttr': old_attrs.get(attr),
'backend': self.backend_name
}
)
bcontent = self._byte_p2(attrs[attr])
battr = self._byte_p2(attr)
new = {battr: self._modlist(self._byte_p3(bcontent))}
Expand Down
16 changes: 13 additions & 3 deletions resources/static/js/lc-filler.js
Expand Up @@ -7,16 +7,26 @@
*
*/

function normalizeName(name) {
return removeDiacritics(name).toLowerCase().replace(/[^a-z]/g, '');
}

function lcUidExt(firstname, lastname, firstnameEnd, lastnameEnd){
return normalizeName(firstname).substring(0, parseInt(firstnameEnd))+normalizeName(lastname).substring(0,parseInt(lastnameEnd));
}

function lcUid(firstname, lastname){
var ascii_firstname = removeDiacritics(firstname).toLowerCase().replace(/[^a-z]/g, '');
var ascii_lastname = removeDiacritics(lastname).toLowerCase().replace(/[^a-z]/g, '');
return ascii_firstname.charAt(0)+ascii_lastname.substring(0,7);
return lcUidExt(firstname, lastname, 0, 7);
}

function lcDisplayName(firstname, lastname){
return firstname+' '+lastname;
}

function lcMailExt(firstname, lastname, domain, firstnameEnd, lastnameEnd){
return lcUidExt(firstname, lastname, firstnameEnd, lastnameEnd)+domain;
}

function lcMail(firstname, lastname, domain){
return lcUid(firstname, lastname)+domain;
}
Expand Down
4 changes: 2 additions & 2 deletions resources/templates/adduser.tmpl
Expand Up @@ -6,7 +6,7 @@
</div>
<div class="col-md-12 column">
<div class="well well-sm">
<form method='POST' autocomplete="off" action='/adduser' role="form" class="form-signin" id="form">
<form method='POST' autocomplete="off" action='./adduser' role="form" class="form-signin" id="form">
<fieldset>
<legend>Fill new user's attributes:</legend>
${form | n}
Expand All @@ -22,7 +22,7 @@
</div>
</div>
</form>
<script type="text/javascript" src="/static/js/ppolicy.js"></script>
<script type="text/javascript" src="./static/js/ppolicy.js"></script>
</div>
</div>
<div class="col-md-2 column">
Expand Down
54 changes: 27 additions & 27 deletions resources/templates/base.tmpl
Expand Up @@ -8,43 +8,43 @@
<meta name="description" content="directory manager">
<meta name="author" content="kakwa">

<!--link rel="stylesheet/less" href="/static/less/bootstrap.less" type="text/css" /-->
<!--link rel="stylesheet/less" href="/static/less/responsive.less" type="text/css" /-->
<!--script src="/static/js/less-1.3.3.min.js"></script-->
<!--link rel="stylesheet/less" href="/.static/less/bootstrap.less" type="text/css" /-->
<!--link rel="stylesheet/less" href="/.static/less/responsive.less" type="text/css" /-->
<!--script src="./static/js/less-1.3.3.min.js"></script-->
<!--append ‘#!watch’ to the browser URL, then refresh the page. -->

<link href="/static/css/bootstrap.min.css" rel="stylesheet">
<link href="/static/css/custom.css" rel="stylesheet">
<link href="/static/css/style.css" rel="stylesheet">
<link href="/static/css/bootstrap-switch.css" rel="stylesheet">
<link href="/static/css/tablesorter-bootstrap.css" rel="stylesheet">
<link href="/.static/css/bootstrap.min.css" rel="stylesheet">
<link href="/.static/css/custom.css" rel="stylesheet">
<link href="/.static/css/style.css" rel="stylesheet">
<link href="/.static/css/bootstrap-switch.css" rel="stylesheet">
<link href="/.static/css/tablesorter-bootstrap.css" rel="stylesheet">

<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="/static/js/html5shiv.js"></script>
<script src="./static/js/html5shiv.js"></script>
<![endif]-->

<!-- Fav and touch icons -->
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/static/img/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/static/img/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="/static/img/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="/static/img/apple-touch-icon-57-precomposed.png">
<link rel="icon" type="image/png" href="/static/img/favicon.png">
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/.static/img/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/.static/img/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="/.static/img/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="/.static/img/apple-touch-icon-57-precomposed.png">
<link rel="icon" type="image/png" href="/.static/img/favicon.png">

<script type="text/javascript" src="/static/js/jquery.min.js"></script>
<script type="text/javascript" src="/static/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/static/js/scripts.js"></script>
<script type="text/javascript" src="/static/js/validator.js"></script>
<script type="text/javascript" src="/static/js/bootstrap-notify.js"></script>
<script type="text/javascript" src="/static/js/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="/static/js/bootstrap-switch.js"></script>
<script type="text/javascript" src="/static/js/jquery.popconfirm.js"></script>
<script type="text/javascript" src="/static/js/removediacritic.js"></script>
<script type="text/javascript" src="/static/js/lc-filler.js"></script>
<script type="text/javascript" src="/static/js/sha1.js"></script>
<script type="text/javascript" src="./static/js/jquery.min.js"></script>
<script type="text/javascript" src="./static/js/bootstrap.min.js"></script>
<script type="text/javascript" src="./static/js/scripts.js"></script>
<script type="text/javascript" src="./static/js/validator.js"></script>
<script type="text/javascript" src="./static/js/bootstrap-notify.js"></script>
<script type="text/javascript" src="./static/js/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="./static/js/bootstrap-switch.js"></script>
<script type="text/javascript" src="./static/js/jquery.popconfirm.js"></script>
<script type="text/javascript" src="./static/js/removediacritic.js"></script>
<script type="text/javascript" src="./static/js/lc-filler.js"></script>
<script type="text/javascript" src="./static/js/sha1.js"></script>
% if custom_js:
% for js in custom_js:
<script type="text/javascript" src="/custom/${js}"></script>
<script type="text/javascript" src="./custom/${js}"></script>
% endfor
%endif

Expand All @@ -70,6 +70,6 @@
<p class="muted credit"><a href="http://ldapcherry.readthedocs.org" target="_blank">LdapCherry</a> • © 2016 • Pierre-François Carpentier • Released under the MIT License</p>
</div>
</div>
<script type="text/javascript" src="/static/js/alignforms.js"></script>
<script type="text/javascript" src="./static/js/alignforms.js"></script>
</body>
</html>
4 changes: 2 additions & 2 deletions resources/templates/modify.tmpl
Expand Up @@ -6,7 +6,7 @@
</div>
<div class="col-md-12 column">
<div class="well well-sm">
<form method='POST' action='/modify' role="form" class="form-signin" id="form">
<form method='POST' action='./modify' role="form" class="form-signin" id="form">
<fieldset>
<legend>Modify user's attributes:</legend>
${form | n}
Expand Down Expand Up @@ -62,7 +62,7 @@
</div>
</div>
</form>
<script type="text/javascript" src="/static/js/ppolicy.js"></script>
<script type="text/javascript" src="./static/js/ppolicy.js"></script>
</div>
</div>
<div class="col-md-2 column">
Expand Down
12 changes: 6 additions & 6 deletions resources/templates/navbar.tmpl
Expand Up @@ -6,19 +6,19 @@
<nav class="navbar navbar-inverse" role="navigation">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button>
<a class="navbar-brand" href="/"><img src="/static/img/icon.png" alt="LdapCherry" height="22" width="22"></a>
<a class="navbar-brand" href="/selfmodify">Self Modify</a>
<a class="navbar-brand" href="/."><img src="./static/img/icon.png" alt="LdapCherry" height="22" width="22"></a>
<a class="navbar-brand" href="/.selfmodify">Self Modify</a>
% if is_admin:
<a class="navbar-brand" href="/adduser">Add User</a>
<a class="navbar-brand" href="/searchadmin">Delete/Modify User</a>
<a class="navbar-brand" href="/.adduser">Add User</a>
<a class="navbar-brand" href="/.searchadmin">Delete/Modify User</a>
% endif
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<a class="navbar-brand navbar-right" href='/logout'><span class="glyphicon glyphicon-off"></span> Logout</a>
% if is_admin:
<form method='GET' action='/searchadmin' class="navbar-form navbar-right" role="search" data-toggle="validator">
<form method='GET' action='./searchadmin' class="navbar-form navbar-right" role="search" data-toggle="validator">
% else:
<form method='GET' action='/searchuser' class="navbar-form navbar-right" role="search" data-toggle="validator">
<form method='GET' action='./searchuser' class="navbar-form navbar-right" role="search" data-toggle="validator">
% endif
<div class="form-group">
% if is_admin:
Expand Down
6 changes: 3 additions & 3 deletions resources/templates/searchadmin.tmpl
Expand Up @@ -3,7 +3,7 @@
<%block name="core">
<div class="row clearfix">
<div class="col-md-12 column">
<form method='get' action='/searchadmin' role="form" class="form-inline" data-toggle="validator">
<form method='get' action='./searchadmin' role="form" class="form-inline" data-toggle="validator">
<div class="form-group">
<label for="searchstring">Search user to modify/delete</label>
<input type="text" class="form-control" id="searchstring" name="searchstring" placeholder="Search User">
Expand Down Expand Up @@ -52,10 +52,10 @@
</td>
% endfor
<td>
<a href="/modify?user=${user | n,u}" class="btn btn-xs blue pad" ><span class="glyphicon glyphicon-cog"></span> Modify</a>
<a href="/.modify?user=${user | n,u}" class="btn btn-xs blue pad" ><span class="glyphicon glyphicon-cog"></span> Modify</a>
</td>
<td>
<a href="/delete?user=${user | n,u}" data-toggle='confirmation-delete' class="btn btn-xs red pad"><span class="glyphicon glyphicon-remove-sign"></span> Delete</a>
<a href="/.delete?user=${user | n,u}" data-toggle='confirmation-delete' class="btn btn-xs red pad"><span class="glyphicon glyphicon-remove-sign"></span> Delete</a>
</td>
</tr>
% endfor
Expand Down
2 changes: 1 addition & 1 deletion resources/templates/searchuser.tmpl
Expand Up @@ -3,7 +3,7 @@
<%block name="core">
<div class="row clearfix">
<div class="col-md-12 column">
<form method='get' action='/searchuser' role="form" class="form-inline" data-toggle="validator">
<form method='get' action='./searchuser' role="form" class="form-inline" data-toggle="validator">
<div class="form-group">
<label for="searchstring">Search user</label>
<input type="text" id="searchstring" data-minlength="3" data-error="Too short" class="form-control" name="searchstring" placeholder="Search User" required>
Expand Down
4 changes: 2 additions & 2 deletions resources/templates/selfmodify.tmpl
Expand Up @@ -6,7 +6,7 @@
</div>
<div class="col-md-12 column">
<div class="well well-sm">
<form method='POST' action='/selfmodify' autocomplete="off" role="form" class="form-signin" id="form">
<form method='POST' action='./selfmodify' autocomplete="off" role="form" class="form-signin" id="form">
<legend>Modify your attributes:</legend>
${form | n}
</fieldset>
Expand All @@ -17,7 +17,7 @@
</div>
</div>
</form>
<script type="text/javascript" src="/static/js/ppolicy.js"></script>
<script type="text/javascript" src="./static/js/ppolicy.js"></script>
</div>
</div>
<div class="col-md-2 column">
Expand Down

0 comments on commit 71aa3c8

Please sign in to comment.