示例#1
0
        public async Task <CommunityViewModel> GetCommunityByNameAsync(string communityName)
        {
            var community = await _communityRepository.GetByConditionAsync <CommunityViewModel>(
                x => x.Name == communityName,
                CommunityHelpers.GetCommunityMapperConfiguration());

            Guard.Against.NullItem(community, nameof(community));

            return(community);
        }
示例#2
0
        public async Task <IEnumerable <CommunityViewModel> > GetCommunitiesAsync(CommunitySearchParams searchParams)
        {
            User user = await _userManager.FindByIdAsync(searchParams.UserId);

            Guard.Against.NullItem(user, nameof(user));

            var specification = new CommunityFilterSpecification(searchParams);

            return(await _communityRepository.ListAsync <CommunityViewModel>(specification,
                                                                             CommunityHelpers.GetCommunityMapperConfiguration()));
        }
示例#3
0
        protected override Task HandleRequirementAsync(AuthorizationHandlerContext context,
                                                       CanDeleteCommunityAuthorizationRequirement requirement, Sharporum.Domain.Entities.Community community)
        {
            string roleBase = $"{nameof(Community)}/{community.Id}";

            if (context.User.HasClaim(JwtClaimTypes.Role, $"{roleBase}/{Roles.Admin}") ||
                CommunityHelpers.UserOwnsCommunity(context.User.FindFirstValue("sub"), community.AuthorId))
            {
                context.Succeed(requirement);
                return(Task.CompletedTask);
            }

            context.Fail();
            return(Task.CompletedTask);
        }