12 lines
531 B
TypeScript
12 lines
531 B
TypeScript
import { Identity, isEmailClaimed } from "../../../aggregates/identity.ts";
|
|
import { IdentityEmailClaimedError } from "../../../errors.ts";
|
|
import { eventStore } from "../../../event-store.ts";
|
|
import route from "./spec.ts";
|
|
|
|
export default route.access("public").handle(async ({ body: { name, email } }) => {
|
|
if ((await isEmailClaimed(email)) === true) {
|
|
return new IdentityEmailClaimedError(email);
|
|
}
|
|
return eventStore.aggregate.from(Identity).create().addName(name).addEmailStrategy(email).addRole("user").save();
|
|
});
|