Browse Source

Added permission for public side

pull/15117/head
malik masis 4 years ago
parent
commit
4714679439
  1. 26
      modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Permissions/CmsKitPublicPermissionDefinitionProvider.cs
  2. 12
      modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Permissions/CmsKitPublicPermissions.cs
  3. 18
      modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Comments/CommentPublicAppService.cs

26
modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Permissions/CmsKitPublicPermissionDefinitionProvider.cs

@ -0,0 +1,26 @@

using Volo.Abp.Authorization.Permissions;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.Localization;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Localization;
namespace Volo.CmsKit.Permissions;
public class CmsKitPublicPermissionDefinitionProvider : PermissionDefinitionProvider
{
public override void Define(IPermissionDefinitionContext context)
{
var cmsGroup = context.GetGroupOrNull(CmsKitPublicPermissions.GroupName) ?? context.AddGroup(CmsKitPublicPermissions.GroupName, L("Permission:CmsKitPublic"));
var contentGroup = cmsGroup.AddPermission(CmsKitPublicPermissions.Comments.Default, L("Permission:Comments"))
.RequireGlobalFeatures(typeof(CommentsFeature));
contentGroup.AddChild(CmsKitPublicPermissions.Comments.DeleteAll, L("Permission:Comments.DeleteAll"))
.RequireGlobalFeatures(typeof(CommentsFeature));
}
private static LocalizableString L(string name)
{
return LocalizableString.Create<CmsKitResource>(name);
}
}

12
modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Permissions/CmsKitPublicPermissions.cs

@ -0,0 +1,12 @@
namespace Volo.CmsKit.Permissions;
public static class CmsKitPublicPermissions
{
public const string GroupName = "CmsKitPublic";
public static class Comments
{
public const string Default = GroupName + ".Comments";
public const string DeleteAll = Default + ".DeleteAll";
}
}

18
modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Comments/CommentPublicAppService.cs

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Volo.Abp.Application.Dtos;
@ -13,6 +14,7 @@ using Volo.Abp.Users;
using Volo.CmsKit.Comments;
using Volo.CmsKit.Features;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Permissions;
using Volo.CmsKit.Users;
namespace Volo.CmsKit.Public.Comments;
@ -25,17 +27,20 @@ public class CommentPublicAppService : CmsKitPublicAppServiceBase, ICommentPubli
protected ICmsUserLookupService CmsUserLookupService { get; }
public IDistributedEventBus DistributedEventBus { get; }
protected CommentManager CommentManager { get; }
protected IAuthorizationService AuthorizationService { get; }
public CommentPublicAppService(
ICommentRepository commentRepository,
ICmsUserLookupService cmsUserLookupService,
IDistributedEventBus distributedEventBus,
CommentManager commentManager)
CommentManager commentManager,
IAuthorizationService authorizationService)
{
CommentRepository = commentRepository;
CmsUserLookupService = cmsUserLookupService;
DistributedEventBus = distributedEventBus;
CommentManager = commentManager;
AuthorizationService = authorizationService;
}
public virtual async Task<ListResultDto<CommentWithDetailsDto>> GetListAsync(string entityType, string entityId)
@ -99,14 +104,17 @@ public class CommentPublicAppService : CmsKitPublicAppServiceBase, ICommentPubli
[Authorize]
public virtual async Task DeleteAsync(Guid id)
{
var comment = await CommentRepository.GetAsync(id);
var allowDelete = await AuthorizationService.IsGrantedAsync(CmsKitPublicPermissions.Comments.DeleteAll);
if (comment.CreatorId != CurrentUser.GetId())
var comment = await CommentRepository.GetAsync(id);
if (allowDelete || comment.CreatorId == CurrentUser.Id)
{
await CommentRepository.DeleteWithRepliesAsync(comment);
}
else
{
throw new AbpAuthorizationException();
}
await CommentRepository.DeleteWithRepliesAsync(comment);
}
private List<CommentWithDetailsDto> ConvertCommentsToNestedStructure(List<CommentWithAuthorQueryResultItem> comments)

Loading…
Cancel
Save