I try to check if a user has one permission depending on a feature. I try to explain;
feature
-- UseApplication1 -> featureDependency: new SimpleFeatureDependency("UseApplication1")
-- UseApplication2 -> featureDependency: new SimpleFeatureDependency("UseApplication2")
Permission all permission depend on
-- Document -> featureDependency: new SimpleFeatureDependency("UseApplication2")
---| Add -> featureDependency: new SimpleFeatureDependency("UseApplication2")
---| Update -> featureDependency: new SimpleFeatureDependency("UseApplication2")
...
-- Application-> featureDependency: new SimpleFeatureDependency("UseApplication1")
---| Add -> featureDependency: new SimpleFeatureDependency("UseApplication1")
---| Update -> featureDependency: new SimpleFeatureDependency("UseApplication1")
1 user
-- Has permission Document,Add,Update
2 user
-- has no permission
If i get all feature and I check if is enable in tenant
if(await FeatureChecker.IsEnabledAsync(feature.Name))
now I need to check if user has one(or more) permission enable depending on this feature
...
var user = await UserManager.GetUserByIdAsync(AbpSession.UserId.Value);
var userPermission = await UserManager.GetGrantedPermissionsAsync(user);
userPermission.Where(t=>t.FeatureDependency())
... But How can I check if exists 1 (or more) check permission depending on my feature
mattia
1 Answer(s)
-
0
Hi,
I suspect that you are using it a bit wrong :)
Say that you have a "PermissionX" depends on "FeatureA". You should not have such a code
if(tenant has FeatureA)
{
if(user has PermissionX)
{
//...do it
}
}Since PermissionX depends on FeatureA, this will be enough:
if(user has PermissionX)
{
//...do it
}So, most of times, no need to explictly check features.
I haven't understood why you need to check "if exists 1 (or more) check permission depending on my feature", but to do it, use such a where condition:
userPermission.Where(t=>
(t.FeatureDependency is SimpleFeatureDependency) &&
t.FeatureDependency.As<SimpleFeatureDependency>().Features.Contains("MyFeatureName")
);If that's not you want, please explain your real case for a better answer.