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()
|
conn.unbind()
|
||||||
return return_val
|
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="",
|
def check_user_exists(self, uid, is_customer=True, search_filter="",
|
||||||
attributes=None):
|
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(
|
user_exists, entries = ldap_manager.check_user_exists(
|
||||||
uid=user.username,
|
uid=user.username,
|
||||||
is_customer=True,
|
is_customer=True,
|
||||||
attributes=['uid', 'givenName', 'sn', 'email']
|
attributes=['uid', 'givenName', 'sn', 'mail']
|
||||||
)
|
)
|
||||||
|
|
||||||
if user_exists:
|
if user_exists:
|
||||||
|
@ -118,8 +118,8 @@ class ChangeData(View):
|
||||||
if entries[0].givenName.value is not None else '',
|
if entries[0].givenName.value is not None else '',
|
||||||
'lastname': entries[0].sn
|
'lastname': entries[0].sn
|
||||||
if entries[0].sn.value is not None else '',
|
if entries[0].sn.value is not None else '',
|
||||||
'email': entries[0].email
|
'email': entries[0].mail
|
||||||
if entries[0].email.value is not None else ''}
|
if entries[0].mail.value is not None else ''}
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return render(request, 'error.html',
|
return render(request, 'error.html',
|
||||||
|
@ -136,7 +136,6 @@ class ChangeData(View):
|
||||||
if not request.user.is_authenticated:
|
if not request.user.is_authenticated:
|
||||||
return render(request, 'mustbeloggedin.html')
|
return render(request, 'mustbeloggedin.html')
|
||||||
|
|
||||||
user = str(request.user)
|
|
||||||
firstname = request.POST.get('firstname')
|
firstname = request.POST.get('firstname')
|
||||||
lastname = request.POST.get('lastname')
|
lastname = request.POST.get('lastname')
|
||||||
email = request.POST.get('email')
|
email = request.POST.get('email')
|
||||||
|
@ -152,15 +151,19 @@ class ChangeData(View):
|
||||||
validate_email(email)
|
validate_email(email)
|
||||||
except ValidationError:
|
except ValidationError:
|
||||||
return render(request, 'error.html', { 'urlname': urlname, 'service': service, 'error': 'The supplied email address is invalid.' } )
|
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:
|
ldap_manager = LdapManager()
|
||||||
result = rpc.changeuserdata.change_data(user, firstname, lastname, email)
|
result, msg = ldap_manager.change_user_details(
|
||||||
|
uid=request.user.username,
|
||||||
|
details={"givenName": firstname, "sn": lastname, "mail": email}
|
||||||
|
)
|
||||||
|
|
||||||
# Data change worked
|
# Data change worked
|
||||||
if result == True:
|
if result:
|
||||||
return render(request, 'changeddata.html', { 'user': user, 'firstname': firstname, 'lastname': lastname, 'email': email } )
|
return render(request, 'changeddata.html', { 'user': request.user.username, 'firstname': firstname, 'lastname': lastname, 'email': email } )
|
||||||
# Data change did not work, display error
|
# Data change did not work, display error
|
||||||
else:
|
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):
|
class ResetPassword(View):
|
||||||
|
|
Loading…
Reference in a new issue