init push
This commit is contained in:
129
internal/domain/auth/permission_module.go
Normal file
129
internal/domain/auth/permission_module.go
Normal file
@@ -0,0 +1,129 @@
|
||||
package auth
|
||||
|
||||
import "strings"
|
||||
|
||||
const (
|
||||
ModuleUser = "user"
|
||||
ModuleRole = "role"
|
||||
ModuleHelicopter = "helicopter"
|
||||
ModuleHelicopterUsage = "helicopter_usage"
|
||||
ModuleReserveAC = "reserve_ac"
|
||||
ModuleComplaint = "complaint"
|
||||
ModuleActionSignoff = "action_signoff"
|
||||
ModuleMCF = "mcf"
|
||||
ModuleEASARelease = "easa_release"
|
||||
ModuleFlightInspection = "flight_inspection"
|
||||
ModuleAfterFlight = "after_flight"
|
||||
ModuleFlight = "flight"
|
||||
ModuleFlightPrepCheck = "flight_prep_check"
|
||||
ModuleDutyRoster = "duty_roster"
|
||||
ModuleDUL = "dul"
|
||||
ModuleHEMSOperation = "hems_operation"
|
||||
ModuleHEMSBase = "hems_base"
|
||||
ModuleOperation = "operation"
|
||||
ModuleOperationCategory = "operation_category"
|
||||
ModuleForcesPresent = "forces_present"
|
||||
ModuleAirRescuerChecklist = "air_rescuer_checklist"
|
||||
ModuleMedicine = "medicine"
|
||||
ModulePatientData = "patient_data"
|
||||
ModuleInsurancePatientData = "insurance_patient_data"
|
||||
ModuleHealthInsuranceCompanies = "health_insurance_companies"
|
||||
ModuleVocation = "vocation"
|
||||
ModuleBase = "base"
|
||||
ModuleFacility = "facility"
|
||||
ModuleCountry = "country"
|
||||
ModuleFederalState = "federal_state"
|
||||
ModuleICAO = "icao"
|
||||
ModuleNoICAOCode = "no_icao_code"
|
||||
ModuleOPC = "opc"
|
||||
ModuleMasterSettings = "master_settings"
|
||||
ModuleFileManager = "file_manager"
|
||||
ModuleFilesystem = "filesystem"
|
||||
ModuleAudit = "audit"
|
||||
)
|
||||
|
||||
type ModuleInfo struct {
|
||||
Key string
|
||||
Label string
|
||||
}
|
||||
|
||||
var ModuleRegistry = []ModuleInfo{
|
||||
{ModuleUser, "User"},
|
||||
{ModuleRole, "Role"},
|
||||
{ModuleHelicopter, "Helicopter"},
|
||||
{ModuleHelicopterUsage, "Helicopter Usage"},
|
||||
{ModuleReserveAC, "Reserve AC"},
|
||||
{ModuleComplaint, "Complaint"},
|
||||
{ModuleActionSignoff, "Action Sign-off"},
|
||||
{ModuleMCF, "MCF"},
|
||||
{ModuleEASARelease, "EASA Release"},
|
||||
{ModuleFlightInspection, "Flight Inspection"},
|
||||
{ModuleAfterFlight, "After Flight Inspection"},
|
||||
{ModuleFlight, "Flight"},
|
||||
{ModuleFlightPrepCheck, "Flight Prep Check"},
|
||||
{ModuleDutyRoster, "Duty Roster"},
|
||||
{ModuleDUL, "DUL"},
|
||||
{ModuleHEMSOperation, "HEMS Operation"},
|
||||
{ModuleHEMSBase, "HEMS Base"},
|
||||
{ModuleOperation, "Operation"},
|
||||
{ModuleOperationCategory, "Operation Category"},
|
||||
{ModuleForcesPresent, "Forces Present"},
|
||||
{ModuleAirRescuerChecklist, "Air Rescuer Checklist"},
|
||||
{ModuleMedicine, "Medicine"},
|
||||
{ModulePatientData, "Patient Data"},
|
||||
{ModuleInsurancePatientData, "Insurance Patient Data"},
|
||||
{ModuleHealthInsuranceCompanies, "Health Insurance Companies"},
|
||||
{ModuleVocation, "Vocation"},
|
||||
{ModuleBase, "Base"},
|
||||
{ModuleFacility, "Facility"},
|
||||
{ModuleCountry, "Country"},
|
||||
{ModuleFederalState, "Federal State"},
|
||||
{ModuleICAO, "ICAO"},
|
||||
{ModuleNoICAOCode, "No ICAO Code"},
|
||||
{ModuleOPC, "OPC"},
|
||||
{ModuleMasterSettings, "Master Settings"},
|
||||
{ModuleFileManager, "File Manager"},
|
||||
{ModuleFilesystem, "Filesystem"},
|
||||
{ModuleAudit, "Audit"},
|
||||
}
|
||||
|
||||
var moduleOrder = func() map[string]int {
|
||||
m := make(map[string]int, len(ModuleRegistry))
|
||||
for i := range ModuleRegistry {
|
||||
m[ModuleRegistry[i].Key] = i
|
||||
}
|
||||
return m
|
||||
}()
|
||||
|
||||
// ModuleLabel returns the display label for a module key, falling back to the
|
||||
// key itself when the module is not registered.
|
||||
func ModuleLabel(key string) string {
|
||||
if i, ok := moduleOrder[key]; ok {
|
||||
return ModuleRegistry[i].Label
|
||||
}
|
||||
return key
|
||||
}
|
||||
|
||||
// IsRegisteredModule reports whether key is a known module in ModuleRegistry.
|
||||
func IsRegisteredModule(key string) bool {
|
||||
_, ok := moduleOrder[key]
|
||||
return ok
|
||||
}
|
||||
|
||||
// ModuleSortIndex returns a module's position in ModuleRegistry, or a large
|
||||
// value (sorting unknown modules last) when it is not registered.
|
||||
func ModuleSortIndex(key string) int {
|
||||
if idx, ok := moduleOrder[key]; ok {
|
||||
return idx
|
||||
}
|
||||
return len(ModuleRegistry)
|
||||
}
|
||||
|
||||
// ModuleForKey derives the module from a permission key by taking the segment
|
||||
// before the first dot, e.g. "dul.create" -> "dul", "role.permission.read" -> "role".
|
||||
func ModuleForKey(permissionKey string) string {
|
||||
if i := strings.Index(permissionKey, "."); i >= 0 {
|
||||
return permissionKey[:i]
|
||||
}
|
||||
return permissionKey
|
||||
}
|
||||
Reference in New Issue
Block a user