feat: 完善鉴权和密码功能,添加飞书通知模块

- 完善Token过期/不存在时跳转登录重新认证
- 实现正常的账号密码登录验证(邮箱/手机号+密码)
- 用户初始化密码设为工号(sn)
- 添加修改密码功能(API+前端页面)
- 修复扫码登录后跳转问题(zustand persist格式)
- 创建飞书通知服务 FeishuNotificationService
- 设置页面添加修改密码入口

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
root
2026-02-26 15:19:37 +08:00
parent ba555a59b7
commit 2e5f570b40
26 changed files with 2925 additions and 158 deletions
+19 -4
View File
@@ -138,7 +138,23 @@
"language": "Language",
"switchCompany": "Switch Company",
"notifications": "Notifications",
"security": "Security"
"security": "Security",
"changePassword": "Change Password"
},
"changePassword": {
"title": "Change Password",
"oldPassword": "Current Password",
"newPassword": "New Password",
"confirmPassword": "Confirm Password",
"oldPasswordPlaceholder": "Enter current password",
"newPasswordPlaceholder": "Enter new password (at least 6 characters)",
"confirmPasswordPlaceholder": "Enter new password again",
"submit": "Confirm",
"success": "Password changed successfully",
"oldPasswordError": "Current password is incorrect",
"passwordMismatch": "Passwords do not match",
"passwordTooShort": "New password must be at least 6 characters",
"fillAllFields": "Please fill in all fields"
},
"login": {
"title": "Login",
@@ -150,9 +166,8 @@
"loginFailed": "Login failed"
},
"settings": {
"language": "Language",
"theme": "Theme",
"notifications": "Notifications"
"title": "Settings",
"language": "Language"
},
"error": {
"networkError": "Network error, please try again later",
+19 -4
View File
@@ -113,7 +113,23 @@
"language": "Idioma",
"switchCompany": "Cambiar Empresa",
"notifications": "Notificaciones",
"security": "Seguridad"
"security": "Seguridad",
"changePassword": "Cambiar Contraseña"
},
"changePassword": {
"title": "Cambiar Contraseña",
"oldPassword": "Contraseña Actual",
"newPassword": "Nueva Contraseña",
"confirmPassword": "Confirmar Contraseña",
"oldPasswordPlaceholder": "Ingrese la contraseña actual",
"newPasswordPlaceholder": "Ingrese la nueva contraseña (mínimo 6 caracteres)",
"confirmPasswordPlaceholder": "Ingrese la nueva contraseña nuevamente",
"submit": "Confirmar",
"success": "Contraseña cambiada exitosamente",
"oldPasswordError": "La contraseña actual es incorrecta",
"passwordMismatch": "Las contraseñas no coinciden",
"passwordTooShort": "La nueva contraseña debe tener al menos 6 caracteres",
"fillAllFields": "Por favor complete todos los campos"
},
"login": {
"title": "Iniciar Sesión",
@@ -125,9 +141,8 @@
"loginFailed": "Error de inicio de sesión"
},
"settings": {
"language": "Idioma",
"theme": "Tema",
"notifications": "Notificaciones"
"title": "Configuración",
"language": "Idioma"
},
"error": {
"networkError": "Error de red, inténtelo más tarde",
+19 -4
View File
@@ -113,7 +113,23 @@
"language": "Langue",
"switchCompany": "Changer d'Entreprise",
"notifications": "Notifications",
"security": "Sécurité"
"security": "Sécurité",
"changePassword": "Changer le Mot de Passe"
},
"changePassword": {
"title": "Changer le Mot de Passe",
"oldPassword": "Mot de Passe Actuel",
"newPassword": "Nouveau Mot de Passe",
"confirmPassword": "Confirmer le Mot de Passe",
"oldPasswordPlaceholder": "Entrez le mot de passe actuel",
"newPasswordPlaceholder": "Entrez le nouveau mot de passe (au moins 6 caractères)",
"confirmPasswordPlaceholder": "Entrez le nouveau mot de passe à nouveau",
"submit": "Confirmer",
"success": "Mot de passe changé avec succès",
"oldPasswordError": "Le mot de passe actuel est incorrect",
"passwordMismatch": "Les mots de passe ne correspondent pas",
"passwordTooShort": "Le nouveau mot de passe doit contenir au moins 6 caractères",
"fillAllFields": "Veuillez remplir tous les champs"
},
"login": {
"title": "Connexion",
@@ -125,9 +141,8 @@
"loginFailed": "Échec de la connexion"
},
"settings": {
"language": "Langue",
"theme": "Thème",
"notifications": "Notifications"
"title": "Paramètres",
"language": "Langue"
},
"error": {
"networkError": "Erreur réseau, veuillez réessayer plus tard",
+19 -4
View File
@@ -113,7 +113,23 @@
"language": "Язык",
"switchCompany": "Сменить компанию",
"notifications": "Уведомления",
"security": "Безопасность"
"security": "Безопасность",
"changePassword": "Изменить пароль"
},
"changePassword": {
"title": "Изменить пароль",
"oldPassword": "Текущий пароль",
"newPassword": "Новый пароль",
"confirmPassword": "Подтвердите пароль",
"oldPasswordPlaceholder": "Введите текущий пароль",
"newPasswordPlaceholder": "Введите новый пароль (минимум 6 символов)",
"confirmPasswordPlaceholder": "Введите новый пароль снова",
"submit": "Подтвердить",
"success": "Пароль успешно изменен",
"oldPasswordError": "Текущий пароль неверен",
"passwordMismatch": "Пароли не совпадают",
"passwordTooShort": "Новый пароль должен быть не менее 6 символов",
"fillAllFields": "Пожалуйста, заполните все поля"
},
"login": {
"title": "Вход",
@@ -125,9 +141,8 @@
"loginFailed": "Ошибка входа"
},
"settings": {
"language": "Язык",
"theme": "Тема",
"notifications": "Уведомления"
"title": "Настройки",
"language": "Язык"
},
"error": {
"networkError": "Ошибка сети, попробуйте позже",
+19 -4
View File
@@ -138,7 +138,23 @@
"language": "语言设置",
"switchCompany": "切换公司",
"notifications": "消息通知",
"security": "账号安全"
"security": "账号安全",
"changePassword": "修改密码"
},
"changePassword": {
"title": "修改密码",
"oldPassword": "原密码",
"newPassword": "新密码",
"confirmPassword": "确认密码",
"oldPasswordPlaceholder": "请输入原密码",
"newPasswordPlaceholder": "请输入新密码(至少6位)",
"confirmPasswordPlaceholder": "请再次输入新密码",
"submit": "确认修改",
"success": "密码修改成功",
"oldPasswordError": "原密码错误",
"passwordMismatch": "两次输入的密码不一致",
"passwordTooShort": "新密码长度不能少于6位",
"fillAllFields": "请填写完整信息"
},
"login": {
"title": "登录",
@@ -150,9 +166,8 @@
"loginFailed": "登录失败"
},
"settings": {
"language": "语言",
"theme": "主题",
"notifications": "通知设置"
"title": "设置",
"language": "语言"
},
"error": {
"networkError": "网络错误,请稍后重试",