mirror of
https://github.com/portainer/portainer.git
synced 2025-07-24 15:59:41 +02:00
* 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
40 lines
1.1 KiB
TypeScript
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;
|
|
}
|