using System.Text.Json; using System.Text.Json.Serialization; using Berufsschule_HAM.Exceptions; namespace Berufsschule_HAM.Models; public class GroupModel { public required string Cn { get; set; } public string DisplayName { get; set; } public string? GidNumber { get; set; } public List Permissions { get; set; } public GroupModel(Dictionary ldapData) { Cn = ldapData.GetValueOrDefault("cn") ?? throw new GroupModelConfigurationException(); GidNumber = ldapData.GetValueOrDefault("gidNumber"); DisplayName = ldapData.GetValueOrDefault("displayName") ?? Cn; string? descriptionValue = ldapData.GetValueOrDefault("description"); if (descriptionValue is null) { Permissions = []; } else { Permissions = JsonSerializer.Deserialize(descriptionValue)?.Permissions ?? []; } } } public class GroupPermissions { public required List Permissions { get; set; } } [JsonConverter(typeof(JsonStringEnumConverter))] public enum GroupPermission { None, CanInventorize, CanManageUsers, CanManageLocations, CanManageAssets, CanManageGroups }