UNPKG

@paroicms/server

Version:
74 lines 3.36 kB
import { ApiError } from "@paroicms/public-server-lib"; import { siteReadyGuard } from "../../graphql/graphql.types.js"; import { authGuard, verifyAccessToken } from "../auth/auth.helper.js"; import { formatAccountType } from "./account.formatters.js"; import { createAccount, deleteAccount, getAccount, getAllAccounts, getAuthenticatedAccount, resetAccountPassword, setAccountPreferences, updateAccount, } from "./account.queries.js"; export const accountResolvers = { Query: { account: async (_parent, { id }, { siteContext, httpContext }) => { authGuard(httpContext); siteReadyGuard(siteContext); const acccount = await getAccount(siteContext, id); return acccount; }, authAccount: async (_parent, _values, { siteContext, httpContext }) => { authGuard(httpContext); siteReadyGuard(siteContext); const token = httpContext.req.headers.authorization?.replace(/^Bearer\s+/, ""); if (!token) { throw new ApiError("authorization header not found", 404); } const payload = verifyAccessToken(token); if (!payload.id) { throw new ApiError("auth account id not found", 404); } return await getAuthenticatedAccount(siteContext, payload.id); }, allAccounts: async (_parent, _values, { siteContext, httpContext }) => { authGuard(httpContext); siteReadyGuard(siteContext); return await getAllAccounts(siteContext); }, }, Mutation: { createAccount: async (_parent, { values }, { siteContext, httpContext }) => { authGuard(httpContext); siteReadyGuard(siteContext); return await createAccount(siteContext, { accountType: formatAccountType(values.accountType), email: values.email, language: values.language, name: values.name ?? undefined, }); }, updateAccount: async (_parent, { accountId, values }, { siteContext, httpContext }) => { authGuard(httpContext); siteReadyGuard(siteContext); return await updateAccount(siteContext, accountId, { email: values.email ?? undefined, name: values.name ?? undefined, }); }, deleteAccount: async (_parent, { accountId }, { siteContext, httpContext }) => { authGuard(httpContext); siteReadyGuard(siteContext); await deleteAccount(siteContext, accountId); return true; }, resetAccountPassword: async (_parent, { accountId }, { siteContext, httpContext }) => { authGuard(httpContext); siteReadyGuard(siteContext); await resetAccountPassword(siteContext, accountId); return true; }, setAccountPreferences: async (_parent, { accountId, values }, { siteContext, httpContext }) => { authGuard(httpContext); siteReadyGuard(siteContext); await setAccountPreferences(siteContext, accountId, { language: values.language ?? undefined, }); return accountId; }, }, }; //# sourceMappingURL=account.resolver.js.map