@paroicms/server
Version:
The ParoiCMS server
74 lines • 3.36 kB
JavaScript
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