Files
Disco/Disco.Web/Areas/API/Models/Shared/SubjectDescriptorModel.cs
T
Gary Sharp be7ee4cae8 feature: flag permissions
feature: flag permissions
2025-07-31 19:03:33 +10:00

62 lines
1.7 KiB
C#

using Disco.Models.Repository;
using Disco.Services.Interop.ActiveDirectory;
namespace Disco.Web.Areas.API.Models.Shared
{
public class SubjectDescriptorModel
{
public string Id { get; set; }
public string Name { get; set; }
public string Type { get; set; }
public bool IsGroup { get; set; }
public bool IsUserAccount { get; set; }
public bool IsMachineAccount { get; set; }
public static SubjectDescriptorModel FromActiveDirectoryObject(IADObject ADObject)
{
var item = new SubjectDescriptorModel()
{
Id = ADObject.Id,
Name = ADObject.DisplayName
};
if (ADObject is ADUserAccount)
{
item.IsUserAccount = true;
item.Type = "user";
}
else if (ADObject is ADGroup)
{
item.IsGroup = true;
item.Type = "group";
}
else if (ADObject is ADMachineAccount)
{
item.IsMachineAccount = true;
item.Type = "machine";
}
else
{
item.Type = "unknown";
}
return item;
}
public static SubjectDescriptorModel FromAuthorizationRole(int roleId, string roleName)
{
return new SubjectDescriptorModel()
{
Id = $"[{roleId}]",
Name = roleName,
Type = "role",
IsGroup = true
};
}
public static SubjectDescriptorModel FromAuthorizationRole(AuthorizationRole role)
=> FromAuthorizationRole(role.Id, role.Name);
}
}