Hi,

I don't think the WFS-Insert could resolve the postgresql function
current_setting().
You should insert your user data with SQL.

GeoServers SQL View can resolve current_setting() and can combine/join
it with your user data to return only records the current myapp.user
should see.

Regards,
Stefan


Am 31.10.2018 um 13:13 schrieb Nanaso:
> Hi,
> Thanks a lot Stefan for your perfect solution.
> I have tested what you mentioned and it works pretty fine. But there
> is one remaining issue. That is how to pass the current geoserver's
> username to the database? I've a field in the geometries table called
> "user_name". It should hold the owner of the record (the user that can
> view the record). I need to fill this field with the current geoserver
> username. How can I do that?
> I tried the following WFS request:
> <Insert>
>       <tst:geometry_table xmlns:tst="tst">
>          <geometry xmlns="tst">
>             <Point xmlns="http://www.opengis.net/gml";
> srsName="urn:ogc:def:crs:EPSG::4326">
>                <pos srsDimension="2">21.958021949698434
> 14.533349892039715</pos>
>             </Point>
>          </geometry>
>          <name>city h</name>
>          <user_name>current_setting('myapp.user', TRUE)</user_name>
>       </tst:geometry_table>
>    </Insert>
> But it didn't substitute the username variable with its value.
>
> Can you help me how to do that using WFS, or whatever other solutions?
>
> Best regards,
> Nanaso
>
>
>
>
>
>
> Sent with ProtonMail <https://protonmail.com> Secure Email.
>
> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> On Wednesday, October 31, 2018 12:43 PM, Stefan Overkamp
> <[email protected]> wrote:
>
>> Hi,
>>
>> "Is it possible to decide which users can access which features in a
>> layer?"
>> I'm using the following solution for postgis datastore/layer:
>>
>>  *
>>     set a Session startup SQL (and session close-up SQL) in the
>>     datastore. This will set a variable with the current GeoServer user.
>>     e.g. startup "SELECT set_config('myapp.user',
>>     '${GSUSER,geoserver}', FALSE)
>>     close-up "SELECT set_config('myapp.user', '', FALSE)
>>  *
>>     create a sql view, restricting the returned records with the set
>>     variable (current_setting('myapp.user', TRUE))
>>     normally you would have an additional table in your database with
>>     mapping of usernames to records/spatial entities
>>
>> Regards,
>> Stefan
>>
>>
>> Am 29.10.2018 um 12:36 schrieb Nanaso via Geoserver-users:
>>
>>> Hi,
>>> Thanks a lot Nuno for your reply.
>>> There are two issues:
>>> 1- The Geofence extention can satisfy my needs in the following way:
>>> I have an attribute in my layer called "user_name", I can check if
>>> the logged in username equals to this attribute, then I will allow
>>> the logged in user to access this feature, and vise versa.
>>> The problem is how to get the current logged in username. Is there
>>> an environment varaible that holds the current logged in user?
>>>
>>> 2- The other issue is regarding installation of Geofence. I've tried
>>> to install version 13 of Geofence extention in a Geoserver of
>>> version 13, it works fine, but the place where I should enter the
>>> CQL filter is not exist. According to the documentation:
>>> https://docs.geoserver.org/stable/en/user/community/geofence-server/gui.html#rule-page
>>> There should be a place to specify the CQL fitler for read and
>>> write. But it looks like this part of the configuration doesn't
>>> exist in version 13 of Geofence.
>>> I've then tried to install verison 14 of Geofence in a veriosn 14 of
>>> Geoserver, but the server failed to launch with many exceptions. My
>>> machine is Mac OS High Sierra. And here you're the exceptions I
>>> recieve when launching geoserver after adding Geofence to it:
>>
>> --
>> =========================================
>> Dipl.Ing. Stefan Overkamp
>> tel: 02052 / 814184
>> mobil: 0177 / 7976159
>>
>

-- 
=========================================
Dipl.Ing. Stefan Overkamp
tel: 02052 / 814184
mobil: 0177 / 7976159

_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this 
list:
- Earning your support instead of buying it, but Ian Turton: 
http://www.ianturton.com/talks/foss4g.html#/
- The GeoServer user list posting guidelines: 
http://geoserver.org/comm/userlist-guidelines.html

If you want to request a feature or an improvement, also see this: 
https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer


[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to