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",
"Refresh data blocks": "Aktualisieren Sie die Datenblöcke",
"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",
"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."
"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",
"Refresh data blocks": "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",
"Refresh data blocks": "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",
"Refresh data blocks": "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": "すべての権限",
"Refresh data blocks": "データブロックを更新",
"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": "모든 권한",
"Refresh data blocks": "데이터 블록 새로 고침",
"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",
"Refresh data blocks": "Vernieuw gegevensblokken",
"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",
"Refresh data blocks": "Atualizar blocos de dados",
"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": "Нажмите на значок \"Редактор пользовательского интерфейса\" в правом верхнем углу, чтобы войти в режим редактора пользовательского интерфейса",
"Refresh data blocks": "Обновить блоки данных",
"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",
"Refresh data blocks": "Yenile veri blokları",
"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": "Натисніть на значок \"Редактор користувацького інтерфейсу\" в правому верхньому куті, щоб увійти в режим редактора користувацького інтерфейсу.",
"Refresh data blocks": "Оновити дані блоків",
"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.": "提交成功后,会自动刷新这里选中的数据区块。",
"No pages yet, please configure first": "暂无页面,请先配置",
"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": "點擊右上角的 \"介面設定\" 圖示進入介面設定模式",
"Refresh data blocks": "刷新數據區塊",
"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;
emailContentText?: 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({
resetPasswordUserId: user.id,
}, {
expiresIn: resetTokenExpiresIn, // 配置的过期时间
expiresIn: resetTokenExpiresIn * 60, // 配置的过期时间,单位分钟,需要转成秒
});
// 构建重置密码链接