Merge pull request #28967 from JessicaJHee/dangerouslyAllowSignInWithoutUserInCatalog-config

introduce dangerouslyAllowSignInWithoutUserInCatalog auth resolver config
This commit is contained in:
Patrik Oldsberg
2025-05-13 12:18:55 +02:00
committed by GitHub
75 changed files with 840 additions and 166 deletions
@@ -139,19 +139,54 @@ export class CatalogAuthResolverContext implements AuthResolverContext {
return { entity: result };
}
async signInWithCatalogUser(query: AuthResolverCatalogUserQuery) {
const { entity } = await this.findCatalogUser(query);
async signInWithCatalogUser(
query: AuthResolverCatalogUserQuery,
options?: {
dangerousEntityRefFallback?: {
entityRef:
| string
| {
kind?: string;
namespace?: string;
name: string;
};
};
},
) {
try {
const { entity } = await this.findCatalogUser(query);
const { ownershipEntityRefs } = await this.resolveOwnershipEntityRefs(
entity,
);
const { ownershipEntityRefs } = await this.resolveOwnershipEntityRefs(
entity,
);
return await this.tokenIssuer.issueToken({
claims: {
sub: stringifyEntityRef(entity),
ent: ownershipEntityRefs,
},
});
return await this.tokenIssuer.issueToken({
claims: {
sub: stringifyEntityRef(entity),
ent: ownershipEntityRefs,
},
});
} catch (error) {
if (
error?.name !== 'NotFoundError' ||
!options?.dangerousEntityRefFallback
) {
throw error;
}
const userEntityRef = stringifyEntityRef(
parseEntityRef(options.dangerousEntityRefFallback.entityRef, {
defaultKind: 'User',
defaultNamespace: DEFAULT_NAMESPACE,
}),
);
return await this.tokenIssuer.issueToken({
claims: {
sub: userEntityRef,
ent: [userEntityRef],
},
});
}
}
async resolveOwnershipEntityRefs(