feat: automatically set public profile url for OIDC users (#1225)

Adds a hook to automatically set profile urls for OIDC users
This commit is contained in:
Rene Steen
2024-08-20 05:58:56 +02:00
committed by GitHub
parent 06c0a50401
commit 7a1341eb74
2 changed files with 22 additions and 0 deletions

View File

@ -6,6 +6,7 @@ import { getStripeCustomerByUser } from '@documenso/ee/server-only/stripe/get-cu
import { IS_BILLING_ENABLED } from '@documenso/lib/constants/app';
import { NEXT_AUTH_OPTIONS } from '@documenso/lib/next-auth/auth-options';
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
import { slugify } from '@documenso/lib/utils/slugify';
import { prisma } from '@documenso/prisma';
import { UserSecurityAuditLogType } from '@documenso/prisma/client';
@ -77,6 +78,24 @@ export default async function auth(req: NextApiRequest, res: NextApiResponse) {
});
}
// auto set public profile name
if (account.provider === 'oidc' && user.name && 'url' in user && !user.url) {
let counter = 1;
let url = slugify(user.name);
while (await prisma.user.findFirst({ where: { url } })) {
url = `${slugify(user.name)}-${counter}`;
counter++;
}
await prisma.user.update({
where: { id: userId },
data: {
url,
},
});
}
await prisma.userSecurityAuditLog.create({
data: {
userId,

View File

@ -0,0 +1,3 @@
export * from '@sindresorhus/slugify';
export { default as slugify } from '@sindresorhus/slugify';