From e22c9835b12c9b6f09cef08e667262a2869c8d2c Mon Sep 17 00:00:00 2001 From: JohanHjelsethStorstad <82723971+JohanHjelsethStorstad@users.noreply.github.com> Date: Mon, 27 Oct 2025 18:17:01 +0100 Subject: [PATCH 1/9] refactor: remove getUser and refactor some services like omegaquotes --- src/app/(auth)/register-email/page.tsx | 9 +- src/app/(auth)/register/page.tsx | 14 +- src/app/(auth)/verify-email/page.tsx | 7 +- src/app/admin/mail/[filter]/[id]/page.tsx | 2 +- src/app/admin/mail/[filter]/page.tsx | 2 +- src/app/admin/mail/page.tsx | 10 +- src/app/admin/send-mail/mailForm.tsx | 4 +- .../(user-admin)/getProfileForAdmin.ts | 2 +- src/auth/auther/AuthResult.ts | 17 ++- src/auth/session/getUser.ts | 133 ------------------ src/services/notifications/actions.ts | 3 +- src/services/notifications/auth.ts | 3 +- src/services/notifications/channel/auth.ts | 3 +- .../notifications/channel/operations.ts | 5 +- src/services/notifications/email/dispatch.tsx | 4 +- src/services/notifications/email/schemas.ts | 17 +++ .../notifications/email/validation.ts | 29 ---- src/services/notifications/operations.ts | 8 ++ src/services/omegaquotes/actions.ts | 44 +----- src/services/omegaquotes/auth.ts | 8 ++ .../{CofigVars.ts => constants.ts} | 0 src/services/omegaquotes/create.ts | 43 ------ src/services/omegaquotes/operations.ts | 60 ++++++++ src/services/omegaquotes/read.ts | 19 --- src/services/omegaquotes/schemas.ts | 14 ++ src/services/omegaquotes/validation.ts | 20 --- src/services/screens/pages/actions.ts | 29 +--- src/services/screens/pages/auth.ts | 10 ++ src/services/sendmail/actions.ts | 23 --- 29 files changed, 163 insertions(+), 379 deletions(-) delete mode 100644 src/auth/session/getUser.ts create mode 100644 src/services/notifications/email/schemas.ts delete mode 100644 src/services/notifications/email/validation.ts create mode 100644 src/services/omegaquotes/auth.ts rename src/services/omegaquotes/{CofigVars.ts => constants.ts} (100%) delete mode 100644 src/services/omegaquotes/create.ts create mode 100644 src/services/omegaquotes/operations.ts delete mode 100644 src/services/omegaquotes/read.ts create mode 100644 src/services/omegaquotes/schemas.ts delete mode 100644 src/services/omegaquotes/validation.ts create mode 100644 src/services/screens/pages/auth.ts delete mode 100644 src/services/sendmail/actions.ts diff --git a/src/app/(auth)/register-email/page.tsx b/src/app/(auth)/register-email/page.tsx index 79334b980..69e17f192 100644 --- a/src/app/(auth)/register-email/page.tsx +++ b/src/app/(auth)/register-email/page.tsx @@ -1,16 +1,15 @@ +import { RequireUser } from '@/auth/auther/RequireUser' import EmailRegistrationForm from './EmailregistrationForm' -import { getUser } from '@/auth/session/getUser' import { readUserAction } from '@/services/users/actions' import { notFound, redirect } from 'next/navigation' +import { Session } from '@/auth/session/Session' export default async function Registeremail() { - const { authorized, user } = await getUser({ - userRequired: true, - }) + const { authorized, session } = RequireUser.staticFields({}).dynamicFields({}).auth(await Session.fromNextAuth()) if (!authorized) notFound() - const updatedUser = await readUserAction({ params: { id: user.id } }) + const updatedUser = await readUserAction({ params: { id: session.user.id } }) if (!updatedUser.success) { return notFound() diff --git a/src/app/(auth)/register/page.tsx b/src/app/(auth)/register/page.tsx index 2d198a5c6..e62430aee 100644 --- a/src/app/(auth)/register/page.tsx +++ b/src/app/(auth)/register/page.tsx @@ -1,35 +1,27 @@ import RegistrationForm from './RegistrationForm' -import { getUser } from '@/auth/session/getUser' import { QueryParams } from '@/lib/queryParams/queryParams' import { unwrapActionReturn } from '@/app/redirectToErrorPage' import { readUserAction } from '@/services/users/actions' +import { Session } from '@/auth/session/Session' import { notFound, redirect } from 'next/navigation' import type { SearchParamsServerSide } from '@/lib/queryParams/types' type PropTypes = SearchParamsServerSide export default async function Register({ searchParams }: PropTypes) { - const { user, authorized } = await getUser({ - userRequired: false, - shouldRedirect: false, - }) - + const user = (await Session.fromNextAuth()).user const callbackUrl = QueryParams.callbackUrl.decode(await searchParams) - - if (!authorized || !user) { + if (!user) { return notFound() } - const updatedUser = unwrapActionReturn(await readUserAction({ params: { id: user.id } })) - if (updatedUser.acceptedTerms) { redirect(callbackUrl ?? '/users/me') } - if (!updatedUser.emailVerified) { const linkEnding = callbackUrl ? `?callbackUrl=${callbackUrl}` : '' redirect(`/register-email${linkEnding}`) diff --git a/src/app/(auth)/verify-email/page.tsx b/src/app/(auth)/verify-email/page.tsx index 851eb7d56..d0334f0a6 100644 --- a/src/app/(auth)/verify-email/page.tsx +++ b/src/app/(auth)/verify-email/page.tsx @@ -1,11 +1,11 @@ import { EmailVerifiedWrapper } from './EmailVerifiedWrapper' -import { getUser } from '@/auth/session/getUser' import { QueryParams } from '@/lib/queryParams/queryParams' import { unwrapActionReturn } from '@/app/redirectToErrorPage' import { verifyEmailAction } from '@/services/auth/actions' import { notFound, redirect } from 'next/navigation' import Link from 'next/link' import type { SearchParamsServerSide } from '@/lib/queryParams/types' +import { Session } from '@/auth/session/Session' type PropTypes = SearchParamsServerSide @@ -15,10 +15,7 @@ export default async function Register({ searchParams }: PropTypes) { notFound() } - const { user } = await getUser({ - userRequired: false, - shouldRedirect: false, - }) + const user = (await Session.fromNextAuth()).user const userId = user?.id const updatedUser = unwrapActionReturn(await verifyEmailAction({ params: { token } })) diff --git a/src/app/admin/mail/[filter]/[id]/page.tsx b/src/app/admin/mail/[filter]/[id]/page.tsx index 1b864d80b..a1b4c284d 100644 --- a/src/app/admin/mail/[filter]/[id]/page.tsx +++ b/src/app/admin/mail/[filter]/[id]/page.tsx @@ -1,4 +1,4 @@ -'use server' +'use server' //why is this use server??? import MailFlow from './MailFlow' import styles from './page.module.scss' diff --git a/src/app/admin/mail/[filter]/page.tsx b/src/app/admin/mail/[filter]/page.tsx index d56d2cb4f..586086216 100644 --- a/src/app/admin/mail/[filter]/page.tsx +++ b/src/app/admin/mail/[filter]/page.tsx @@ -1,4 +1,4 @@ -'use server' +'use server' //why is this use server??? import { RedirectType, redirect } from 'next/navigation' diff --git a/src/app/admin/mail/page.tsx b/src/app/admin/mail/page.tsx index 6c273c744..8d318e86d 100644 --- a/src/app/admin/mail/page.tsx +++ b/src/app/admin/mail/page.tsx @@ -1,21 +1,17 @@ -'use server' - +'use server' //why is this use server??? import styles from './page.module.scss' import CreateMailAlias from './createMailAliasForm' import CreateMailingList from './createMailingListForm' import CreateMailaddressExternal from './createMailaddressExternalForm' import MailListView from './mailListView' -import { getUser } from '@/auth/session/getUser' import PageWrapper from '@/components/PageWrapper/PageWrapper' import { readMailAliases } from '@/services/mail/alias/read' import { readMailingLists } from '@/services/mail/list/read' import { readMailAddressExternal } from '@/services/mail/mailAddressExternal/read' +import { Session } from '@/auth/session/Session' export default async function MailSettings() { - const { permissions } = await getUser({ - userRequired: true, - shouldRedirect: true, - }) + const { permissions } = await Session.fromNextAuth() const createMailAlias = permissions.includes('MAILALIAS_CREATE') const createMailingList = permissions.includes('MAILINGLIST_CREATE') diff --git a/src/app/admin/send-mail/mailForm.tsx b/src/app/admin/send-mail/mailForm.tsx index 39fb94e99..f53c273d4 100644 --- a/src/app/admin/send-mail/mailForm.tsx +++ b/src/app/admin/send-mail/mailForm.tsx @@ -1,6 +1,6 @@ 'use client' import styles from './mailForm.module.scss' -import sendMail from '@/services/sendmail/actions' +import { sendMailAction } from '@/services/notifications/actions' import Form from '@/components/Form/Form' import TextInput from '@/components/UI/TextInput' import Textarea from '@/components/UI/Textarea' @@ -8,7 +8,7 @@ import Textarea from '@/components/UI/Textarea' export default function MailForm() { return