Skip to content

Commit

Permalink
Merge pull request #135 from fsinfuhh/generate_reset_url
Browse files Browse the repository at this point in the history
Generate password reset url
  • Loading branch information
timonegk authored Oct 8, 2023
2 parents a59bade + 7410456 commit 221e630
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 5 deletions.
1 change: 1 addition & 0 deletions mafiasi/registration/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
path("change_email/<token>", change_email, name="registration_change_email"),
path("request_successful", request_successful, name="registration_request_successful"),
path("account", account_settings, name="registration_account"),
path("password_reset", password_reset, name="registration_password_reset"),
]

if settings.REGISTER_ENABLED:
Expand Down
21 changes: 20 additions & 1 deletion mafiasi/registration/views.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from smtplib import SMTPRecipientsRefused
from urllib.parse import urlencode

from django.conf import settings
from django.contrib import messages
Expand Down Expand Up @@ -316,11 +317,12 @@ def _finish_account_request(request, info):

def _send_email_exists(request, username):
email = Mafiasi.objects.get(username=username).real_email
password_reset_url = request.build_absolute_uri(reverse("registration_password_reset"))
email_content = render_to_string(
"registration/email_exists.txt",
{
"username": username,
"password_reset_url": settings.PASSWORD_RESET_URL,
"password_reset_url": password_reset_url,
},
)
return _send_mail_or_error_page(
Expand Down Expand Up @@ -357,3 +359,20 @@ def _send_mail_or_error_page(subject, content, address, request, email_shown):
"email": email_shown,
},
)


def password_reset(request):
password_reset_url = settings.PASSWORD_RESET_URL
if password_reset_url is None:
password_reset_url = (
settings.OPENID_ISSUER
+ "/login-actions/reset-credentials?"
+ urlencode(
{
"response_type": "code",
"client_id": settings.OPENID_CLIENT_ID,
"redirect_uri": request.build_absolute_uri(reverse(settings.LOGIN_URL)),
}
)
)
return redirect(password_reset_url)
7 changes: 3 additions & 4 deletions mafiasi/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,9 @@
KEYCLOAK_ACCOUNT_CONSOLE_URL = env.str(
"MAFIASI_KEYCLOAK_ACCOUNT_CONSOLE_URL", default="https://identity.mafiasi.de/realms/mafiasi/account"
)
PASSWORD_RESET_URL = env.str(
"MAFIASI_PASSWORD_RESET_URL",
default="https://identity.mafiasi.de/realms/mafiasi/login-actions/reset-credentials",
)

# If this is None, it is automatically generated from OPENID_ISSUER
PASSWORD_RESET_URL = env.str("MAFIASI_PASSWORD_RESET_URL", default=None)

OPENID_SYNC_SUPERUSER = env.bool("MAFIASI_OPENID_SYNC_SUPERUSER", default=True)
if OPENID_SYNC_SUPERUSER:
Expand Down

0 comments on commit 221e630

Please sign in to comment.