Add change_user_details
This commit is contained in:
parent
3bc2e0a7e5
commit
a909a9b5c5
2 changed files with 40 additions and 10 deletions
|
@ -142,6 +142,33 @@ class LdapManager:
|
|||
conn.unbind()
|
||||
return return_val
|
||||
|
||||
def change_user_details(self, uid, details):
|
||||
"""
|
||||
Updates the user details as per given values in kwargs of the user
|
||||
identified by user_dn.
|
||||
|
||||
Assumes that all attributes passed in kwargs are valid.
|
||||
|
||||
:param uid: str The uid that identifies the user
|
||||
:param details: dict A dictionary containing the new values
|
||||
:return: True if user details were updated successfully False otherwise
|
||||
"""
|
||||
conn = self.get_admin_conn()
|
||||
details_dict = {k: (ldap3.MODIFY_REPLACE, [v.encode("utf-8")]) for k, v in details.items()}
|
||||
try:
|
||||
return_val = conn.modify(
|
||||
("uid={uid}," + settings.LDAP_CUSTOMER_DN).format(uid=uid),
|
||||
details_dict
|
||||
)
|
||||
msg = "success"
|
||||
except Exception as ex:
|
||||
msg = str(ex)
|
||||
logger.error("Exception: " + msg)
|
||||
return_val = False
|
||||
finally:
|
||||
conn.unbind()
|
||||
return return_val, msg
|
||||
|
||||
def check_user_exists(self, uid, is_customer=True, search_filter="",
|
||||
attributes=None):
|
||||
"""
|
||||
|
|
23
dal/views.py
23
dal/views.py
|
@ -106,7 +106,7 @@ class ChangeData(View):
|
|||
user_exists, entries = ldap_manager.check_user_exists(
|
||||
uid=user.username,
|
||||
is_customer=True,
|
||||
attributes=['uid', 'givenName', 'sn', 'email']
|
||||
attributes=['uid', 'givenName', 'sn', 'mail']
|
||||
)
|
||||
|
||||
if user_exists:
|
||||
|
@ -118,8 +118,8 @@ class ChangeData(View):
|
|||
if entries[0].givenName.value is not None else '',
|
||||
'lastname': entries[0].sn
|
||||
if entries[0].sn.value is not None else '',
|
||||
'email': entries[0].email
|
||||
if entries[0].email.value is not None else ''}
|
||||
'email': entries[0].mail
|
||||
if entries[0].mail.value is not None else ''}
|
||||
)
|
||||
else:
|
||||
return render(request, 'error.html',
|
||||
|
@ -136,7 +136,6 @@ class ChangeData(View):
|
|||
if not request.user.is_authenticated:
|
||||
return render(request, 'mustbeloggedin.html')
|
||||
|
||||
user = str(request.user)
|
||||
firstname = request.POST.get('firstname')
|
||||
lastname = request.POST.get('lastname')
|
||||
email = request.POST.get('email')
|
||||
|
@ -152,15 +151,19 @@ class ChangeData(View):
|
|||
validate_email(email)
|
||||
except ValidationError:
|
||||
return render(request, 'error.html', { 'urlname': urlname, 'service': service, 'error': 'The supplied email address is invalid.' } )
|
||||
# Trying to change the data
|
||||
with get_pool().next() as rpc:
|
||||
result = rpc.changeuserdata.change_data(user, firstname, lastname, email)
|
||||
|
||||
ldap_manager = LdapManager()
|
||||
result, msg = ldap_manager.change_user_details(
|
||||
uid=request.user.username,
|
||||
details={"givenName": firstname, "sn": lastname, "mail": email}
|
||||
)
|
||||
|
||||
# Data change worked
|
||||
if result == True:
|
||||
return render(request, 'changeddata.html', { 'user': user, 'firstname': firstname, 'lastname': lastname, 'email': email } )
|
||||
if result:
|
||||
return render(request, 'changeddata.html', { 'user': request.user.username, 'firstname': firstname, 'lastname': lastname, 'email': email } )
|
||||
# Data change did not work, display error
|
||||
else:
|
||||
return render(request, 'error.html', { 'urlname': urlname, 'service': service, 'error': result } )
|
||||
return render(request, 'error.html', { 'urlname': urlname, 'service': service, 'error': msg } )
|
||||
|
||||
|
||||
class ResetPassword(View):
|
||||
|
|
Loading…
Reference in a new issue