PermissionDefinitionContextBase.cs 1.4 KB

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