admin: clean up mifareidhash modification

papertrail
radex 2023-11-23 20:07:26 +01:00
parent 9e5c7a3fcb
commit a01336216d
Signed by: radex
SSH Key Fingerprint: SHA256:b3QaEVpbYuvL6Q4zJ5I/huZ2qyWT1nASLZZXVRNcppw
1 changed files with 28 additions and 49 deletions

View File

@ -130,9 +130,7 @@ def admin_user_view_del_mifareidhash(uid):
value = flask.request.args.get('value')
return flask.render_template('admin/ops/del_mifareidhash.html', uid=uid, form=form, value=value)
@bp.route('/admin/users/<uid>/add_mifareidhash', methods=['POST'])
@admin_required
def admin_user_add_mifareidhash(uid):
def _modify_mifareidhash(uid, form, modify_func):
ldaputils.validate_name(uid)
conn = context.get_connection()
@ -145,17 +143,9 @@ def admin_user_add_mifareidhash(uid):
return flask.redirect(redirect_url)
try:
form = AddMifareIDHash()
if form.validate_on_submit():
new_value = form.value.data
email.send_papertrail(
f'Adding mifareIDHash for user {uid}',
f'New mifareIDHash: {new_value}'
)
dn = ldaputils.user_dn(uid)
conn.modify_s(dn, [(ldap.MOD_ADD, 'mifareidhash', new_value.encode('utf-8'))])
modify_func(conn, dn)
context.refresh_profile(dn)
flask.flash('Added mifareidhash', category='info')
@ -174,49 +164,38 @@ def admin_user_add_mifareidhash(uid):
flask.flash(f'Could not modify profile due to LDAP error: {e}', 'danger')
return flask.redirect(redirect_url)
@bp.route('/admin/users/<uid>/add_mifareidhash', methods=['POST'])
@admin_required
def admin_user_add_mifareidhash(uid):
form = AddMifareIDHash()
def modify_func(conn, dn):
new_value = form.value.data
email.send_papertrail(
f'Adding mifareIDHash for user {uid}',
f'New mifareIDHash: {new_value}'
)
conn.modify_s(dn, [(ldap.MOD_ADD, 'mifareidhash', new_value.encode('utf-8'))])
return _modify_mifareidhash(uid, form, modify_func)
@bp.route('/admin/users/<uid>/del_mifareidhash', methods=['POST'])
@admin_required
def admin_user_del_mifareidhash(uid):
ldaputils.validate_name(uid)
conn = context.get_connection()
form = DelForm()
def modify_func(conn, dn):
old_value = flask.request.args.get('value')
groups = _get_groups_of(conn, uid)
is_protected = _is_user_protected(conn, uid, groups)
email.send_papertrail(
f'Deleting mifareIDHash for user {uid}',
f'Deleted mifareIDHash: {old_value}'
)
redirect_url = flask.url_for('admin.admin_user_view', uid=uid)
if is_protected:
flask.flash('Cannot modify protected user', 'danger')
return flask.redirect(redirect_url)
conn.modify_s(dn, [(ldap.MOD_DELETE, 'mifareidhash', old_value.encode('utf-8'))])
try:
form = DelForm()
if form.validate_on_submit():
old_value = flask.request.args.get('value')
email.send_papertrail(
f'Deleting mifareIDHash for user {uid}',
f'Deleted mifareIDHash: {old_value}'
)
dn = ldaputils.user_dn(uid)
conn.modify_s(dn, [(ldap.MOD_DELETE, 'mifareidhash', old_value.encode('utf-8'))])
context.refresh_profile(dn)
flask.flash('Deleted mifareidhash', category='info')
return flask.redirect(redirect_url)
for field, errors in form.errors.items():
for error in errors:
flask.flash("Error in the {} field - {}".format(
getattr(form, field).label.text,
error
), 'danger')
return flask.redirect(redirect_url)
except ldap.LDAPError as e:
print('LDAP error:', e)
flask.flash(f'Could not modify profile due to LDAP error: {e}', 'danger')
return flask.redirect(redirect_url)
return _modify_mifareidhash(uid, form, modify_func)
@bp.route('/admin/groups/')
@admin_required