"""Edit identity access to resources.""" from marshmallow import fields from marshmallow.validate import Length, OneOf from permissions.constants import constants from permissions.validations import ma from permissions.validations.schemas.settings_resources import SettingsResourcesSchema class EditProfileResourcesSchema(ma.Schema): """Schema to edit identity access to resources. Properties: - identity_id (str): Type of resource. - resources (list): List of resource object. Whitelisted resource_types only. """ identity_id = fields.Str(required=True) resource_access = fields.Nested(SettingsResourcesSchema, many=True, validate=Length(min=1)) overwrite_existing_access = fields.Boolean(load_default=False) class ProfileRoleAccessSchema(ma.Schema): """Schema for Profile/Roles to use to connect identity to resources. Properties: - profile_type (str): ProfileType to use to connect identity to resource. - roles (list): List of role. e.g: ['marketing', 'analytics'] """ profile_type = fields.Str(required=True) roles_to_add = fields.List( fields.String(validate=OneOf(constants.PROFILE_ROLE_TYPES)), load_default=[] ) roles_to_remove = fields.List( fields.String(validate=OneOf(constants.PROFILE_ROLE_TYPES + [constants.ALL_ROLES])), load_default=[], )