@paroicms/server
Version:
The ParoiCMS server
46 lines • 1.8 kB
JavaScript
import { type } from "arktype";
import { saveFieldValues } from "../admin-backend/fields/save-fields.queries.js";
import { hashPassword } from "../helpers/passwordEncrypt-helper.js";
import { applyMarkdownToNativeForValues } from "./markdown-content.js";
export async function createAccountProgrammaticApi(siteContext, account, options) {
const siteNodeId = siteContext.homeRoutingCluster.siteNodeId;
const siteType = siteContext.siteSchema.nodeTypes._site;
const { kind, email, name } = account;
const InsertedIdAT = type({ id: "number", "+": "reject" });
const [inserted] = await siteContext
.cn("PaAccount")
.insert({
email,
name,
passwordHash: kind === "local" ? await hashPassword(account.password) : undefined,
})
.returning("id");
const insertedId = String(InsertedIdAT.assert(inserted).id);
if (account.roles.length > 0) {
await siteContext
.cn("PaAccountRole")
.insert(account.roles.map((role) => ({ accountId: insertedId, role })));
}
if (options?.asContactEmail) {
await saveFieldValues(siteContext, {
typeName: siteType.typeName,
nodeId: siteNodeId,
values: {
contactEmail: email,
},
force: true,
});
}
return insertedId;
}
export async function updateSiteFieldsProgrammaticApi(siteContext, language, values) {
const processedValues = await applyMarkdownToNativeForValues(siteContext, values, "_site", language);
await saveFieldValues(siteContext, {
typeName: "_site",
nodeId: siteContext.homeRoutingCluster.siteNodeId,
language,
values: processedValues,
force: true,
});
}
//# sourceMappingURL=site-content-api.js.map