Browse Source

feat(localization): add language&resource management api support.

pull/772/head
cKey 3 years ago
parent
commit
35124e9860
  1. 14
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ILanguageAppService.cs
  2. 13
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/IResourceAppService.cs
  3. 14
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/LanguageCreateDto.cs
  4. 13
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/LanguageCreateOrUpdateDto.cs
  5. 11
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/LanguageDto.cs
  6. 4
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/LanguageUpdateDto.cs
  7. 10
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ResourceCreateDto.cs
  8. 17
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ResourceCreateOrUpdateDto.cs
  9. 13
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ResourceDto.cs
  10. 4
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ResourceUpdateDto.cs
  11. 73
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/LanguageAppService.cs
  12. 2
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/LocalizationManagementApplicationMapperProfile.cs
  13. 74
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/ResourceAppService.cs
  14. 37
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/LocalizationErrorCodes.cs
  15. 13
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/Language.cs
  16. 37
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LanguageProvider.cs
  17. 17
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/Resource.cs
  18. 6
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/StaticLocalizationSaver.cs
  19. 44
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/LanguageController.cs
  20. 45
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/ResourceController.cs

14
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ILanguageAppService.cs

@ -0,0 +1,14 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
namespace LINGYUN.Abp.LocalizationManagement;
public interface ILanguageAppService : IApplicationService
{
Task<LanguageDto> CreateAsync(LanguageCreateDto input);
Task<LanguageDto> UpdateAsync(string name, LanguageUpdateDto input);
Task DeleteAsync(string name);
}

13
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/IResourceAppService.cs

@ -0,0 +1,13 @@
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
namespace LINGYUN.Abp.LocalizationManagement;
public interface IResourceAppService : IApplicationService
{
Task<ResourceDto> CreateAsync(ResourceCreateDto input);
Task<ResourceDto> UpdateAsync(string name, ResourceUpdateDto input);
Task DeleteAsync(string name);
}

14
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/LanguageCreateDto.cs

@ -0,0 +1,14 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
namespace LINGYUN.Abp.LocalizationManagement;
public class LanguageCreateDto : LanguageCreateOrUpdateDto
{
[Required]
[DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxCultureNameLength))]
public string CultureName { get; set; }
[DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxUiCultureNameLength))]
public string UiCultureName { get; set; }
}

13
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/LanguageCreateOrUpdateDto.cs

@ -0,0 +1,13 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
namespace LINGYUN.Abp.LocalizationManagement;
public abstract class LanguageCreateOrUpdateDto
{
[Required]
[DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxDisplayNameLength))]
public string DisplayName { get; set; }
[DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxFlagIconLength))]
public string FlagIcon { get; set; }
}

11
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/LanguageDto.cs

@ -0,0 +1,11 @@
using System;
using Volo.Abp.Application.Dtos;
namespace LINGYUN.Abp.LocalizationManagement;
public class LanguageDto : AuditedEntityDto<Guid>
{
public string CultureName { get; set; }
public string UiCultureName { get; set; }
public string DisplayName { get; set; }
public string FlagIcon { get; set; }
}

4
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/LanguageUpdateDto.cs

@ -0,0 +1,4 @@
namespace LINGYUN.Abp.LocalizationManagement;
public class LanguageUpdateDto : LanguageCreateOrUpdateDto
{
}

10
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ResourceCreateDto.cs

@ -0,0 +1,10 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
namespace LINGYUN.Abp.LocalizationManagement;
public class ResourceCreateDto : ResourceCreateOrUpdateDto
{
[Required]
[DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxNameLength))]
public string Name { get; set; }
}

17
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ResourceCreateOrUpdateDto.cs

@ -0,0 +1,17 @@
using Volo.Abp.Validation;
namespace LINGYUN.Abp.LocalizationManagement;
public abstract class ResourceCreateOrUpdateDto
{
public bool Enable { get; set; } = true;
[DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxNameLength))]
public string DisplayName { get; set; }
[DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxNameLength))]
public string Description { get; set; }
[DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxNameLength))]
public string DefaultCultureName { get; set; }
}

13
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ResourceDto.cs

@ -0,0 +1,13 @@
using System;
using Volo.Abp.Application.Dtos;
namespace LINGYUN.Abp.LocalizationManagement;
public class ResourceDto : AuditedEntityDto<Guid>
{
public bool Enable { get; set; }
public string Name { get; set; }
public string DisplayName { get; set; }
public string Description { get; set; }
public string DefaultCultureName { get; set; }
}

4
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ResourceUpdateDto.cs

@ -0,0 +1,4 @@
namespace LINGYUN.Abp.LocalizationManagement;
public class ResourceUpdateDto : ResourceCreateOrUpdateDto
{
}

73
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/LanguageAppService.cs

@ -0,0 +1,73 @@
using LINGYUN.Abp.LocalizationManagement.Permissions;
using Microsoft.AspNetCore.Authorization;
using System.Threading.Tasks;
using Volo.Abp;
namespace LINGYUN.Abp.LocalizationManagement;
[Authorize(LocalizationManagementPermissions.Language.Default)]
public class LanguageAppService : LocalizationAppServiceBase, ILanguageAppService
{
private readonly ILanguageRepository _repository;
public LanguageAppService(ILanguageRepository repository)
{
_repository = repository;
}
[Authorize(LocalizationManagementPermissions.Language.Create)]
public async virtual Task<LanguageDto> CreateAsync(LanguageCreateDto input)
{
if (_repository.FindByCultureNameAsync(input.CultureName) != null)
{
throw new BusinessException(LocalizationErrorCodes.Language.NameAlreadyExists)
.WithData(nameof(Language.CultureName), input.CultureName);
}
var language = new Language(
GuidGenerator.Create(),
input.CultureName,
input.UiCultureName,
input.DisplayName,
input.FlagIcon);
language = await _repository.InsertAsync(language);
await CurrentUnitOfWork.SaveChangesAsync();
return ObjectMapper.Map<Language, LanguageDto>(language);
}
[Authorize(LocalizationManagementPermissions.Language.Delete)]
public async virtual Task DeleteAsync(string name)
{
var language = await GetByNameAsync(name);
await _repository.DeleteAsync(language);
await CurrentUnitOfWork.SaveChangesAsync();
}
[Authorize(LocalizationManagementPermissions.Language.Update)]
public async virtual Task<LanguageDto> UpdateAsync(string name, LanguageUpdateDto input)
{
var language = await GetByNameAsync(name);
language.SetFlagIcon(input.FlagIcon);
language.SetDisplayName(input.DisplayName);
await _repository.UpdateAsync(language);
await CurrentUnitOfWork.SaveChangesAsync();
return ObjectMapper.Map<Language, LanguageDto>(language);
}
private async Task<Language> GetByNameAsync(string name)
{
var language = await _repository.FindByCultureNameAsync(name);
return language ?? throw new BusinessException(LocalizationErrorCodes.Language.NameNotFoundOrStaticNotAllowed)
.WithData(nameof(Language.CultureName), name);
}
}

2
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/LocalizationManagementApplicationMapperProfile.cs

@ -6,6 +6,8 @@ namespace LINGYUN.Abp.LocalizationManagement
{
public LocalizationManagementApplicationMapperProfile()
{
CreateMap<Language, LanguageDto>();
CreateMap<Resource, ResourceDto>();
}
}
}

74
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/ResourceAppService.cs

@ -0,0 +1,74 @@
using LINGYUN.Abp.LocalizationManagement.Permissions;
using Microsoft.AspNetCore.Authorization;
using System.Threading.Tasks;
using Volo.Abp;
namespace LINGYUN.Abp.LocalizationManagement;
[Authorize(LocalizationManagementPermissions.Resource.Default)]
public class ResourceAppService : LocalizationAppServiceBase, IResourceAppService
{
private readonly IResourceRepository _repository;
public ResourceAppService(IResourceRepository repository)
{
_repository = repository;
}
[Authorize(LocalizationManagementPermissions.Resource.Create)]
public async virtual Task<ResourceDto> CreateAsync(ResourceCreateDto input)
{
if (_repository.FindByNameAsync(input.Name) != null)
{
throw new BusinessException(LocalizationErrorCodes.Resource.NameAlreadyExists)
.WithData(nameof(Resource.Name), input.Name);
}
var resource = new Resource(
GuidGenerator.Create(),
input.Name,
input.DisplayName,
input.Description,
input.DefaultCultureName);
resource = await _repository.InsertAsync(resource);
await CurrentUnitOfWork.SaveChangesAsync();
return ObjectMapper.Map<Resource, ResourceDto>(resource);
}
[Authorize(LocalizationManagementPermissions.Resource.Delete)]
public async virtual Task DeleteAsync(string name)
{
var resource = await GetByNameAsync(name);
await _repository.DeleteAsync(resource);
await CurrentUnitOfWork.SaveChangesAsync();
}
[Authorize(LocalizationManagementPermissions.Resource.Update)]
public async virtual Task<ResourceDto> UpdateAsync(string name, ResourceUpdateDto input)
{
var resource = await GetByNameAsync(name);
resource.SetDisplayName(input.DisplayName);
resource.SetDescription(input.Description);
resource.SetDefaultCultureName(input.DefaultCultureName);
await _repository.UpdateAsync(resource);
await CurrentUnitOfWork.SaveChangesAsync();
return ObjectMapper.Map<Resource, ResourceDto>(resource);
}
private async Task<Resource> GetByNameAsync(string name)
{
var resource = await _repository.FindByNameAsync(name);
return resource ?? throw new BusinessException(LocalizationErrorCodes.Resource.NameNotFoundOrStaticNotAllowed)
.WithData(nameof(Resource.Name), name);
}
}

37
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/LocalizationErrorCodes.cs

@ -0,0 +1,37 @@
namespace LINGYUN.Abp.LocalizationManagement;
public static class LocalizationErrorCodes
{
public const string Namespace = "Localization";
/// <summary>
/// 语言代码002
/// </summary>
public static class Language
{
public const string Prefix = Namespace + ":001";
/// <summary>
/// 名称已经存在
/// </summary>
public const string NameAlreadyExists = Prefix + "100";
/// <summary>
/// 没有找到名为 {CultureName} 的语言名称或内置语言不允许操作!
/// </summary>
public const string NameNotFoundOrStaticNotAllowed = Prefix + "400";
}
/// <summary>
/// 资源代码002
/// </summary>
public static class Resource
{
public const string Prefix = Namespace + ":002";
/// <summary>
/// 名称已经存在
/// </summary>
public const string NameAlreadyExists = Prefix + "100";
/// <summary>
/// 没有找到名为 {Name} 的资源名称或内置资源不允许操作!
/// </summary>
public const string NameNotFoundOrStaticNotAllowed = Prefix + "400";
}
}

13
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/Language.cs

@ -3,7 +3,6 @@ using System;
using Volo.Abp;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.Localization;
using Volo.Abp.MultiTenancy;
namespace LINGYUN.Abp.LocalizationManagement
{
@ -16,10 +15,12 @@ namespace LINGYUN.Abp.LocalizationManagement
public virtual string FlagIcon { get; set; }
protected Language() { }
public Language(
Guid id,
[NotNull] string cultureName,
[NotNull] string uiCultureName,
[NotNull] string displayName,
string flagIcon = null)
: base(id)
{
CultureName = Check.NotNullOrWhiteSpace(cultureName, nameof(cultureName), LanguageConsts.MaxCultureNameLength);
UiCultureName = Check.NotNullOrWhiteSpace(uiCultureName, nameof(uiCultureName), LanguageConsts.MaxUiCultureNameLength);
@ -32,6 +33,16 @@ namespace LINGYUN.Abp.LocalizationManagement
Enable = true;
}
public virtual void SetDisplayName(string displayName)
{
DisplayName = Check.NotNullOrWhiteSpace(displayName, nameof(displayName), LanguageConsts.MaxDisplayNameLength);
}
public virtual void SetFlagIcon(string flagIcon)
{
FlagIcon = Check.Length(flagIcon, nameof(flagIcon), LanguageConsts.MaxFlagIconLength);
}
public virtual void ChangeCulture(string cultureName, string uiCultureName = null, string displayName = null)
{
ChangeCultureInternal(cultureName, uiCultureName, displayName);

37
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LanguageProvider.cs

@ -0,0 +1,37 @@
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Localization;
namespace LINGYUN.Abp.LocalizationManagement;
[ExposeServices(
typeof(ILanguageProvider),
typeof(LanguageProvider))]
public class LanguageProvider : ILanguageProvider, ITransientDependency
{
protected ILanguageRepository Repository { get; }
public LanguageProvider(ILanguageRepository repository)
{
Repository = repository;
}
public async virtual Task<IReadOnlyList<LanguageInfo>> GetLanguagesAsync()
{
var languages = await Repository.GetActivedListAsync();
return languages.Select(MapToLanguageInfo).ToImmutableList();
}
protected virtual LanguageInfo MapToLanguageInfo(Language language)
{
return new LanguageInfo(
language.CultureName,
language.UiCultureName,
language.DisplayName,
language.FlagIcon);
}
}

17
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/Resource.cs

@ -14,10 +14,12 @@ namespace LINGYUN.Abp.LocalizationManagement
public virtual string DefaultCultureName { get; set; }
protected Resource() { }
public Resource(
Guid id,
[NotNull] string name,
[CanBeNull] string displayName = null,
[CanBeNull] string description = null,
[CanBeNull] string defaultCultureName = null)
: base(id)
{
Name = Check.NotNullOrWhiteSpace(name, nameof(name), ResourceConsts.MaxNameLength);
@ -27,5 +29,20 @@ namespace LINGYUN.Abp.LocalizationManagement
Enable = true;
}
public virtual void SetDisplayName(string displayName)
{
DisplayName = Check.Length(displayName, nameof(displayName), ResourceConsts.MaxDisplayNameLength);
}
public virtual void SetDescription(string description)
{
Description = Check.Length(description, nameof(description), ResourceConsts.MaxDescriptionLength);
}
public virtual void SetDefaultCultureName(string defaultCultureName)
{
DefaultCultureName = Check.Length(defaultCultureName, nameof(defaultCultureName), ResourceConsts.MaxDefaultCultureNameLength);
}
}
}

6
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/StaticLocalizationSaver.cs

@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Guids;
using Volo.Abp.Localization;
using Volo.Abp.Uow;
@ -14,6 +15,7 @@ namespace LINGYUN.Abp.LocalizationManagement;
[Dependency(ReplaceServices = true)]
public class StaticLocalizationSaver : IStaticLocalizationSaver, ITransientDependency
{
protected IGuidGenerator GuidGenerator { get; }
protected ILanguageRepository LanguageRepository { get; }
protected ITextRepository TextRepository { get; }
protected IResourceRepository ResourceRepository { get; }
@ -23,6 +25,7 @@ public class StaticLocalizationSaver : IStaticLocalizationSaver, ITransientDepen
protected AbpLocalizationPersistenceOptions LocalizationPersistenceOptions { get; }
public StaticLocalizationSaver(
IGuidGenerator guidGenerator,
IServiceProvider serviceProvider,
ILanguageRepository languageRepository,
ITextRepository textRepository,
@ -31,6 +34,7 @@ public class StaticLocalizationSaver : IStaticLocalizationSaver, ITransientDepen
IOptions<AbpLocalizationOptions> localizationOptions,
IOptions<AbpLocalizationPersistenceOptions> localizationPersistenceOptions)
{
GuidGenerator = guidGenerator;
ServiceProvider = serviceProvider;
LanguageRepository = languageRepository;
TextRepository = textRepository;
@ -51,6 +55,7 @@ public class StaticLocalizationSaver : IStaticLocalizationSaver, ITransientDepen
{
await LanguageRepository.InsertAsync(
new Language(
GuidGenerator.Create(),
language.CultureName,
language.UiCultureName,
language.DisplayName,
@ -71,6 +76,7 @@ public class StaticLocalizationSaver : IStaticLocalizationSaver, ITransientDepen
{
await ResourceRepository.InsertAsync(
new Resource(
GuidGenerator.Create(),
localizationResource.ResourceName,
localizationResource.ResourceName,
localizationResource.ResourceName,

44
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/LanguageController.cs

@ -0,0 +1,44 @@
using LINGYUN.Abp.LocalizationManagement.Permissions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc;
namespace LINGYUN.Abp.LocalizationManagement;
[Authorize(LocalizationManagementPermissions.Language.Default)]
[RemoteService(Name = LocalizationRemoteServiceConsts.RemoteServiceName)]
[Area("localization")]
[Route("api/localization/languages")]
public class LanguageController : AbpControllerBase, ILanguageAppService
{
private readonly ILanguageAppService _service;
public LanguageController(ILanguageAppService service)
{
_service = service;
}
[HttpPost]
[Authorize(LocalizationManagementPermissions.Language.Create)]
public virtual Task<LanguageDto> CreateAsync(LanguageCreateDto input)
{
return _service.CreateAsync(input);
}
[HttpDelete]
[Route("{name}")]
[Authorize(LocalizationManagementPermissions.Language.Delete)]
public virtual Task DeleteAsync(string name)
{
return _service.DeleteAsync(name);
}
[HttpPut]
[Route("{name}")]
[Authorize(LocalizationManagementPermissions.Language.Update)]
public virtual Task<LanguageDto> UpdateAsync(string name, LanguageUpdateDto input)
{
return _service.UpdateAsync(name, input);
}
}

45
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/ResourceController.cs

@ -0,0 +1,45 @@
using LINGYUN.Abp.LocalizationManagement.Permissions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc;
namespace LINGYUN.Abp.LocalizationManagement;
[Authorize(LocalizationManagementPermissions.Resource.Default)]
[RemoteService(Name = LocalizationRemoteServiceConsts.RemoteServiceName)]
[Area("localization")]
[Route("api/localization/resources")]
public class ResourceController : AbpControllerBase, IResourceAppService
{
private readonly IResourceAppService _service;
public ResourceController(IResourceAppService service)
{
_service = service;
}
[HttpPost]
[Authorize(LocalizationManagementPermissions.Resource.Create)]
public virtual Task<ResourceDto> CreateAsync(ResourceCreateDto input)
{
return _service.CreateAsync(input);
}
[HttpDelete]
[Route("{name}")]
[Authorize(LocalizationManagementPermissions.Resource.Delete)]
public virtual Task DeleteAsync(string name)
{
return _service.DeleteAsync(name);
}
[HttpPut]
[Route("{name}")]
[Authorize(LocalizationManagementPermissions.Resource.Update)]
public virtual Task<ResourceDto> UpdateAsync(string name, ResourceUpdateDto input)
{
return _service.UpdateAsync(name, input);
}
}
Loading…
Cancel
Save