private async Task <EntityResponse <_EntityType> > CheckPermission (_EntityType entity, Actor currentActor, ClaimsPrincipal currentPrincipal) { var checkModel = new CheckQueryPermissionModel <_EntityType> { Entity = entity, Actor = currentActor, Principal = currentPrincipal }; var validator = new EntityQueryPermissionValidator <_EntityType>(); var validatorResult = await validator .ValidateAsync(checkModel) .ConfigureAwait(false); if (!validatorResult.IsValid) { var errors = validatorResult.Errors .Select(x => x.ErrorMessage); return(ErrorResult(errors)); } return(new EntityResponse <_EntityType> { Success = true, Entity = entity }); }
private async Task <EntityResponse <GeoTask> > CheckPermission (GeoTask task, Actor actor, Project project) { ActorRole currentActorProjectRole = null; if (project != null && actor != null) { project.ProjectActorRoles.TryGetValue(actor.Id, out currentActorProjectRole); } var checkModel = new CheckQueryPermissionModel <GeoTask> { Entity = task, Actor = actor, ProjectActorRole = currentActorProjectRole }; var validator = new GeoTaskQueryPermissionValidator(); var validatorResult = await validator.ValidateAsync(checkModel) .ConfigureAwait(false); if (!validatorResult.IsValid) { return(ErrorResult(validatorResult.Errors .Select(x => x.ErrorMessage))); } return(new EntityResponse <GeoTask> { Success = true, Entity = task }); }