fix: make auth migration more flexible

This commit is contained in:
David Nguyen
2025-02-14 19:22:11 +11:00
parent df8ea09021
commit 595e901bc2
2 changed files with 35 additions and 22 deletions

View File

@ -25,30 +25,42 @@ export function meta() {
export async function loader() { export async function loader() {
const { user } = getLoaderSession(); const { user } = getLoaderSession();
const accounts = await prisma.account.findMany({ // Todo: Use providers instead after RR7 migration.
where: { // const accounts = await prisma.account.findMany({
userId: user.id, // where: {
}, // userId: user.id,
select: { // },
provider: true, // select: {
}, // provider: true,
}); // },
// });
const providers = accounts.map((account) => account.provider); // const providers = accounts.map((account) => account.provider);
// let hasEmailPasswordAccount = providers.includes('DOCUMENSO');
const hasEmailPasswordAccount: boolean = await prisma.user
.count({
where: {
id: user.id,
password: {
not: null,
},
},
})
.then((value) => value > 0);
return { return {
providers, // providers,
hasEmailPasswordAccount,
}; };
} }
export default function SettingsSecurity({ loaderData }: Route.ComponentProps) { export default function SettingsSecurity({ loaderData }: Route.ComponentProps) {
const { providers } = loaderData; const { hasEmailPasswordAccount } = loaderData;
const { _ } = useLingui(); const { _ } = useLingui();
const { user } = useSession(); const { user } = useSession();
const hasEmailPasswordAccount = providers.includes('DOCUMENSO');
return ( return (
<div> <div>
<SettingsHeader <SettingsHeader

View File

@ -58,15 +58,16 @@ export const createUser = async ({ name, email, password, signature, url }: Crea
}, },
}); });
await tx.account.create({ // Todo: Migrate to use this after RR7.
data: { // await tx.account.create({
userId: user.id, // data: {
type: 'emailPassword', // Todo // userId: user.id,
provider: 'DOCUMENSO', // Todo: Enums // type: 'emailPassword', // Todo
providerAccountId: user.id.toString(), // provider: 'DOCUMENSO', // Todo: Enums
password: hashedPassword, // providerAccountId: user.id.toString(),
}, // password: hashedPassword,
}); // },
// });
return user; return user;
}); });