public async Task <JsonResult> AjaxRenderPermission(long?entityId, PermissionsTab permissionsTab, int currentPage) { if (CurrentUserId == 0) { await TryAuthenticateFromHttpContext(); } var details = GetUserPermissionDetails(entityId, permissionsTab, currentPage); return(Json(details, JsonRequestBehavior.AllowGet)); }
/// <summary> /// Initializes a new instance of the PermissionViewModel class. /// </summary> public PermissionViewModel( Permission currentUserPermission, IList <PermissionDetailsViewModel> permissionItemList, PageDetails paginationDetails, PermissionsTab selectedPermissionsTab) { this.CurrentUserPermission = currentUserPermission; this.PermissionItemList = permissionItemList; this.PaginationDetails = paginationDetails; this.SelectedPermissionsTab = selectedPermissionsTab; }
/// <summary> /// Initializes a new instance of the PermissionViewModel class. /// </summary> public PermissionViewModel( Permission currentUserPermission, IList<PermissionDetailsViewModel> permissionItemList, PageDetails paginationDetails, PermissionsTab selectedPermissionsTab) { this.CurrentUserPermission = currentUserPermission; this.PermissionItemList = permissionItemList; this.PaginationDetails = paginationDetails; this.SelectedPermissionsTab = selectedPermissionsTab; }
/// <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; }
public async Task<JsonResult> AjaxRenderPermission(long? entityId, PermissionsTab permissionsTab, int currentPage) { if (CurrentUserId == 0) { await TryAuthenticateFromHttpContext(_communityService, _notificationService); } var details = GetUserPermissionDetails(entityId, permissionsTab, currentPage); return Json(details,JsonRequestBehavior.AllowGet); }
/// <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); } }