diff --git a/server/AyaNova/ControllerHelpers/Authorized.cs b/server/AyaNova/ControllerHelpers/Authorized.cs index af570ffd..761a7531 100644 --- a/server/AyaNova/ControllerHelpers/Authorized.cs +++ b/server/AyaNova/ControllerHelpers/Authorized.cs @@ -58,6 +58,7 @@ namespace AyaNova.Api.ControllerHelpers internal static bool HasAnyRole(AuthorizationRoles currentUserRoles, AyaType objectType) { var RoleSet = BizRoles.GetRoleSet(objectType); + if (RoleSet == null) return false; var AllowedRoles = RoleSet.ReadFullRecord | RoleSet.Change | RoleSet.Select; return currentUserRoles.HasAnyFlags(AllowedRoles); } @@ -82,14 +83,17 @@ namespace AyaNova.Api.ControllerHelpers /// internal static bool HasSelectRole(AuthorizationRoles currentUserRoles, AyaType objectType) { + var RoleSet = BizRoles.GetRoleSet(objectType); + if (RoleSet == null) return false; + //NOTE: this assumes that if you can change you can read - if (currentUserRoles.HasAnyFlags(BizRoles.GetRoleSet(objectType).Change)) + if (currentUserRoles.HasAnyFlags(RoleSet.Change)) return true; - if (currentUserRoles.HasAnyFlags(BizRoles.GetRoleSet(objectType).ReadFullRecord)) + if (currentUserRoles.HasAnyFlags(RoleSet.ReadFullRecord)) return true; - if (currentUserRoles.HasAnyFlags(BizRoles.GetRoleSet(objectType).Select)) + if (currentUserRoles.HasAnyFlags(RoleSet.Select)) return true; return false; @@ -118,6 +122,7 @@ namespace AyaNova.Api.ControllerHelpers { //NOTE: this assumes that if you can change you can read var RoleSet = BizRoles.GetRoleSet(objectType); + if (RoleSet == null) return false; var AllowedRoles = RoleSet.ReadFullRecord | RoleSet.Change; return currentUserRoles.HasAnyFlags(AllowedRoles); } @@ -144,7 +149,9 @@ namespace AyaNova.Api.ControllerHelpers /// internal static bool HasCreateRole(AuthorizationRoles currentUserRoles, AyaType objectType) { - if (currentUserRoles.HasAnyFlags(BizRoles.GetRoleSet(objectType).Change)) + var RoleSet = BizRoles.GetRoleSet(objectType); + if (RoleSet == null) return false; + if (currentUserRoles.HasAnyFlags(RoleSet.Change)) return true; return false; } @@ -172,7 +179,9 @@ namespace AyaNova.Api.ControllerHelpers /// internal static bool HasModifyRole(AuthorizationRoles currentUserRoles, AyaType objectType) { - if (currentUserRoles.HasAnyFlags(BizRoles.GetRoleSet(objectType).Change)) + var RoleSet = BizRoles.GetRoleSet(objectType); + if (RoleSet == null) return false; + if (currentUserRoles.HasAnyFlags(RoleSet.Change)) return true; return false; } @@ -204,7 +213,9 @@ namespace AyaNova.Api.ControllerHelpers //For now just going to treat as a modify, but for maximum flexibility keeping this as a separate method in case we change our minds in future internal static bool HasDeleteRole(AuthorizationRoles currentUserRoles, AyaType objectType) { - if (currentUserRoles.HasAnyFlags(BizRoles.GetRoleSet(objectType).Change)) + var RoleSet = BizRoles.GetRoleSet(objectType); + if (RoleSet == null) return false; + if (currentUserRoles.HasAnyFlags(RoleSet.Change)) return true; return false; } diff --git a/server/AyaNova/Controllers/EnumListController.cs b/server/AyaNova/Controllers/EnumListController.cs index 22945c30..9973b772 100644 --- a/server/AyaNova/Controllers/EnumListController.cs +++ b/server/AyaNova/Controllers/EnumListController.cs @@ -53,7 +53,7 @@ namespace AyaNova.Api.Controllers public async Task GetList([FromRoute] string enumkey) { if (serverState.IsClosed) - return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); + return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); var ret = await GetEnumList(enumkey, UserTranslationIdFromContext.Id(HttpContext.Items), UserRolesFromContext.Roles(HttpContext.Items)); return Ok(ApiOkResponse.Response(ret)); }