Use LdapManager in password reset too
This commit is contained in:
parent
16b02cfe3f
commit
acff3fc592
1 changed files with 39 additions and 15 deletions
54
dal/views.py
54
dal/views.py
|
@ -175,22 +175,46 @@ class ResetPassword(View):
|
|||
service = 'send a password reset request'
|
||||
user = request.POST.get('user')
|
||||
# First, check if the user exists
|
||||
if not check_user_exists(user):
|
||||
return render(request, 'error.html', { 'urlname': urlname, 'service': service, 'error': 'The user does not exist.' } )
|
||||
# user exists, so try to get email
|
||||
with get_pool().next() as rpc:
|
||||
(state, tmp1, tmp2, email) = rpc.getuserdata.get_data(user)
|
||||
# Either error with the datalookup or no email provided
|
||||
if state == "error" or email == 'No email given' or not email:
|
||||
return render(request, 'error.html', { 'urlname': urlname, 'service': service, 'error': 'Unable to retrieve email address for user.' } )
|
||||
# Try to send the email out
|
||||
emailsend = self.email(user, email)
|
||||
# Email got sent out
|
||||
if emailsend == True:
|
||||
return render(request, 'send_resetrequest.html', { 'user': user } )
|
||||
# Error while trying to send email
|
||||
ldap_manager = LdapManager()
|
||||
user_exists, entries = ldap_manager.check_user_exists(
|
||||
uid=user,
|
||||
attributes=['uid', 'givenName', 'sn', 'mail']
|
||||
)
|
||||
if user_exists and request.user.username == user:
|
||||
# user exists, so try to get email
|
||||
# with get_pool().next() as rpc:
|
||||
# (state, tmp1, tmp2, email) = rpc.getuserdata.get_data(user)
|
||||
# Either error with the datalookup or no email provided
|
||||
email = entries[0].mail.value
|
||||
if email is None:
|
||||
return render(
|
||||
request, 'error.html',
|
||||
{'urlname': urlname, 'service': service,
|
||||
'error': 'Unable to retrieve email address for user.'}
|
||||
)
|
||||
|
||||
base_url = "{0}://{1}".format(self.request.scheme,
|
||||
self.request.get_host())
|
||||
# Try to send the email out
|
||||
emailsend = self.email(user, email, base_url)
|
||||
# Email got sent out
|
||||
if emailsend == True:
|
||||
return render(
|
||||
request, 'send_resetrequest.html', {'user': user}
|
||||
)
|
||||
# Error while trying to send email
|
||||
else:
|
||||
return render(
|
||||
request, 'error.html',
|
||||
{'urlname': urlname, 'service': service,
|
||||
'error': emailsend}
|
||||
)
|
||||
else:
|
||||
return render(request, 'error.html', { 'urlname': urlname, 'service': service, 'error': emailsend } )
|
||||
return render(
|
||||
request, 'error.html',
|
||||
{ 'urlname': urlname, 'service': service,
|
||||
'error': 'The user does not exist.' }
|
||||
)
|
||||
|
||||
# Sends an email to the user with the 24h active link for a password reset
|
||||
def email(self, user, email, base_url):
|
||||
|
|
Loading…
Reference in a new issue