2025-12-06 15:50:23 +01:00
|
|
|
import {PageParams} from "@/types/next";
|
2025-12-30 13:38:01 +01:00
|
|
|
import {Page, PageActions, PageContent, PageHeader, PageTitle} from "@/features/layout/page";
|
2025-12-06 15:50:23 +01:00
|
|
|
import {db} from "@/db";
|
2025-12-30 13:38:01 +01:00
|
|
|
import {desc, isNull} from "drizzle-orm";
|
2026-05-24 17:09:12 +02:00
|
|
|
import {AdminUserList} from "@/features/users/admin-user-list";
|
|
|
|
|
import {AdminUserAddModal} from "@/features/users/admin-user-add-modal";
|
2026-02-24 16:49:16 +01:00
|
|
|
import {SUPPORTED_PROVIDERS} from "@/lib/auth/config";
|
2025-12-06 15:50:23 +01:00
|
|
|
|
|
|
|
|
export default async function RoutePage(props: PageParams<{}>) {
|
|
|
|
|
|
|
|
|
|
const users = await db.query.user.findMany({
|
|
|
|
|
where: (fields) => isNull(fields.deletedAt),
|
|
|
|
|
with: {
|
|
|
|
|
accounts: true
|
2025-12-30 13:38:01 +01:00
|
|
|
},
|
|
|
|
|
orderBy: (fields) => desc(fields.createdAt),
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
const organizations = await db.query.organization.findMany({
|
|
|
|
|
with: {
|
|
|
|
|
members: true,
|
|
|
|
|
},
|
2025-12-06 15:50:23 +01:00
|
|
|
});
|
|
|
|
|
|
2026-02-24 16:49:16 +01:00
|
|
|
const credentialProvider = SUPPORTED_PROVIDERS.find(p => p.id === 'credential');
|
|
|
|
|
const isPasswordAuthEnabled = credentialProvider?.isActive || false;
|
|
|
|
|
|
2025-12-06 15:50:23 +01:00
|
|
|
return (
|
|
|
|
|
<Page>
|
|
|
|
|
<PageHeader className="flex flex-col">
|
|
|
|
|
<div className="flex justify-between">
|
|
|
|
|
<PageTitle className="mb-3">Active users</PageTitle>
|
2026-05-21 07:28:05 +02:00
|
|
|
{isPasswordAuthEnabled && (
|
|
|
|
|
<PageActions>
|
|
|
|
|
<AdminUserAddModal organizations={organizations}/>
|
|
|
|
|
</PageActions>
|
|
|
|
|
)}
|
2025-12-06 15:50:23 +01:00
|
|
|
</div>
|
|
|
|
|
</PageHeader>
|
|
|
|
|
<PageContent className="flex flex-col gap-5">
|
2026-02-24 16:49:16 +01:00
|
|
|
<AdminUserList users={users} isPasswordAuthEnabled={isPasswordAuthEnabled}/>
|
2025-12-06 15:50:23 +01:00
|
|
|
</PageContent>
|
|
|
|
|
</Page>
|
|
|
|
|
);
|
|
|
|
|
}
|
2025-12-30 13:38:01 +01:00
|
|
|
|
|
|
|
|
|