diff --git a/locales/en-US.yml b/locales/en-US.yml
index 69d6424199..e33999d6d4 100644
--- a/locales/en-US.yml
+++ b/locales/en-US.yml
@@ -922,6 +922,7 @@ recentNHours: "Last {n} hours"
recentNDays: "Last {n} days"
noEmailServerWarning: "Email server not configured."
thereIsUnresolvedAbuseReportWarning: "There are unsolved reports."
+pendingUserApprovals: "There are users awaiting approval."
recommended: "Recommended"
check: "Check"
driveCapOverrideLabel: "Change the drive capacity for this user"
diff --git a/locales/index.d.ts b/locales/index.d.ts
index be6ad77821..93f5e65af0 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -925,6 +925,7 @@ export interface Locale {
"recentNDays": string;
"noEmailServerWarning": string;
"thereIsUnresolvedAbuseReportWarning": string;
+ "pendingUserApprovals": string;
"recommended": string;
"check": string;
"driveCapOverrideLabel": string;
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index e8a9d980be..0d43a5d5a6 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -922,6 +922,7 @@ recentNHours: "直近{n}時間"
recentNDays: "直近{n}日"
noEmailServerWarning: "メールサーバーの設定がされていません。"
thereIsUnresolvedAbuseReportWarning: "未対応の通報があります。"
+pendingUserApprovals: "承認待ちのユーザーがいる。"
recommended: "推奨"
check: "チェック"
driveCapOverrideLabel: "このユーザーのドライブ容量上限を変更"
diff --git a/packages/frontend/src/pages/admin/index.vue b/packages/frontend/src/pages/admin/index.vue
index 768f9fee25..ce608c89ce 100644
--- a/packages/frontend/src/pages/admin/index.vue
+++ b/packages/frontend/src/pages/admin/index.vue
@@ -16,6 +16,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.noMaintainerInformationWarning }} {{ i18n.ts.configure }}
{{ i18n.ts.noBotProtectionWarning }} {{ i18n.ts.configure }}
{{ i18n.ts.noEmailServerWarning }} {{ i18n.ts.configure }}
+ {{ i18n.ts.pendingUserApprovals }} {{ i18n.ts.check }}
@@ -60,6 +61,7 @@ let noMaintainerInformation = isEmpty(instance.maintainerName) || isEmpty(instan
let noBotProtection = !instance.disableRegistration && !instance.enableHcaptcha && !instance.enableRecaptcha && !instance.enableTurnstile;
let noEmailServer = !instance.enableEmail;
let thereIsUnresolvedAbuseReport = $ref(false);
+let pendingUserApprovals = $ref(false);
let currentPage = $computed(() => router.currentRef.value.child);
os.api('admin/abuse-user-reports', {
@@ -69,6 +71,13 @@ os.api('admin/abuse-user-reports', {
if (reports.length > 0) thereIsUnresolvedAbuseReport = true;
});
+os.api('admin/show-users', {
+ state: 'approved',
+ limit: 1,
+}).then(approvals => {
+ if (approvals.length > 0) pendingUserApprovals = true;
+});
+
const NARROW_THRESHOLD = 600;
const ro = new ResizeObserver((entries, observer) => {
if (entries.length === 0) return;