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.