public ActionResult Details(int id) { var permission = _permissionRepository.Get(id); var vm = new PermissionDetailsViewModel(permission); var roles = _rolePermissionRepository.GetAllBy(p => p.PermissionId == permission.Id, "Role").Select(p => p.Role).ToList(); var roleIds = roles.Select(r => r.Id).ToList(); var userIds = _roleMemberRepository.GetAllBy(m => roleIds.Contains(m.RoleId)).Select(u => u.UserId).ToList(); var users = _userRepository.GetAllBy(u => userIds.Contains(u.Id), "Person").ToList(); vm.Roles = roles; vm.Users = users; return(View(vm)); }
public async Task <IActionResult> Get(int?id) { if (id == null) { return(NotFound()); } Permission permission = await _permissionsRepository.GetPermissionAsync(id); if (permission != null) { PermissionDetailsViewModel permissionDetailsVM = Mapper.Map <Permission, PermissionDetailsViewModel>(permission); return(new OkObjectResult(permissionDetailsVM)); } else { return(NotFound()); } }
/// <summary> /// Gets the user permission details for the given community /// </summary> /// <param name="communityId">Community for which permission details to be fetched</param> /// <param name="permissionsTab">Permission tab (Users/Requests) for which data to be fetched</param> /// <param name="currentPage">Current page to be rendered</param> /// <returns>ViewModel with permission details</returns> private async Task <PermissionViewModel> GetUserPermissionDetails(long?communityId, PermissionsTab permissionsTab, int currentPage) { var pageDetails = new PageDetails(currentPage) { ItemsPerPage = Constants.PermissionsPerPage }; PermissionDetails permissionDetails = null; if (permissionsTab == PermissionsTab.Users) { permissionDetails = await ProfileService.GetUserPemissions(CurrentUserId, communityId.Value, pageDetails); } else if (permissionsTab == PermissionsTab.Requests) { permissionDetails = await ProfileService.GetUserPemissionRequests(CurrentUserId, communityId, pageDetails); } else { permissionDetails = await ProfileService.GetUserPemissionRequests(CurrentUserId, null, pageDetails); } if (permissionDetails != null) { // Check if there is only one owner for the current community. var singleOwner = permissionDetails.PermissionItemList.Count(p => p.Role == UserRole.Owner) == 1; var permissionList = new List <PermissionDetailsViewModel>(); foreach (var permissionItem in permissionDetails.PermissionItemList) { var model = new PermissionDetailsViewModel() { Id = permissionItem.UserID, Name = permissionItem.Name, CommunityId = permissionItem.CommunityID, CommunityName = permissionItem.CommunityName, Comment = permissionItem.Comment, Date = permissionItem.Date, Role = permissionItem.Role, IsInherited = permissionItem.IsInherited, CurrentUserRole = permissionItem.CurrentUserRole }; model.Requested = model.Date.GetFormattedDifference(DateTime.UtcNow); model.CanShowEditLink = model.CanShowDeleteLink = true; if (model.Role == UserRole.Owner && (singleOwner || model.CurrentUserRole < UserRole.Owner)) { // 1. No edit/delete options should be shown if there is only one owner. // 2. Only owners and site administrators can edit/delete owners permissions. model.CanShowEditLink = model.CanShowDeleteLink = false; } else if (model.Id == CurrentUserId) { // No edit/delete options should be shown in users permission page for the logged in user model.CanShowEditLink = model.CanShowDeleteLink = false; } else if (permissionItem.IsInherited) { // If the role of user permission is is inherited, then user should not be allowed to delete. model.CanShowDeleteLink = false; // If the role of user permission is Owner and is inherited, then user should not be allowed to edit also. if (model.Role == UserRole.Owner) { model.CanShowEditLink = false; } } permissionList.Add(model); } var permissionViewModel = new PermissionViewModel( permissionDetails.CurrentUserPermission, permissionList, pageDetails, permissionsTab); return(permissionViewModel); } else { return(null); } }