Sfoglia il codice sorgente

fix: personal setting

Seefs 2 mesi fa
parent
commit
013a575541

+ 3 - 2
model/passkey.go

@@ -141,9 +141,10 @@ func GetPasskeyByUserID(userID int) (*PasskeyCredential, error) {
 	var credential PasskeyCredential
 	if err := DB.Where("user_id = ?", userID).First(&credential).Error; err != nil {
 		if errors.Is(err, gorm.ErrRecordNotFound) {
-			common.SysLog(fmt.Sprintf("GetPasskeyByUserID: passkey not found for user %d", userID))
-			return nil, ErrFriendlyPasskeyNotFound
+			// 未找到记录是正常情况(用户未绑定),返回 ErrPasskeyNotFound 而不记录日志
+			return nil, ErrPasskeyNotFound
 		}
+		// 只有真正的数据库错误才记录日志
 		common.SysLog(fmt.Sprintf("GetPasskeyByUserID: database error for user %d: %v", userID, err))
 		return nil, ErrFriendlyPasskeyNotFound
 	}

+ 17 - 4
web/src/components/settings/personal/cards/AccountManagement.jsx

@@ -525,10 +525,23 @@ const AccountManagement = ({
                       </div>
                     </div>
                     <Button
-                      type='primary'
-                      theme={passkeyEnabled ? 'outline' : 'solid'}
-                      onClick={passkeyEnabled ? onPasskeyDelete : onPasskeyRegister}
-                      className='w-full sm:w-auto'
+                      type={passkeyEnabled ? 'danger' : 'primary'}
+                      theme={passkeyEnabled ? 'solid' : 'solid'}
+                      onClick={
+                        passkeyEnabled
+                          ? () => {
+                              Modal.confirm({
+                                title: t('确认解绑 Passkey'),
+                                content: t('解绑后将无法使用 Passkey 登录,确定要继续吗?'),
+                                okText: t('确认解绑'),
+                                cancelText: t('取消'),
+                                okType: 'danger',
+                                onOk: onPasskeyDelete,
+                              });
+                            }
+                          : onPasskeyRegister
+                      }
+                      className={`w-full sm:w-auto ${passkeyEnabled ? '!bg-slate-500 hover:!bg-slate-600' : ''}`}
                       icon={<IconKey />}
                       disabled={!passkeySupported && !passkeyEnabled}
                       loading={passkeyEnabled ? passkeyDeleteLoading : passkeyRegisterLoading}

+ 3 - 0
web/src/i18n/locales/en.json

@@ -334,6 +334,9 @@
   "允许通过 GitHub 账户登录 & 注册": "Allow login & registration via GitHub account",
   "允许通过微信登录 & 注册": "Allow login & registration via WeChat",
   "允许通过 Passkey 登录 & 认证": "Allow login & authentication via Passkey",
+  "确认解绑 Passkey": "Confirm Unbind Passkey",
+  "解绑后将无法使用 Passkey 登录,确定要继续吗?": "After unbinding, you will not be able to login with Passkey. Are you sure you want to continue?",
+  "确认解绑": "Confirm Unbind",
   "允许新用户注册(此项为否时,新用户将无法以任何方式进行注册": "Allow new user registration (if this option is off, new users will not be able to register in any way",
   "启用 Turnstile 用户校验": "Enable Turnstile user verification",
   "配置 SMTP": "Configure SMTP",

+ 4 - 1
web/src/i18n/locales/zh.json

@@ -91,5 +91,8 @@
   "目标用户:{{username}}": "目标用户:{{username}}",
   "Passkey 已重置": "Passkey 已重置",
   "二步验证已重置": "二步验证已重置",
-  "允许通过 Passkey 登录 & 认证": "允许通过 Passkey 登录 & 认证"
+  "允许通过 Passkey 登录 & 认证": "允许通过 Passkey 登录 & 认证",
+  "确认解绑 Passkey": "确认解绑 Passkey",
+  "解绑后将无法使用 Passkey 登录,确定要继续吗?": "解绑后将无法使用 Passkey 登录,确定要继续吗?",
+  "确认解绑": "确认解绑"
 }