feat(auth): enhance email validation when no workspace available + disable captcha on email validation (#11239)

Implemented fallback logic to associate a user with a workspace when
none is found. Introduced new GraphQL types and mutations for roles and
permissions management. Simplified and refactored URL-building logic for
email verification, improving code maintainability and flexibility.
This commit is contained in:
Antoine Moreaux
2025-03-28 07:38:58 +01:00
committed by GitHub
parent 976c6afb4b
commit 9af2628264
5 changed files with 69 additions and 43 deletions

View File

@ -42,22 +42,37 @@ export class DomainManagerService {
return baseUrl;
}
buildEmailVerificationURL({
emailVerificationToken,
email,
workspace,
}: {
emailVerificationToken: string;
email: string;
workspace: WorkspaceSubdomainCustomDomainAndIsCustomDomainEnabledType;
}) {
return this.buildWorkspaceURL({
workspace,
pathname: 'verify-email',
searchParams: { emailVerificationToken, email },
private appendSearchParams(
url: URL,
searchParams: Record<string, string | number>,
) {
Object.entries(searchParams).forEach(([key, value]) => {
if (isDefined(value)) {
url.searchParams.set(key, value.toString());
}
});
}
buildBaseUrl({
pathname,
searchParams,
}: {
pathname?: string;
searchParams?: Record<string, string | number>;
}) {
const url = this.getBaseUrl();
if (pathname) {
url.pathname = pathname;
}
if (searchParams) {
this.appendSearchParams(url, searchParams);
}
return url;
}
buildWorkspaceURL({
workspace,
pathname,
@ -76,11 +91,7 @@ export class DomainManagerService {
}
if (searchParams) {
Object.entries(searchParams).forEach(([key, value]) => {
if (isDefined(value)) {
url.searchParams.set(key, value.toString());
}
});
this.appendSearchParams(url, searchParams);
}
return url;