package identity var rolePermissions = map[string][]string{ RoleAdministrator: { PermissionUsersRead, PermissionUsersWrite, PermissionAuditRead, PermissionDeviceRead, PermissionDeviceWrite, PermissionMediaRead, PermissionMediaWrite, PermissionAreaRead, PermissionAreaWrite, }, RoleOperator: { PermissionDeviceRead, PermissionDeviceWrite, PermissionMediaRead, PermissionMediaWrite, PermissionAreaRead, PermissionAreaWrite, }, RoleSiteAdmin: { PermissionUsersRead, PermissionAuditRead, PermissionDeviceRead, PermissionDeviceWrite, PermissionMediaRead, PermissionAreaRead, PermissionAreaWrite, }, RoleViewer: { PermissionDeviceRead, PermissionMediaRead, PermissionAreaRead, }, } func ValidRole(role string) bool { _, ok := rolePermissions[role] return ok } func PermissionsForRole(role string) []string { permissions := rolePermissions[role] return append([]string(nil), permissions...) } func HasPermission(role, permission string) bool { for _, candidate := range rolePermissions[role] { if candidate == permission { return true } } return false }