diff --git a/apps/api-server/src/procedures/admin/helpers.ts b/apps/api-server/src/procedures/admin/helpers.ts index 9043a46..d4614b8 100644 --- a/apps/api-server/src/procedures/admin/helpers.ts +++ b/apps/api-server/src/procedures/admin/helpers.ts @@ -2,8 +2,8 @@ * Admin procedure helpers - shared transformation functions */ +import type { OrgSites, Orgs, Users } from "@reviq/db-schema"; import type { Selectable } from "kysely"; -import type { Orgs, OrgSites, Users } from "@reviq/db-schema"; /** Transform org record to API response format */ export const toOrgResponse = (org: Selectable) => ({ diff --git a/apps/api-server/src/procedures/admin/users/create.ts b/apps/api-server/src/procedures/admin/users/create.ts index e749584..1e431a4 100644 --- a/apps/api-server/src/procedures/admin/users/create.ts +++ b/apps/api-server/src/procedures/admin/users/create.ts @@ -44,7 +44,7 @@ export const adminUsersCreate = os.admin.users.create .insertInto("users") .values({ email: normalizedEmail, - display_name: name || null, + display_name: name ?? null, }) .returning(["id"]) .executeTakeFirstOrThrow(); @@ -55,7 +55,7 @@ export const adminUsersCreate = os.admin.users.create .values({ org_id: orgId, user_id: newUser.id, - role: orgRole || "member", + role: orgRole ?? "member", }) .execute(); } diff --git a/apps/api-server/src/procedures/admin/users/update.ts b/apps/api-server/src/procedures/admin/users/update.ts index 8d6ef17..ddfc353 100644 --- a/apps/api-server/src/procedures/admin/users/update.ts +++ b/apps/api-server/src/procedures/admin/users/update.ts @@ -27,10 +27,7 @@ export const adminUsersUpdate = os.admin.users.update } // Prevent superuser from demoting themselves - if ( - isSuperuser === false && - normalizedEmail === context.user.email.toLowerCase() - ) { + if (!isSuperuser && normalizedEmail === context.user.email.toLowerCase()) { throw new ORPCError("BAD_REQUEST", { message: "Cannot remove your own superuser status", }); diff --git a/apps/api-server/src/router.ts b/apps/api-server/src/router.ts index e76f87f..a90fbfb 100644 --- a/apps/api-server/src/router.ts +++ b/apps/api-server/src/router.ts @@ -1,4 +1,5 @@ import { ORPCError } from "@orpc/server"; +import { adminRoutes } from "./procedures/admin/_routes.js"; import { createLoginRequest as createLoginRequestHandler } from "./procedures/auth/create-login-request.js"; import { forgotPassword as forgotPasswordHandler } from "./procedures/auth/forgot-password.js"; import { loginIfRequestIsCompleted as loginIfRequestIsCompletedHandler } from "./procedures/auth/login-if-completed.js"; @@ -9,8 +10,11 @@ import { resendVerificationEmail as resendVerificationHandler } from "./procedur import { resetPassword as resetPasswordHandler } from "./procedures/auth/reset-password.js"; import { signup as signupHandler } from "./procedures/auth/signup.js"; import { verifyEmail as verifyEmailHandler } from "./procedures/auth/verify-email.js"; -import { authMiddleware, loginRequestMiddleware, os } from "./procedures/base.js"; -import { adminRoutes } from "./procedures/admin/_routes.js"; +import { + authMiddleware, + loginRequestMiddleware, + os, +} from "./procedures/base.js"; import { meDelete } from "./procedures/me/delete.js"; import { getDeviceInfo, diff --git a/apps/publisher-dashboard/src/lib/components/admin/index.ts b/apps/publisher-dashboard/src/lib/components/admin/index.ts new file mode 100644 index 0000000..45c9048 --- /dev/null +++ b/apps/publisher-dashboard/src/lib/components/admin/index.ts @@ -0,0 +1 @@ +export { default as SuperuserBadge } from "./superuser-badge.svelte"; diff --git a/apps/publisher-dashboard/src/lib/components/admin/superuser-badge.svelte b/apps/publisher-dashboard/src/lib/components/admin/superuser-badge.svelte new file mode 100644 index 0000000..ba13cfe --- /dev/null +++ b/apps/publisher-dashboard/src/lib/components/admin/superuser-badge.svelte @@ -0,0 +1,9 @@ + + + + + Superuser + diff --git a/apps/publisher-dashboard/src/lib/components/layout/app-sidebar.svelte b/apps/publisher-dashboard/src/lib/components/layout/app-sidebar.svelte index 3c64773..349d6a1 100644 --- a/apps/publisher-dashboard/src/lib/components/layout/app-sidebar.svelte +++ b/apps/publisher-dashboard/src/lib/components/layout/app-sidebar.svelte @@ -1,5 +1,7 @@