feat: add reset link expiration option in authentication settings

This commit is contained in:
Zeke Zhang 2025-04-15 16:58:14 +08:00
parent c8022d3da7
commit 2a5f034b4c
16 changed files with 48 additions and 17 deletions

View File

@ -889,5 +889,6 @@
"Click the \"UI Editor\" icon in the upper right corner to enter the UI Editor mode": "Klicken Sie auf das \"UI-Editor\"-Symbol in der oberen rechten Ecke, um den UI-Editor-Modus zu betreten", "Click the \"UI Editor\" icon in the upper right corner to enter the UI Editor mode": "Klicken Sie auf das \"UI-Editor\"-Symbol in der oberen rechten Ecke, um den UI-Editor-Modus zu betreten",
"Refresh data blocks": "Aktualisieren Sie die Datenblöcke", "Refresh data blocks": "Aktualisieren Sie die Datenblöcke",
"Select data blocks to refresh": "Wählen Sie die Datenblöcke aus, die aktualisiert werden sollen.", "Select data blocks to refresh": "Wählen Sie die Datenblöcke aus, die aktualisiert werden sollen.",
"After successful submission, the selected data blocks will be automatically refreshed.": "Nach erfolgreicher Übermittlung werden die ausgewählten Datenblöcke automatisch aktualisiert." "After successful submission, the selected data blocks will be automatically refreshed.": "Nach erfolgreicher Übermittlung werden die ausgewählten Datenblöcke automatisch aktualisiert.",
"Reset link expiration (minutes)": "Linkablauf zurücksetzen (Minuten)"
} }

View File

@ -893,6 +893,6 @@
"Full permissions": "Full permissions", "Full permissions": "Full permissions",
"Refresh data blocks": "Refresh data blocks", "Refresh data blocks": "Refresh data blocks",
"Select data blocks to refresh": "Select data blocks to refresh", "Select data blocks to refresh": "Select data blocks to refresh",
"After successful submission, the selected data blocks will be automatically refreshed.": "After successful submission, the selected data blocks will be automatically refreshed." "After successful submission, the selected data blocks will be automatically refreshed.": "After successful submission, the selected data blocks will be automatically refreshed.",
"Reset link expiration (minutes)": "Reset link expiration (minutes)"
} }

View File

@ -810,5 +810,6 @@
"Full permissions": "Todos los derechos", "Full permissions": "Todos los derechos",
"Refresh data blocks": "Actualizar bloques de datos", "Refresh data blocks": "Actualizar bloques de datos",
"Select data blocks to refresh": "Actualizar bloques de datos", "Select data blocks to refresh": "Actualizar bloques de datos",
"After successful submission, the selected data blocks will be automatically refreshed.": "Después de enviar correctamente, los bloques de datos seleccionados se actualizarán automáticamente." "After successful submission, the selected data blocks will be automatically refreshed.": "Después de enviar correctamente, los bloques de datos seleccionados se actualizarán automáticamente.",
"Reset link expiration (minutes)": "Restablecer la expiración del enlace (minutos)"
} }

View File

@ -830,5 +830,6 @@
"Full permissions": "Tous les droits", "Full permissions": "Tous les droits",
"Refresh data blocks": "Actualiser les blocs de données", "Refresh data blocks": "Actualiser les blocs de données",
"Select data blocks to refresh": "Actualiser les blocs de données", "Select data blocks to refresh": "Actualiser les blocs de données",
"After successful submission, the selected data blocks will be automatically refreshed.": "Après une soumission réussie, les blocs de données sélectionnés seront automatiquement actualisés." "After successful submission, the selected data blocks will be automatically refreshed.": "Après une soumission réussie, les blocs de données sélectionnés seront automatiquement actualisés.",
"Reset link expiration (minutes)": "Réinitialiser l'expiration du lien (minutes)"
} }

View File

@ -1088,5 +1088,6 @@
"Click the \"UI Editor\" icon in the upper right corner to enter the UI Editor mode": "Cliquez sur l'icône \"Éditeur d'interface utilisateur\" dans le coin supérieur droit pour entrer en mode Éditeur d'interface utilisateur", "Click the \"UI Editor\" icon in the upper right corner to enter the UI Editor mode": "Cliquez sur l'icône \"Éditeur d'interface utilisateur\" dans le coin supérieur droit pour entrer en mode Éditeur d'interface utilisateur",
"Refresh data blocks": "Aggiorna blocchi di dati", "Refresh data blocks": "Aggiorna blocchi di dati",
"Select data blocks to refresh": "Aggiorna blocchi di dati", "Select data blocks to refresh": "Aggiorna blocchi di dati",
"After successful submission, the selected data blocks will be automatically refreshed.": "Dopo una soumission réussie, les blocs de données sélectionnés seront automatiquement actualisés." "After successful submission, the selected data blocks will be automatically refreshed.": "Dopo una soumission réussie, les blocs de données sélectionnés seront automatiquement actualisés.",
"Reset link expiration (minutes)": "Reimposta scadenza link (minuti)"
} }

View File

@ -1048,5 +1048,6 @@
"Full permissions": "すべての権限", "Full permissions": "すべての権限",
"Refresh data blocks": "データブロックを更新", "Refresh data blocks": "データブロックを更新",
"Select data blocks to refresh": "データブロックを選択して更新", "Select data blocks to refresh": "データブロックを選択して更新",
"After successful submission, the selected data blocks will be automatically refreshed.": "送信後、選択したデータブロックが自動的に更新されます。" "After successful submission, the selected data blocks will be automatically refreshed.": "送信後、選択したデータブロックが自動的に更新されます。",
"Reset link expiration (minutes)": "リンクの有効期限をリセット (分)"
} }

View File

@ -921,5 +921,6 @@
"Full permissions": "모든 권한", "Full permissions": "모든 권한",
"Refresh data blocks": "데이터 블록 새로 고침", "Refresh data blocks": "데이터 블록 새로 고침",
"Select data blocks to refresh": "데이터 블록을 선택하여 새로 고침", "Select data blocks to refresh": "데이터 블록을 선택하여 새로 고침",
"After successful submission, the selected data blocks will be automatically refreshed.": "전송 후, 선택한 데이터 블록이 자동으로 새로 고쳐집니다." "After successful submission, the selected data blocks will be automatically refreshed.": "전송 후, 선택한 데이터 블록이 자동으로 새로 고쳐집니다.",
"Reset link expiration (minutes)": "링크 만료 재설정 (분)"
} }

View File

@ -1057,5 +1057,6 @@
"Italic": "Cursief", "Italic": "Cursief",
"Refresh data blocks": "Vernieuw gegevensblokken", "Refresh data blocks": "Vernieuw gegevensblokken",
"Select data blocks to refresh": "Selecteer gegevensblokken om te vernieuwen", "Select data blocks to refresh": "Selecteer gegevensblokken om te vernieuwen",
"After successful submission, the selected data blocks will be automatically refreshed.": "Na succesvolle indiening worden de geselecteerde gegevensblokken automatisch vernieuwd." "After successful submission, the selected data blocks will be automatically refreshed.": "Na succesvolle indiening worden de geselecteerde gegevensblokken automatisch vernieuwd.",
"Reset link expiration (minutes)": "Reset linkverval (minuten)"
} }

View File

@ -790,5 +790,6 @@
"Click the \"UI Editor\" icon in the upper right corner to enter the UI Editor mode": "Cliquez sur l'icône \"Éditeur d'interface utilisateur\" dans le coin supérieur droit pour entrer en mode Éditeur d'interface utilisateur", "Click the \"UI Editor\" icon in the upper right corner to enter the UI Editor mode": "Cliquez sur l'icône \"Éditeur d'interface utilisateur\" dans le coin supérieur droit pour entrer en mode Éditeur d'interface utilisateur",
"Refresh data blocks": "Atualizar blocos de dados", "Refresh data blocks": "Atualizar blocos de dados",
"Select data blocks to refresh": "Selecionar blocos de dados para atualizar", "Select data blocks to refresh": "Selecionar blocos de dados para atualizar",
"After successful submission, the selected data blocks will be automatically refreshed.": "Após a atualização em massa bem sucedida." "After successful submission, the selected data blocks will be automatically refreshed.": "Após a atualização em massa bem sucedida.",
"Reset link expiration (minutes)": "Redefinir expiração do link (minutos)"
} }

View File

@ -619,5 +619,6 @@
"Click the \"UI Editor\" icon in the upper right corner to enter the UI Editor mode": "Нажмите на значок \"Редактор пользовательского интерфейса\" в правом верхнем углу, чтобы войти в режим редактора пользовательского интерфейса", "Click the \"UI Editor\" icon in the upper right corner to enter the UI Editor mode": "Нажмите на значок \"Редактор пользовательского интерфейса\" в правом верхнем углу, чтобы войти в режим редактора пользовательского интерфейса",
"Refresh data blocks": "Обновить блоки данных", "Refresh data blocks": "Обновить блоки данных",
"Select data blocks to refresh": "Выберите блоки данных для обновления", "Select data blocks to refresh": "Выберите блоки данных для обновления",
"After successful submission, the selected data blocks will be automatically refreshed.": "После успешной отправки выбранные блоки данных будут автоматически обновлены." "After successful submission, the selected data blocks will be automatically refreshed.": "После успешной отправки выбранные блоки данных будут автоматически обновлены.",
"Reset link expiration (minutes)": "Сбросить срок действия ссылки (минуты)"
} }

View File

@ -617,5 +617,6 @@
"Click the \"UI Editor\" icon in the upper right corner to enter the UI Editor mode": "Kullanıcı arayüzü düzenleyici moduna girmek için sağ üst köşedeki \"Kullanıcı Arayüzü Düzenleyici\" simgesine tıklayın", "Click the \"UI Editor\" icon in the upper right corner to enter the UI Editor mode": "Kullanıcı arayüzü düzenleyici moduna girmek için sağ üst köşedeki \"Kullanıcı Arayüzü Düzenleyici\" simgesine tıklayın",
"Refresh data blocks": "Yenile veri blokları", "Refresh data blocks": "Yenile veri blokları",
"Select data blocks to refresh": "Veri bloklarını yenilemek için seçin", "Select data blocks to refresh": "Veri bloklarını yenilemek için seçin",
"After successful submission, the selected data blocks will be automatically refreshed.": "Başarılı bir şekilde gönderildikten sonra, seçilen veri blokları otomatik olarak yenilenecektir." "After successful submission, the selected data blocks will be automatically refreshed.": "Başarılı bir şekilde gönderildikten sonra, seçilen veri blokları otomatik olarak yenilenecektir.",
"Reset link expiration (minutes)": "Bağlantı süresini sıfırla (dakika)"
} }

View File

@ -833,5 +833,6 @@
"Click the \"UI Editor\" icon in the upper right corner to enter the UI Editor mode": "Натисніть на значок \"Редактор користувацького інтерфейсу\" в правому верхньому куті, щоб увійти в режим редактора користувацького інтерфейсу.", "Click the \"UI Editor\" icon in the upper right corner to enter the UI Editor mode": "Натисніть на значок \"Редактор користувацького інтерфейсу\" в правому верхньому куті, щоб увійти в режим редактора користувацького інтерфейсу.",
"Refresh data blocks": "Оновити дані блоків", "Refresh data blocks": "Оновити дані блоків",
"Select data blocks to refresh": "Виберіть блоки даних для оновлення", "Select data blocks to refresh": "Виберіть блоки даних для оновлення",
"After successful submission, the selected data blocks will be automatically refreshed.": "Після успішної подачі вибрані блоки даних будуть автоматично оновлені." "After successful submission, the selected data blocks will be automatically refreshed.": "Після успішної подачі вибрані блоки даних будуть автоматично оновлені.",
"Reset link expiration (minutes)": "Скинути термін дії посилання (хвилини)"
} }

View File

@ -1103,5 +1103,6 @@
"After successful submission, the selected data blocks will be automatically refreshed.": "提交成功后,会自动刷新这里选中的数据区块。", "After successful submission, the selected data blocks will be automatically refreshed.": "提交成功后,会自动刷新这里选中的数据区块。",
"No pages yet, please configure first": "暂无页面,请先配置", "No pages yet, please configure first": "暂无页面,请先配置",
"Click the \"UI Editor\" icon in the upper right corner to enter the UI Editor mode": "点击右上角的“界面配置”图标,进入界面配置模式", "Click the \"UI Editor\" icon in the upper right corner to enter the UI Editor mode": "点击右上角的“界面配置”图标,进入界面配置模式",
"After successful submission, the selected data blocks will be automatically refreshed.": "提交成功后,会自动刷新这里选中的数据区块。" "After successful submission, the selected data blocks will be automatically refreshed.": "提交成功后,会自动刷新这里选中的数据区块。",
"Reset link expiration (minutes)": "重置链接的过期时间(分钟)"
} }

View File

@ -924,5 +924,6 @@
"Click the \"UI Editor\" icon in the upper right corner to enter the UI Editor mode": "點擊右上角的 \"介面設定\" 圖示進入介面設定模式", "Click the \"UI Editor\" icon in the upper right corner to enter the UI Editor mode": "點擊右上角的 \"介面設定\" 圖示進入介面設定模式",
"Refresh data blocks": "刷新數據區塊", "Refresh data blocks": "刷新數據區塊",
"Select data blocks to refresh": "選擇要刷新的數據區塊", "Select data blocks to refresh": "選擇要刷新的數據區塊",
"After successful submission, the selected data blocks will be automatically refreshed.": "提交成功後,選中的數據區塊將自動刷新。" "After successful submission, the selected data blocks will be automatically refreshed.": "提交成功後,選中的數據區塊將自動刷新。",
"Reset link expiration (minutes)": "重置連結過的期時間(分鐘)"
} }

View File

@ -341,6 +341,24 @@ export const Options = () => {
}, },
], ],
}, },
resetTokenExpiresIn: {
type: 'number',
title: '{{t("Reset link expiration (minutes)")}}',
'x-decorator': 'FormItem',
'x-component': 'InputNumber',
default: 60,
required: true,
'x-reactions': [
{
dependencies: ['.enableResetPassword'],
fulfill: {
state: {
visible: '{{$deps[0]}}',
},
},
},
],
},
}, },
}, },
}, },

View File

@ -146,7 +146,7 @@ export class BasicAuth extends BaseAuth {
emailContentType: string; emailContentType: string;
emailContentText?: string; emailContentText?: string;
emailContentHTML?: string; emailContentHTML?: string;
resetTokenExpiresIn: string | number; resetTokenExpiresIn: number;
}; };
} }
@ -185,7 +185,7 @@ export class BasicAuth extends BaseAuth {
const resetToken = await ctx.app.authManager.jwt.sign({ const resetToken = await ctx.app.authManager.jwt.sign({
resetPasswordUserId: user.id, resetPasswordUserId: user.id,
}, { }, {
expiresIn: resetTokenExpiresIn, // 配置的过期时间 expiresIn: resetTokenExpiresIn * 60, // 配置的过期时间,单位分钟,需要转成秒
}); });
// 构建重置密码链接 // 构建重置密码链接