Files
adas-core/adas-core.Domain/Models/AppSettings/PermissionSettings.cs
T

371 lines
18 KiB
C#

namespace adas_core.Domain.Models.AppSettings;
/// <summary>
/// Represents the configuration settings related to permissions.
/// </summary>
/// <!-- aidoc:v1 sig=1c938b3 -->
public class PermissionSettings
{
public SourcePermissions Admin { get; set; } = new(
new DisplayPermissionTypes(
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
true
),
new DisplayPermissionTypes(
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
true
),
new PanelPermissionTypes(
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
true
)
);
public SourcePermissions Developer { get; set; } = new(
new DisplayPermissionTypes(
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
true
),
new DisplayPermissionTypes(
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
true
),
new PanelPermissionTypes(
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
true
)
);
public SourcePermissions DoctorChief { get; set; } = new(
new DisplayPermissionTypes(
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, false, false, true, false),
false
),
new DisplayPermissionTypes(
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
false
),
new PanelPermissionTypes(
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
false
)
);
public SourcePermissions Doctor { get; set; } = new(
new DisplayPermissionTypes(
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
false
),
new DisplayPermissionTypes(
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
false
),
new PanelPermissionTypes(
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
false
)
);
public SourcePermissions NursingSupervisor { get; set; } = new(
new DisplayPermissionTypes(
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, false, false, true, false),
false
),
new DisplayPermissionTypes(
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
false
),
new PanelPermissionTypes(
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
false
)
);
public SourcePermissions Nurse { get; set; } = new(
new DisplayPermissionTypes(
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
false
),
new DisplayPermissionTypes(
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
false
),
new PanelPermissionTypes(
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
false
)
);
public SourcePermissions Guest { get; set; } = new(
new DisplayPermissionTypes(
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
false
),
new DisplayPermissionTypes(
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
false
),
new PanelPermissionTypes(
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
false
)
);
}
/// <summary>
/// Represents a set of permissions for a source, grouping the unit-level and display-level <see cref="DisplayPermissionTypes"/> together with the corresponding <see cref="PanelPermissionTypes"/>.
/// </summary>
/// <remarks>
/// The primary constructor captures <paramref name="unit"/> and <paramref name="display"/> permissions as <see cref="DisplayPermissionTypes"/>, and <paramref name="panel"/> permissions as <see cref="PanelPermissionTypes"/>.
/// </remarks>
/// <!-- aidoc:v1 sig=74dcf70 -->
public class SourcePermissions(
DisplayPermissionTypes unit,
DisplayPermissionTypes display,
PanelPermissionTypes panel)
{
public DisplayPermissionTypes Unit { get; set; } = unit;
public DisplayPermissionTypes Display { get; set; } = display;
public PanelPermissionTypes Panel { get; set; } = panel;
}
/// <summary>
/// Encapsulates a collection of <see cref="UserActions"/> that govern the display permissions for clinical and administrative areas such as admissions, discharges, observations, demographic data, box blocking, notices, and cell management.
/// </summary>
/// <remarks>
/// The <paramref name="useDemoMode"/> flag indicates whether the permission configuration should be evaluated in demonstration mode.
/// </remarks>
/// <!-- aidoc:v1 sig=5c32eb7 -->
public class DisplayPermissionTypes(
UserActions admissions,
UserActions discharges,
UserActions obs,
UserActions demographicData,
UserActions boxBlocking,
UserActions notices,
UserActions cell,
bool useDemoMode)
{
public UserActions Admissions { get; set; } = admissions;
public UserActions Discharges { get; set; } = discharges;
public UserActions Obs { get; set; } = obs;
public UserActions Cell { get; set; } = cell;
public UserActions DemographicData { get; set; } = demographicData;
public UserActions BoxBlocking { get; set; } = boxBlocking;
public UserActions Notices { get; set; } = notices;
public bool UseDemoMode { get; set; } = useDemoMode;
}
/// <summary>
/// Encapsulates the <see cref="UserActions"/> permissions available for each application panel, such as <paramref name="units"/>, <paramref name="patients"/>, and <paramref name="observations"/>, along with the <paramref name="useDemoMode"/> flag.
/// </summary>
/// <remarks>
/// A dedicated <see cref="UserActions"/> value is supplied for every panel — units, displays, display configurations, master lists, treatments, patients, medicines, pumps, users, configuration observations, observations, and audits — so that the access rights for each section can be evaluated independently. The <paramref name="useDemoMode"/> parameter indicates whether the system is operating in demo mode.
/// </remarks>
/// <!-- aidoc:v1 sig=3d15620 -->
public class PanelPermissionTypes(
UserActions units,
UserActions displays,
UserActions displayConfigs,
UserActions masterLists,
UserActions treatments,
UserActions patients,
UserActions medicines,
UserActions pumps,
UserActions users,
UserActions configObservations,
UserActions observations,
UserActions audits,
bool useDemoMode)
{
public UserActions Units { get; set; } = units;
public UserActions Displays { get; set; } = displays;
public UserActions DisplayConfigs { get; set; } = displayConfigs;
public UserActions MasterLists { get; set; } = masterLists;
public UserActions Treatments { get; set; } = treatments;
public UserActions Patients { get; set; } = patients;
public UserActions Medicines { get; set; } = medicines;
public UserActions Pumps { get; set; } = pumps;
public UserActions Users { get; set; } = users;
public UserActions ConfigObservations { get; set; } = configObservations;
public UserActions Observations { get; set; } = observations;
public UserActions Audits { get; set; } = audits;
public bool UseDemoMode { get; set; } = useDemoMode;
}
/// <summary>
/// Represents a set of user permissions indicating whether the user is allowed to create, update, delete, read, or execute specific operations.
/// </summary>
/// <remarks>
/// This type captures granular action-level authorization flags, allowing the application to enforce and check individual user capabilities across supported operations.
/// </remarks>
/// <!-- aidoc:v1 sig=a3c35ac -->
public class UserActions(bool create, bool update, bool delete, bool read, bool execute)
{
public bool Create { get; set; } = create;
public bool Update { get; set; } = update;
public bool Delete { get; set; } = delete;
public bool Read { get; set; } = read;
public bool Execute { get; set; } = execute;
}