public UserEffectivePermissions GetUserEffectivePermissions(string userName) { var returnValue = new UserEffectivePermissions { UserName = userName }; var userRoleList = _projectRoleManager.GetProjectRoleListForUser(userName); var projectIdList = userRoleList.Select(i=>i.ProjectId).Distinct(); foreach(var projectId in projectIdList) { var projectRoleList = userRoleList.Where(i=>i.ProjectId == projectId); var effectiveProjectPermissions = new DeployProjectEffectivePermissions { ProjectId = projectId, ProjectName = StringHelper.IsNullOrEmpty(projectRoleList.Select(i=>i.ProjectName).FirstOrDefault(), "(No Project Name)"), EditComponentConfigurationAccess = projectRoleList.Any(i => i.Permissions.EditComponentConfigurationAccess == EnumPermissionAccess.Deny) ? EnumPermissionAccess.Deny : projectRoleList.Any(i => i.Permissions.EditComponentConfigurationAccess == EnumPermissionAccess.Grant) ? EnumPermissionAccess.Grant : EnumPermissionAccess.None, CreateEnvironmentAccess = projectRoleList.Any(i => i.Permissions.CreateEnvironmentAccess == EnumPermissionAccess.Deny) ? EnumPermissionAccess.Deny : projectRoleList.Any(i => i.Permissions.CreateEnvironmentAccess == EnumPermissionAccess.Grant) ? EnumPermissionAccess.Grant : EnumPermissionAccess.None, EditProjectPermissionsAccess = projectRoleList.Any(i => i.Permissions.EditProjectPermissionsAccess == EnumPermissionAccess.Deny) ? EnumPermissionAccess.Deny : projectRoleList.Any(i => i.Permissions.EditProjectPermissionsAccess == EnumPermissionAccess.Grant) ? EnumPermissionAccess.Grant : EnumPermissionAccess.None, ApproveRejectDeployPermissionList = MergePermissions(projectRoleList.SelectMany(i => i.Permissions.ApproveRejectDeployPermissionList)), RequestDeployPermissionList = MergePermissions(projectRoleList.SelectMany(i => i.Permissions.RequestDeployPermissionList)), RunDeploymentPermissionList = MergePermissions(projectRoleList.SelectMany(i => i.Permissions.RunDeploymentPermissionList)), EditEnvironmentPermissionList = MergePermissions(projectRoleList.SelectMany(i => i.Permissions.EditEnvironmentPermissionList)), EditEnvironmentPermissionsPermissionList = MergePermissions(projectRoleList.SelectMany(i => i.Permissions.EditEnvironmentPermissionsPermissionList)) }; returnValue.ProjectPermissionList.Add(effectiveProjectPermissions); } var userSystemRoleList = _systemRoleManager.GetSystemRoleListForUser(userName); returnValue.SystemPermissions = new SystemRolePermissions { EditSystemPermissionsAccess = userSystemRoleList.Any(i => i.Permissions.EditSystemPermissionsAccess == EnumPermissionAccess.Deny) ? EnumPermissionAccess.Deny : userSystemRoleList.Any(i => i.Permissions.EditSystemPermissionsAccess == EnumPermissionAccess.Grant) ? EnumPermissionAccess.Grant : EnumPermissionAccess.None, EditUsersAccess = userSystemRoleList.Any(i => i.Permissions.EditUsersAccess == EnumPermissionAccess.Deny) ? EnumPermissionAccess.Deny : userSystemRoleList.Any(i => i.Permissions.EditUsersAccess == EnumPermissionAccess.Grant) ? EnumPermissionAccess.Grant : EnumPermissionAccess.None, EditDeploymentCredentialsAccess = userSystemRoleList.Any(i => i.Permissions.EditDeploymentCredentialsAccess == EnumPermissionAccess.Deny) ? EnumPermissionAccess.Deny : userSystemRoleList.Any(i => i.Permissions.EditDeploymentCredentialsAccess == EnumPermissionAccess.Grant) ? EnumPermissionAccess.Grant : EnumPermissionAccess.None, EditBuildPurgeRulesAccess = userSystemRoleList.Any(i => i.Permissions.EditBuildPurgeRulesAccess == EnumPermissionAccess.Deny) ? EnumPermissionAccess.Deny : userSystemRoleList.Any(i => i.Permissions.EditBuildPurgeRulesAccess == EnumPermissionAccess.Grant) ? EnumPermissionAccess.Grant : EnumPermissionAccess.None, }; return returnValue; }
private void AssertPermission(DeployProjectEffectivePermissions projectPermissions, EnumPermissionAccess access) { Assert.AreEqual(access, projectPermissions.EditComponentConfigurationAccess); Assert.AreEqual(access, projectPermissions.CreateEnvironmentAccess); Assert.AreEqual(access, projectPermissions.EditProjectPermissionsAccess); AssertPermission(projectPermissions.ApproveRejectDeployPermissionList, access); AssertPermission(projectPermissions.EditEnvironmentPermissionList, access); AssertPermission(projectPermissions.EditEnvironmentPermissionsPermissionList, access); AssertPermission(projectPermissions.RequestDeployPermissionList, access); AssertPermission(projectPermissions.RunDeploymentPermissionList, access); }