mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 08:13:56 +10:00
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:
@ -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,
|
||||
|
||||
3
packages/lib/utils/slugify.ts
Normal file
3
packages/lib/utils/slugify.ts
Normal file
@ -0,0 +1,3 @@
|
||||
export * from '@sindresorhus/slugify';
|
||||
|
||||
export { default as slugify } from '@sindresorhus/slugify';
|
||||
Reference in New Issue
Block a user