-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unclear whether data is missing or unavailable because of security #151
Comments
Interesting case.. :) Let me start with what you're trying to achieve: linking Filters to Boringen. This can be done without the 'putnummer' route, using the 'boringfiche' field of the Filter:
If we would be able to Join using different column names (#152), you could use this to retrieve Boring information:
As you noticed, this is not a mandatory field. In our datamodel a Filter is always linked to a Grondwaterlocatie (in this case: Put), but the link between Put and Boring is optional. This is listed as such in the output of get_fields(), see the definition above and the However, you have a special case here:
The 'boringfiche' is not null, so the Put is linked to a Boring. But if you'd search for this Boring, you receive an empty dataframe:
Turns out this Boring is not public, so it is not available is our public service because of security settings. To align with the webview, we should not include the pkey of the boring in the 'boringfiche' field of the Filter service it that Boring is not public. While digging through this, I also found that the 'putnummer' field of the Boring service is unreliable (will be fixed soonish). To summarize:
|
👍 very thorough explanation, thanks! I suggest to include a feedback to the user in case of 'security issues' blocking access to some data, instead of simply removing them from the output? It's not that the data don't exist, they are only not available without permission. |
While I agree that it would be good to be able to make the difference between 'data does not exists' and 'data exists but I'm not allowed to see it', this is not trivial at all and raises new questions:
|
:-( I was hoping it wouldn't be that difficult. Let's keep it to a warning in the docs than? |
We can do that for sure, please go ahead! I'm open to discuss about this issue at a next codesprint, but this is certainly something that needs thaughtful consideration and cannot be changed overnight. |
I have added the security check on Boring in the Filter (meetnetten) service. To align with the other services and the webviews, 'boornummer' and 'boringfiche' will be null when the Boring is not available publicly. Still to do: fix the 'putnummer' field of the Boring service. |
The 'putnummer' field of the Boring service has been fixed. |
A special one I guess:
Looking for the 'Boring' of a 'Filter' I came across the following (took quite some time before I figured it out):
The filter is n°1 of peilput 3-0513b (https://www.dov.vlaanderen.be/data/filter/2005-007148)
Parsing the Filter xml I retrieve the gw_id. This usually maps to the 'putnummer' in the Boring search. But in this case, there is no 'boring' for that 'peilput'.
When querying Boring for property 'putnummer', you get no result, or error of server timeout
Maybe it's a good idea to give some more feedback on what goes wrong if a query is 'valid' but gives no result? Because you have to admit that a 'filter', without a 'boring' is something special, if you don't know that it all actually maps to 'put' (if I remember correctly)?
The text was updated successfully, but these errors were encountered: