Output user-specific associations for collections in the CLI (#10154)

Collection management permissions can be set for a group or a specific
user. Currently the CLI only outputs group associations when it displays
collection configuration information. This can cause bugs when piping
commands together.

This commit ensures that `user` associations also get output. In all
cases this data was already available and just needed to be added to a
response model.
This commit is contained in:
Addison Beck 2024-07-18 11:31:54 -04:00 committed by GitHub
parent 577a3a720a
commit 3bfa024b87
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 12 additions and 4 deletions

View File

@ -5,10 +5,12 @@ import { SelectionReadOnly } from "../selection-read-only";
export class OrganizationCollectionResponse extends CollectionResponse { export class OrganizationCollectionResponse extends CollectionResponse {
groups: SelectionReadOnly[]; groups: SelectionReadOnly[];
users: SelectionReadOnly[];
constructor(o: CollectionView, groups: SelectionReadOnly[]) { constructor(o: CollectionView, groups: SelectionReadOnly[], users: SelectionReadOnly[]) {
super(o); super(o);
this.object = "org-collection"; this.object = "org-collection";
this.groups = groups; this.groups = groups;
this.users = users;
} }
} }

View File

@ -184,7 +184,7 @@ export class EditCommand {
const response = await this.apiService.putCollection(req.organizationId, id, request); const response = await this.apiService.putCollection(req.organizationId, id, request);
const view = CollectionExport.toView(req); const view = CollectionExport.toView(req);
view.id = response.id; view.id = response.id;
const res = new OrganizationCollectionResponse(view, groups); const res = new OrganizationCollectionResponse(view, groups, users);
return Response.success(res); return Response.success(res);
} catch (e) { } catch (e) {
return Response.error(e); return Response.error(e);

View File

@ -456,7 +456,13 @@ export class GetCommand extends DownloadCommand {
: response.groups.map( : response.groups.map(
(g) => new SelectionReadOnly(g.id, g.readOnly, g.hidePasswords, g.manage), (g) => new SelectionReadOnly(g.id, g.readOnly, g.hidePasswords, g.manage),
); );
const res = new OrganizationCollectionResponse(decCollection, groups); const users =
response.users == null
? null
: response.users.map(
(g) => new SelectionReadOnly(g.id, g.readOnly, g.hidePasswords, g.manage),
);
const res = new OrganizationCollectionResponse(decCollection, groups, users);
return Response.success(res); return Response.success(res);
} catch (e) { } catch (e) {
return Response.error(e); return Response.error(e);

View File

@ -208,7 +208,7 @@ export class CreateCommand {
const response = await this.apiService.postCollection(req.organizationId, request); const response = await this.apiService.postCollection(req.organizationId, request);
const view = CollectionExport.toView(req); const view = CollectionExport.toView(req);
view.id = response.id; view.id = response.id;
const res = new OrganizationCollectionResponse(view, groups); const res = new OrganizationCollectionResponse(view, groups, users);
return Response.success(res); return Response.success(res);
} catch (e) { } catch (e) {
return Response.error(e); return Response.error(e);