PermissionDefinitionContextBase.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using Abp.Application.Features;
  2. using Abp.Collections.Extensions;
  3. using Abp.Localization;
  4. using Abp.MultiTenancy;
  5. namespace Abp.Authorization
  6. {
  7. internal abstract class PermissionDefinitionContextBase : IPermissionDefinitionContext
  8. {
  9. protected readonly PermissionDictionary Permissions;
  10. protected PermissionDefinitionContextBase()
  11. {
  12. Permissions = new PermissionDictionary();
  13. }
  14. public Permission CreatePermission(
  15. string name,
  16. ILocalizableString displayName = null,
  17. ILocalizableString description = null,
  18. MultiTenancySides multiTenancySides = MultiTenancySides.Host | MultiTenancySides.Tenant,
  19. IFeatureDependency featureDependency = null)
  20. {
  21. if (Permissions.ContainsKey(name))
  22. {
  23. throw new AbpException("There is already a permission with name: " + name);
  24. }
  25. var permission = new Permission(name, displayName, description, multiTenancySides, featureDependency);
  26. Permissions[permission.Name] = permission;
  27. return permission;
  28. }
  29. public Permission GetPermissionOrNull(string name)
  30. {
  31. return Permissions.GetOrDefault(name);
  32. }
  33. public void RemovePermission(string name)
  34. {
  35. Permissions.Remove(name);
  36. }
  37. }
  38. }