Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
 /// <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;
 }
Ejemplo n.º 3
0
 /// <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;
 }
Ejemplo n.º 4
0
        /// <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;

        }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 6
0
        /// <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);
            }
        }