1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-24 15:59:41 +02:00
portainer/app/portainer/components/accessControlForm/model.ts
Chaim Lev-Ari ecd0eb6170
refactor(app): create access-control-form react component [EE-2332] (#6346)
* refactor(app): create access-control-form react component [EE-2332]

fix [EE-2332]

* chore(tests): setup msw for async tests and stories

chore(sb): add msw support for storybook

* refactor(access-control): move loading into component

* fix(app): fix users and teams selector stories

* chore(access-control): write test for validation
2022-01-05 18:28:56 +02:00

40 lines
1.1 KiB
TypeScript

import { ResourceControlOwnership } from 'Portainer/models/resourceControl/resourceControlOwnership';
import { TeamId } from '@/portainer/teams/types';
import { UserId } from '@/portainer/users/types';
export class AccessControlFormData {
accessControlEnabled = true;
ownership = ResourceControlOwnership.PRIVATE;
authorizedUsers: UserId[] = [];
authorizedTeams: TeamId[] = [];
}
export function parseFromResourceControl(
isAdmin: boolean,
resourceControlOwnership?: ResourceControlOwnership
): AccessControlFormData {
const formData = new AccessControlFormData();
if (resourceControlOwnership) {
let ownership = resourceControlOwnership;
if (isAdmin && ownership === ResourceControlOwnership.PRIVATE) {
ownership = ResourceControlOwnership.RESTRICTED;
}
let accessControl = formData.accessControlEnabled;
if (ownership === ResourceControlOwnership.PUBLIC) {
accessControl = false;
}
formData.ownership = ownership;
formData.accessControlEnabled = accessControl;
} else if (isAdmin) {
formData.ownership = ResourceControlOwnership.ADMINISTRATORS;
}
return formData;
}