1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-19 05:19:39 +02:00
portainer/app/portainer/access-control/models/ResourceControlViewModel.ts
Chaim Lev-Ari 82b848af0c
refactor(azure): migrate module to react [EE-2782] (#6689)
* refactor(azure): migrate module to react [EE-2782]

* fix(azure): remove optional chain

* feat(azure): apply new icons in dashboard

* feat(azure): apply new icons in dashboard

* feat(ui): allow single string for breadcrumbs

* refactor(azure/containers): use Table.content

* feat(azure/containers): implement new ui [EE-3538]

* fix(azure/containers): use correct icon

* chore(tests): mock svg as component

* fix(azure): fix tests

Co-authored-by: matias.spinarolli <matias.spinarolli@portainer.io>
2022-07-26 16:44:08 -03:00

60 lines
1.3 KiB
TypeScript

import {
ResourceControlId,
ResourceControlOwnership,
ResourceControlResponse,
ResourceControlType,
ResourceId,
TeamResourceAccess,
UserResourceAccess,
} from '../types';
export class ResourceControlViewModel {
Id: ResourceControlId;
Type: ResourceControlType;
ResourceId: ResourceId;
UserAccesses: UserResourceAccess[];
TeamAccesses: TeamResourceAccess[];
Public: boolean;
System: boolean;
Ownership: ResourceControlOwnership;
constructor(data: ResourceControlResponse) {
this.Id = data.Id;
this.Type = data.Type;
this.ResourceId = data.ResourceId;
this.UserAccesses = data.UserAccesses;
this.TeamAccesses = data.TeamAccesses;
this.Public = data.Public;
this.System = data.System;
this.Ownership = determineOwnership(data);
}
}
export function determineOwnership(resourceControl: ResourceControlResponse) {
if (resourceControl.Public) {
return ResourceControlOwnership.PUBLIC;
}
if (
resourceControl.UserAccesses.length === 1 &&
resourceControl.TeamAccesses.length === 0
) {
return ResourceControlOwnership.PRIVATE;
}
if (
resourceControl.UserAccesses.length > 1 ||
resourceControl.TeamAccesses.length > 0
) {
return ResourceControlOwnership.RESTRICTED;
}
return ResourceControlOwnership.ADMINISTRATORS;
}