Hello,
In the AppServiceModule project I am adding 2 AuthorizationProviders. The first creates a root node under "Pages" called "Pages.Common" and the second create new permissions under "Pages.Common". The code is as follows:
Configuration.Authorization.Providers.Add<SharedAuthorizationProvider>();
Configuration.Authorization.Providers.Add<AgencyAuthorizationProvider>();
In the SharedAuthorizationProvider:
public static class SharedPermissions
{
public const string Pages = "Pages";
public const string Common= "Pages.Common";
}
public class SharedAuthorizationProvider : AuthorizationProvider
{
private readonly bool _isMultiTenancyEnabled;
public SharedAuthorizationProvider(bool isMultiTenancyEnabled)
{
_isMultiTenancyEnabled = isMultiTenancyEnabled;
}
public SharedAuthorizationProvider(IMultiTenancyConfig multiTenancyConfig)
{
_isMultiTenancyEnabled = multiTenancyConfig.IsEnabled;
}
public override void SetPermissions(IPermissionDefinitionContext context)
{
var pages = context.GetPermissionOrNull(SharedPermissions.Pages);
pages.CreateChildPermission(SharedPermissions.Common, L("Common.Permission"));
}
private static ILocalizableString L(string name)
{
return new LocalizableString(name, DrcAppConsts.LocalizationSourceName);
}
}
In the AgenciesAuthorizationProvider:
public static class AgencyPermissions
{
public const string Common = "Pages.Common";
public const string Agency = "Agency";
...
public class AgencyAuthorizationProvider : AuthorizationProvider
{
private readonly bool _isMultiTenancyEnabled;
public AgencyAuthorizationProvider(bool isMultiTenancyEnabled)
{
_isMultiTenancyEnabled = isMultiTenancyEnabled;
}
public AgencyAuthorizationProvider(IMultiTenancyConfig multiTenancyConfig)
{
_isMultiTenancyEnabled = multiTenancyConfig.IsEnabled;
}
public override void SetPermissions(IPermissionDefinitionContext context)
{
**var common = context.GetPermissionOrNull(AgencyPermissions.Common);**
var agency = common.CreateChildPermission(AgencyPermissions.Agency, L("Agency.Permission"));
In the line of code above that is bold: "common" is being null.
Is there something wrong in the code written or the library doesn't allow creating parent and child on the fly?
Thanks
3 Answer(s)
-
0
Hi,
I thin you should first get permission with name Pages in AgencyAuthorizationProvider, then get Pages.Common from it's children. Can you try it like that ?
Thanks.
-
0
Thank you Ismail for your quick response. That was it, and here is the code I used and it works in case someone needs it:
var pages = context.GetPermissionOrNull(AgencyPermissions.Pages); var common = pages.Children.Where( permission => permission.Name.Equals(AgencyPermissions.Common, System.StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); if (common == null) { return; }
-
0
Thanks @bilalhaidar :).