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 { IS_BILLING_ENABLED } from '@documenso/lib/constants/app';
|
||||||
import { NEXT_AUTH_OPTIONS } from '@documenso/lib/next-auth/auth-options';
|
import { NEXT_AUTH_OPTIONS } from '@documenso/lib/next-auth/auth-options';
|
||||||
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||||
|
import { slugify } from '@documenso/lib/utils/slugify';
|
||||||
import { prisma } from '@documenso/prisma';
|
import { prisma } from '@documenso/prisma';
|
||||||
import { UserSecurityAuditLogType } from '@documenso/prisma/client';
|
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({
|
await prisma.userSecurityAuditLog.create({
|
||||||
data: {
|
data: {
|
||||||
userId,
|
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