コード例 #1
0
        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));
        }
コード例 #2
0
        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());
            }
        }
コード例 #3
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);
            }
        }