Browse Source

fix: 500 error caused by duplicate email or username

pull/14092/head
wangruidong 3 months ago committed by Bryan
parent
commit
55e8e34226
  1. 13
      apps/authentication/backends/oidc/views.py
  2. 20
      apps/i18n/core/ja/LC_MESSAGES/django.po
  3. 17
      apps/i18n/core/zh/LC_MESSAGES/django.po
  4. 16
      apps/i18n/core/zh_Hant/LC_MESSAGES/django.po

13
apps/authentication/backends/oidc/views.py

@ -17,13 +17,16 @@ import time
from django.conf import settings
from django.contrib import auth
from django.core.exceptions import SuspiciousOperation
from django.db import IntegrityError
from django.http import HttpResponseRedirect, QueryDict
from django.urls import reverse
from django.utils.crypto import get_random_string
from django.utils.http import urlencode
from django.views.generic import View
from django.utils.translation import gettext_lazy as _
from authentication.utils import build_absolute_uri_for_oidc
from authentication.views.mixins import FlashMessageMixin
from common.utils import safe_next_url
from .utils import get_logger
@ -113,7 +116,7 @@ class OIDCAuthRequestView(View):
return HttpResponseRedirect(redirect_url)
class OIDCAuthCallbackView(View):
class OIDCAuthCallbackView(View, FlashMessageMixin):
""" Allows to complete the authentication process.
This view acts as the main endpoint to complete the authentication process involving the OIDC
@ -165,7 +168,13 @@ class OIDCAuthCallbackView(View):
next_url = request.session.get('oidc_auth_next_url', None)
code_verifier = request.session.get('oidc_auth_code_verifier', None)
logger.debug(log_prompt.format('Process authenticate'))
user = auth.authenticate(nonce=nonce, request=request, code_verifier=code_verifier)
try:
user = auth.authenticate(nonce=nonce, request=request, code_verifier=code_verifier)
except IntegrityError:
title = _("OpenID Error")
msg = _('Username or email already exists, Please check')
response = self.get_failed_response('/', title, msg)
return response
if user:
logger.debug(log_prompt.format('Login: {}'.format(user)))
auth.login(self.request, user)

20
apps/i18n/core/ja/LC_MESSAGES/django.po

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-30 15:08+0800\n"
"POT-Creation-Date: 2024-09-02 10:59+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -1140,7 +1140,15 @@ msgstr "パスワード変更記録とプッシュ記録を定期的にクリア
#: accounts/tasks/automation.py:87
msgid "Clean change secret and push record period description"
msgstr "システムは、変更タスク、実行レコード、資産、アカウントに関連するものを含め、不要な変更シークレット レコードとプッシュ レコードを定期的にクリーンアップします。これらの関連項目のいずれかが削除されると、対応する変更シークレット レコードとプッシュ レコードは無効になります。したがって、整然とした効率的なデータベースを維持するために、システムはデフォルトでこれらの無効なレコードを 180 日ごとに自動的にクリーンアップします。この定期的なクリーンアップ プロセスにより、ストレージ領域が解放され、データ管理のセキュリティと全体的なパフォーマンスが向上します。"
msgstr ""
"システムは、変更タスク、実行レコード、資産、アカウントに関連するものを含め、"
"不要な変更シークレット レコードとプッシュ レコードを定期的にクリーンアップし"
"ます。これらの関連項目のいずれかが削除されると、対応する変更シークレット レ"
"コードとプッシュ レコードは無効になります。したがって、整然とした効率的なデー"
"タベースを維持するために、システムはデフォルトでこれらの無効なレコードを 180 "
"日ごとに自動的にクリーンアップします。この定期的なクリーンアップ プロセスによ"
"り、ストレージ領域が解放され、データ管理のセキュリティと全体的なパフォーマン"
"スが向上します。"
#: accounts/tasks/backup_account.py:25
msgid "Execute account backup plan"
@ -2972,6 +2980,14 @@ msgstr ""
msgid "Invalid token or cache refreshed."
msgstr "無効なトークンまたはキャッシュの更新。"
#: authentication/backends/oidc/views.py:174
msgid "OpenID Error"
msgstr "OpenID エラー"
#: authentication/backends/oidc/views.py:175
msgid "Username or email already exists, Please check"
msgstr "ユーザー名またはメールアドレスが既に存在しています。ご確認ください"
#: authentication/backends/passkey/api.py:37
msgid "Only register passkey for local user"
msgstr "ローカル・ユーザーのみの鍵の登録"

17
apps/i18n/core/zh/LC_MESSAGES/django.po

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: JumpServer 0.3.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-30 15:08+0800\n"
"POT-Creation-Date: 2024-09-02 10:59+0800\n"
"PO-Revision-Date: 2021-05-20 10:54+0800\n"
"Last-Translator: ibuler <ibuler@qq.com>\n"
"Language-Team: JumpServer team<ibuler@qq.com>\n"
@ -1136,7 +1136,12 @@ msgstr "周期清理改密记录和推送记录"
#: accounts/tasks/automation.py:87
msgid "Clean change secret and push record period description"
msgstr "系统会定期清理不再需要的改密记录和推送记录,包括那些关联的改密任务、执行记录、资产和账号。当这些关联项中的任意一个被删除时,对应的改密和推送记录将变为无效。因此,为了保持数据库的整洁和高效运行,系统默认每180天自动清理这些无效记录。这种定期清理机制不仅有助于释放存储空间,还能提高数据管理的安全性和整体性能。"
msgstr ""
"系统会定期清理不再需要的改密记录和推送记录,包括那些关联的改密任务、执行记"
"录、资产和账号。当这些关联项中的任意一个被删除时,对应的改密和推送记录将变为"
"无效。因此,为了保持数据库的整洁和高效运行,系统默认每180天自动清理这些无效记"
"录。这种定期清理机制不仅有助于释放存储空间,还能提高数据管理的安全性和整体性"
"能。"
#: accounts/tasks/backup_account.py:25
msgid "Execute account backup plan"
@ -2942,6 +2947,14 @@ msgstr "无效的令牌头。符号字符串不应包含无效字符。"
msgid "Invalid token or cache refreshed."
msgstr "刷新的令牌或缓存无效。"
#: authentication/backends/oidc/views.py:174
msgid "OpenID Error"
msgstr "OpenID 错误"
#: authentication/backends/oidc/views.py:175
msgid "Username or email already exists, Please check"
msgstr "用户名或者邮箱已经存在,请检查"
#: authentication/backends/passkey/api.py:37
msgid "Only register passkey for local user"
msgstr "仅为本地用户注册密钥"

16
apps/i18n/core/zh_Hant/LC_MESSAGES/django.po

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: JumpServer 0.3.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-30 15:08+0800\n"
"POT-Creation-Date: 2024-09-02 10:59+0800\n"
"PO-Revision-Date: 2021-05-20 10:54+0800\n"
"Last-Translator: ibuler <ibuler@qq.com>\n"
"Language-Team: JumpServer team<ibuler@qq.com>\n"
@ -1138,7 +1138,11 @@ msgstr "週期清理改密記錄和推送記錄"
#: accounts/tasks/automation.py:87
msgid "Clean change secret and push record period description"
msgstr "系統會定期清理不必要的變更密文記錄和推播記錄,包括與變更任務、執行記錄、資產、帳戶相關的記錄。當任何這些關聯項被刪除時,相應的變更秘密和推送記錄將變得無效。因此,為了保持資料庫整潔、高效,系統預設每180天自動清理一次這些無效記錄。這種定期清理過程有助於釋放儲存空間並提高資料管理的安全性和整體效能。"
msgstr ""
"系統會定期清理不必要的變更密文記錄和推播記錄,包括與變更任務、執行記錄、資"
"產、帳戶相關的記錄。當任何這些關聯項被刪除時,相應的變更秘密和推送記錄將變得"
"無效。因此,為了保持資料庫整潔、高效,系統預設每180天自動清理一次這些無效記"
"錄。這種定期清理過程有助於釋放儲存空間並提高資料管理的安全性和整體效能。"
#: accounts/tasks/backup_account.py:25
msgid "Execute account backup plan"
@ -2944,6 +2948,14 @@ msgstr "無效的令牌頭。符號字串不應包含無效字元。"
msgid "Invalid token or cache refreshed."
msgstr "刷新的令牌或快取無效。"
#: authentication/backends/oidc/views.py:174
msgid "OpenID Error"
msgstr "OpenID 錯誤"
#: authentication/backends/oidc/views.py:175
msgid "Username or email already exists, Please check"
msgstr "使用者名稱或者電子郵件已經存在,請檢查"
#: authentication/backends/passkey/api.py:37
msgid "Only register passkey for local user"
msgstr "僅為本地用戶註冊金鑰"

Loading…
Cancel
Save