From 881f19d7c371201efce08baf78b00423cd2f6ddc Mon Sep 17 00:00:00 2001 From: enisn Date: Tue, 29 Dec 2020 12:21:54 +0300 Subject: [PATCH] Add Tag Admin app services --- .../CmsKit/Admin/Tags/ITagAdminAppService.cs | 10 +++ .../Volo/CmsKit/Admin/Tags/TagCreateDto.cs | 12 ++++ .../Volo/CmsKit/Admin/Tags/TagGetListInput.cs | 9 +++ .../Volo/CmsKit/Admin/Tags/TagUpdateDto.cs | 10 +++ ...CmsKitAdminPermissionDefinitionProvider.cs | 25 +++++++ .../Permissions/CmsKitAdminPermissions.cs | 21 ++++++ .../CmsKit/Admin/Tags/TagAdminAppService.cs | 70 +++++++++++++++++++ .../Volo/CmsKit/Admin/Tags/TagController.cs | 56 +++++++++++++++ .../CmsKit/Localization/Resources/en.json | 27 ++++--- .../CmsKit/Localization/Resources/tr.json | 27 ++++--- 10 files changed, 247 insertions(+), 20 deletions(-) create mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/ITagAdminAppService.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagCreateDto.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagGetListInput.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissionDefinitionProvider.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissions.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Tags/TagAdminAppService.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Tags/TagController.cs diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/ITagAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/ITagAdminAppService.cs new file mode 100644 index 0000000000..e677a54c28 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/ITagAdminAppService.cs @@ -0,0 +1,10 @@ +using System; +using Volo.Abp.Application.Services; +using Volo.CmsKit.Tags; + +namespace Volo.CmsKit.Admin.Tags +{ + public interface ITagAdminAppService : ICrudAppService + { + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagCreateDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagCreateDto.cs new file mode 100644 index 0000000000..3eb75bec07 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagCreateDto.cs @@ -0,0 +1,12 @@ +using System.ComponentModel.DataAnnotations; + +namespace Volo.CmsKit.Admin.Tags +{ + public class TagCreateDto + { + [Required] + public string EntityType { get; set; } + [Required] + public string Name { get; set; } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagGetListInput.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagGetListInput.cs new file mode 100644 index 0000000000..23e7041134 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagGetListInput.cs @@ -0,0 +1,9 @@ +using Volo.Abp.Application.Dtos; + +namespace Volo.CmsKit.Admin.Tags +{ + public class TagGetListInput : PagedAndSortedResultRequestDto + { + public string Filter { get; set; } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs new file mode 100644 index 0000000000..4df242a997 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs @@ -0,0 +1,10 @@ +using System.ComponentModel.DataAnnotations; + +namespace Volo.CmsKit.Admin.Tags +{ + public class TagUpdateDto + { + [Required] + public string Name { get; set; } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissionDefinitionProvider.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissionDefinitionProvider.cs new file mode 100644 index 0000000000..2cb6a53b58 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissionDefinitionProvider.cs @@ -0,0 +1,25 @@ +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Localization; +using Volo.CmsKit.Localization; + +namespace Volo.CmsKit.Permissions +{ + public class CmsKitAdminPermissionDefinitionProvider : PermissionDefinitionProvider + { + public override void Define(IPermissionDefinitionContext context) + { + var cmsGroup = context.GetGroupOrNull(CmsKitAdminPermissions.GroupName) ?? context.AddGroup(CmsKitAdminPermissions.GroupName, L("Permission:CmsKit")); + + cmsGroup + .AddPermission(CmsKitAdminPermissions.Tags.Default, L("Permission:TagManagement")) + .AddChild(CmsKitAdminPermissions.Tags.Create, L("Permission:TagManagement.Create")) + .AddChild(CmsKitAdminPermissions.Tags.Update, L("Permission:TagManagement.Update")) + .AddChild(CmsKitAdminPermissions.Tags.Delete, L("Permission:TagManagement.Delete")); + } + + private static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissions.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissions.cs new file mode 100644 index 0000000000..1cdf0291ef --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissions.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Reflection; + +namespace Volo.CmsKit.Permissions +{ + public class CmsKitAdminPermissions + { + public const string GroupName = "CmsKit"; + public static class Tags + { + public const string Default = GroupName + ".Tags"; + public const string Create = Default + ".Create"; + public const string Update = Default + ".Update"; + public const string Delete = Default + ".Delete"; + } + + public static string[] GetAll() + { + return ReflectionHelper.GetPublicConstantsRecursively(typeof(CmsKitAdminPermissions)); + } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Tags/TagAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Tags/TagAdminAppService.cs new file mode 100644 index 0000000000..382e14b688 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Tags/TagAdminAppService.cs @@ -0,0 +1,70 @@ +using Microsoft.AspNetCore.Authorization; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Application.Services; +using Volo.Abp.Domain.Repositories; +using Volo.CmsKit.Admin.Tags; +using Volo.CmsKit.Permissions; +using Volo.CmsKit.Tags; + +namespace Volo.CmsKit.Admin.Tags +{ + public class TagAdminAppService : + CrudAppService< + Tag, + TagDto, + Guid, + TagGetListInput, + TagCreateDto, + TagUpdateDto>, + ITagAdminAppService + { + protected ITagManager TagManager { get; } + + public TagAdminAppService( + IRepository repository, + ITagManager tagManager) : base(repository) + { + TagManager = tagManager; + + GetListPolicyName = CmsKitAdminPermissions.Tags.Default; + GetPolicyName = CmsKitAdminPermissions.Tags.Default; + CreatePolicyName = CmsKitAdminPermissions.Tags.Create; + UpdatePolicyName = CmsKitAdminPermissions.Tags.Update; + DeletePolicyName = CmsKitAdminPermissions.Tags.Delete; + } + + [Authorize(CmsKitAdminPermissions.Tags.Create)] + public override async Task CreateAsync(TagCreateDto input) + { + var inserted = await TagManager.InsertAsync( + GuidGenerator.Create(), + input.EntityType, + input.Name, + CurrentTenant?.Id); + return MapToGetOutputDto(inserted); + } + + [Authorize(CmsKitAdminPermissions.Tags.Update)] + public override async Task UpdateAsync(Guid id, TagUpdateDto input) + { + var updated = await TagManager.UpdateAsync( + id, + input.Name); + + return MapToGetOutputDto(updated); + } + protected override IQueryable CreateFilteredQuery(TagGetListInput input) + { + return base.CreateFilteredQuery(input) + .WhereIf( + !string.IsNullOrEmpty(input.Filter), + x => + x.Name.ToLower().Contains(input.Filter) || + x.EntityType.ToLower().Contains(input.Filter)); + } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Tags/TagController.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Tags/TagController.cs new file mode 100644 index 0000000000..11dcc9a846 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Tags/TagController.cs @@ -0,0 +1,56 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; +using Volo.CmsKit.Admin.Tags; +using Volo.CmsKit.Permissions; +using Volo.CmsKit.Tags; + +namespace Volo.CmsKit.Admin.Tags +{ + public class TagController : CmsKitAdminController, ITagAdminAppService + { + protected ITagAdminAppService TagAdminAppService { get; } + + public TagController(ITagAdminAppService tagAdminAppService) + { + TagAdminAppService = tagAdminAppService; + } + + [HttpPost] + [Authorize(CmsKitAdminPermissions.Tags.Create)] + public Task CreateAsync(TagCreateDto input) + { + return TagAdminAppService.CreateAsync(input); + } + + [HttpDelete("{id}")] + [Authorize(CmsKitAdminPermissions.Tags.Delete)] + public Task DeleteAsync(Guid id) + { + return TagAdminAppService.DeleteAsync(id); + } + + [HttpGet("{id}")] + [Authorize(CmsKitAdminPermissions.Tags.Default)] + public Task GetAsync(Guid id) + { + return TagAdminAppService.GetAsync(id); + } + + [HttpGet] + [Authorize(CmsKitAdminPermissions.Tags.Default)] + public Task> GetListAsync(TagGetListInput input) + { + return TagAdminAppService.GetListAsync(input); + } + + [HttpPut("{id}")] + [Authorize(CmsKitAdminPermissions.Tags.Update)] + public Task UpdateAsync(Guid id, [FromBody] TagUpdateDto input) + { + return TagAdminAppService.UpdateAsync(id, input); + } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json index 73fd2d52b6..42d56b8d16 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json @@ -1,22 +1,29 @@ { "culture": "en", "texts": { - "PickYourReaction": "Pick your reaction", - "YourComment": "Your comment", - "YourReply": "Your reply", + "CommentAuthorizationExceptionMessage": "Those comments are not allowed for public display.", "Comments": "Comments", - "Send": "Send", "Delete": "Delete", - "Reply": "Reply", - "Update": "Update", "Edit": "Edit", "LoginToAddComment": "Login to add comment", + "LoginToRate": "Login to rate", "LoginToReply": "Login to reply", "MessageDeletionConfirmationMessage": "This comment will be deleted completely.", - "CommentAuthorizationExceptionMessage": "Those comments are not allowed for public display.", - "Undo": "Undo", + "Permission:CmsKit": "CmsKit", + "Permission:TagManagement": "Tag Management", + "Permission:TagManagement.Create": "Create Tag", + "Permission:TagManagement.Delete": "Delete Tag", + "Permission:TagManagement.Update": "Update Tag", + "PickYourReaction": "Pick your reaction", "RatingUndoMessage": "Your rating will be undo.", - "LoginToRate": "Login to rate", - "Star": "Star" + "Reply": "Reply", + "Send": "Send", + "Star": "Star", + "TagDeletionConfirmationMessage": "Are you sure to delete '{0}' tag?", + "Tags": "Tags", + "Undo": "Undo", + "Update": "Update", + "YourComment": "Your comment", + "YourReply": "Your reply" } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json index 777e89c979..ac8bd98a9f 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json @@ -1,22 +1,29 @@ { "culture": "tr", "texts": { - "PickYourReaction": "Tepkinizi seçin", - "YourComment": "Yorumunuz", - "YourReply": "Cevabınız", + "CommentAuthorizationExceptionMessage": "Bu yorumları görebilmek için yetki gerekir.", "Comments": "Yorumlar", - "Send": "Gönder", "Delete": "Sil", - "Reply": "Cevapla", - "Update": "Güncelle", "Edit": "Düzenle", "LoginToAddComment": "Yorum yapmak için giriş yap", + "LoginToRate": "Oylamak için giriş yapın", "LoginToReply": "Cevap vermek için giriş yap", "MessageDeletionConfirmationMessage": "Bu yorum tamamen silinecektir", - "CommentAuthorizationExceptionMessage": "Bu yorumları görebilmek için yetki gerekir.", - "Undo": "Geri al", + "Permission:CmsKit": "CmsKit", + "Permission:TagManagement": "Etiket Yönetimi", + "Permission:TagManagement.Create": "Etiket Oluşturma", + "Permission:TagManagement.Delete": "Etiket Silme", + "Permission:TagManagement.Update": "Etiket Güncelleme", + "PickYourReaction": "Tepkinizi seçin", "RatingUndoMessage": "Oylamanız geri alınacak.", - "LoginToRate": "Oylamak için giriş yapın", - "Star": "Yıldız" + "Reply": "Cevapla", + "Send": "Gönder", + "Star": "Yıldız", + "TagDeletionConfirmationMessage": "'{0}' etiketini silmek istediğinize emin misiniz?", + "Tags": "Etiketler", + "Undo": "Geri al", + "Update": "Güncelle", + "YourComment": "Yorumunuz", + "YourReply": "Cevabınız" } }