public static bool IsAllowedBasedOnAppRoles(UserDto currentUser, IEnumerable <OperationPermission> relevantOperations, IHasStudyPermissionDetails studyPermissionDetails, UserOperation operation, string roleBeingAddedOrRemoved = null) { var allowedForAppRolesQueryable = AllowedUserOperations.ForAppRolesLevel(relevantOperations); if (studyPermissionDetails.Restricted) { allowedForAppRolesQueryable = AllowedUserOperations.ForRestrictedStudies(allowedForAppRolesQueryable); } if (allowedForAppRolesQueryable.Any()) { foreach (var curAllowance in allowedForAppRolesQueryable) { if (UserHasAnyOfTheseAppRoles(currentUser, curAllowance.AllowedForRoles)) { if (curAllowance.AppliesOnlyIfUserIsStudyOwner) { if (UserHasAnyOfTheseStudyRoles(currentUser.Id, studyPermissionDetails, operation, roleBeingAddedOrRemoved, StudyRoles.StudyOwner)) { return(true); } } else { return(true); } } } } return(false); }
public static bool IsAllowedForEmployeesWithoutAnyRoles(UserDto currentUser, IEnumerable <OperationPermission> relevantOperations, IHasStudyPermissionDetails studyPermissionDetails = null) { if (!currentUser.Employee) { return(false); } var operationsAllowedWithoutRoles = AllowedUserOperations.ForAllNonExternalUserLevel(relevantOperations); if (studyPermissionDetails != null && studyPermissionDetails.Restricted) { operationsAllowedWithoutRoles = AllowedUserOperations.ForRestrictedStudies(operationsAllowedWithoutRoles); } return(operationsAllowedWithoutRoles.Any()); }