fix(auth): consider only entities of kind user when using findCatalogUser with filter query

Signed-off-by: Elias Rieb <e.rieb@posteo.de>
This commit is contained in:
Elias Rieb
2024-02-28 12:52:29 +01:00
parent 75b7d4e49b
commit 038b2e6894
3 changed files with 17 additions and 2 deletions
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-auth-backend': patch
'@backstage/plugin-auth-node': patch
---
Only consider entities of kind `User` when using `findCatalogUser` with a filter query, unless an explicit `kind` filter is provided.
@@ -123,8 +123,17 @@ export class CatalogAuthResolverContext implements AuthResolverContext {
const res = await this.catalogApi.getEntities({ filter }, { token });
result = res.items;
} else if ('filter' in query) {
const filter = [query.filter].flat().map(value => {
if (!('kind' in Object.keys(value).map(key => key.toLowerCase()))) {
return {
...value,
kind: 'user',
};
}
return value;
});
const res = await this.catalogApi.getEntities(
{ filter: query.filter },
{ filter: filter },
{ token },
);
result = res.items;
+1 -1
View File
@@ -86,7 +86,7 @@ export type BackstageUserIdentity = {
* If `annotations` are used, all annotations must be present and
* match the provided value exactly. Only entities of kind `'User'` will be considered.
*
* If `filter` are used they are passed on as they are to the `CatalogApi`.
* If `filter` are used, only entities of kind `'User'` will be considered unless it is explicitly specified differently in the filter.
*
* Regardless of the query method, the query must match exactly one entity
* in the catalog, or an error will be thrown.