export const createAccount = async ({
fullName,
email,
password,
}: {
fullName: string;
email: string;
password: string;
}) => {
const existingUser = await getUserByEmail(email);
if (!existingUser) {
const { databases, account } = await createAdminClient();
try {
const user = await account.create(ID.unique(), email, password, fullName);
const accountId = user.$id;
await databases.createDocument(
appwriteConfig.databaseId,
appwriteConfig.usersCollectionId,
ID.unique(),
{
fullName,
email,
avatar: avatarPlaceholderUrl,
accountId,
}
);
const session = await account.createEmailPasswordSession(email, password);
(await cookies()).set("APPWRITE_SESSION", session.secret, {
path: "/",
httpOnly: true,
sameSite: "strict",
secure: true,
});
await account.createVerification("http://localhost:3000/verify");
return parseStringify({ accountId });
} catch (error) {
handleError(error, "Failed to create account");
}
}
return parseStringify({ message: "User already exists" });
};