Re: [MASSMAIL]Re: Permisos para usuario por columnas

2018-02-15 Thread jvenegasperu .
Hola Gilberto tienes razón.

Nestor, con esto se puede hacer lo que requerimos.

Dejo por aqui el ejemplo que encontre en la doc de de postgres

GRANT SELECT ON mytable TO PUBLIC;
GRANT SELECT, UPDATE, INSERT ON mytable TO admin;
GRANT SELECT (col1), UPDATE (col1) ON mytable TO miriam_rw;


https://www.postgresql.org/docs/9.3/static/sql-grant.html









El 15 de febrero de 2018, 10:37,  escribió:

> Hola,
>
> Eso existe desde la versión 9.0 por ahí mas o menos, favor revisen la
> documentación,
>
>
> On 2018-02-15 09:21, Néstor Ramires wrote:
>
>> No sabría decirte, aún no he hecho la experiencia, si puedo decirte
>> que es una de las opciones que se han pensado, podría funcionar bien,
>> de hecho concretamente ésta tabla de la que hablo tiene 11 campos de
>> carga manual y control más el que contiene la geometría, el resto de
>> los datos (se agregan al rededor de 30 campos más) aún no se lo ha
>> trabajado y es algo por resolver.
>>
>>
>> En Sun, 11 Feb 2018 05:39:03 -0300, jvenegasperu .
>>  escribió:
>>
>>  Nestor si en efecto la vista para mi no es una opcion se hace demasiado
>>> lento.
>>>
>>> yo solo uso vistas materializadas para mirar desde qgis las vistas
>>> normales
>>> si que demoran con Qgis.
>>>
>>> Pienso que quiza una salida sea tener dos tablas una con solo los campos
>>> para el usuario y otra con todo lo necesario y luego con un trigger
>>> insertar en la tabla mas completa que te parece tal vez funcione bien.
>>>
>>>
>>>
>>> El 9 de febrero de 2018, 7:37, Néstor Ramires 
>>> escribió:
>>>
>>> Me encontré con la misma situación. Aún no lo resuelvo a nivel de
 permisos
 (hay otras prioridades) sin embargo una alternativa que encontramos para
 visualizar y dejar como editable sólo algunos campos en la consulta es
 la
 de crear una vista (con el campo de geometría incluido) como
 contrapartida,
 al nemos en mi caso, Qgis funciona bastante más lento (en una tabal con
 260.000 registros)
 En vez de cargar la tabla directamente, se carga la vista como capa
 editable.



 En Fri, 09 Feb 2018 02:14:57 -0300, jvenegasperu . <
 jvenegasp...@gmail.com>
 escribió:

 Hola a todos buen dia

>
> Tengo usuarios que hacen insert update delete a tablas a traves de Qgis
> todo funciona ok sin embargo dentro de la tabla tengo un conjunto de
> columnas que se llenan de manera automatica de acuerdo a los campos que
> ingresa el usuario y al producirse la insercion o update se disparan
> trigers after que guardan en otras tablas dependiendo del contenido de
> esos
> campos que el usuario no deberia tocar.
>
> Por el momento lo que estoy haciendo es preparar un archivo de trabajo
> plantilla para qgis y darselo a los usuarios para trabajar en las
> capas de
> trabajo que utiliza, en qgis cada capa se corresponde con una tabla de
> postgres entonces lo que hago es desde la interfaz de qgis ocultar los
> campos que no debe tocar para que al momento de registrar la
> información
> el
> campo no se muestre sin embargo el usuario puede hacer clic derecho
> sobre
> la capa ir a las propiedades y poner visible e incluso editable el
> campo.
> y
> si el usuario modifica esos campos pues toda la automatizacion se va al
> tacho y a veces hasta se cuelga Qgis
>
> Mi consulta es la siguiente es posible darle permisos a un usuario para
> poder efectuar las operaciones de insert update delete pero al mismo
> tiempo
> otorgarle solo visibilidad sobre un conjunto de campos de tal forma de
> tener el siguiente comportamiento:
>
> usuario postgres tiene todos los permisos y puede ver todos los campos
> hace
> select a la tabla 1
>
> select * from tabla1 devuelve por ejemplo 10 campos. todos los campos
> de
> la
> tabla
>
> si se loguea el usuario1 que tiene restricciones para los campos
> entonces
> si hace
>
> select * from tabla1 le devuelve por ejemplo solo 4 campos que se le
> asigno
> que podia ver
>
> campo1,campo2,campo5,campo7 -- Es decir solo los campos que tiene
> permiso
> para ver.
>
> Este usuario igual podria hacer todas las operaciones con la tabla
> pero no
> puede ver los demas campos de tal forma que los campos que no se ven
> tambien se puedan llenar con operaciones pero sin que el usuario que se
> logueo pueda verlos.
>
> Es posible hacer algo asi con postgres? como se pdoria lograr?
>
> Espero haberme podido explicar bien ya que este comportamiento ayudaria
> mucho en trabajo que realizo con QGIS.
>
> Como comente actualmente lo hago ocultando el campo desde la interfaz
> de
> qgis pero esto no es seguro y ademas entre mas campos trae qgis de la
> BD
> mas pesado y lento se hace para 

Re: [MASSMAIL]Re: Permisos para usuario por columnas

2018-02-15 Thread gilberto . castillo

Hola,

Eso existe desde la versión 9.0 por ahí mas o menos, favor revisen la 
documentación,


On 2018-02-15 09:21, Néstor Ramires wrote:

No sabría decirte, aún no he hecho la experiencia, si puedo decirte
que es una de las opciones que se han pensado, podría funcionar bien,
de hecho concretamente ésta tabla de la que hablo tiene 11 campos de
carga manual y control más el que contiene la geometría, el resto de
los datos (se agregan al rededor de 30 campos más) aún no se lo ha
trabajado y es algo por resolver.


En Sun, 11 Feb 2018 05:39:03 -0300, jvenegasperu .
 escribió:

 Nestor si en efecto la vista para mi no es una opcion se hace 
demasiado

lento.

yo solo uso vistas materializadas para mirar desde qgis las vistas 
normales

si que demoran con Qgis.

Pienso que quiza una salida sea tener dos tablas una con solo los 
campos

para el usuario y otra con todo lo necesario y luego con un trigger
insertar en la tabla mas completa que te parece tal vez funcione bien.



El 9 de febrero de 2018, 7:37, Néstor Ramires 


escribió:

Me encontré con la misma situación. Aún no lo resuelvo a nivel de 
permisos
(hay otras prioridades) sin embargo una alternativa que encontramos 
para
visualizar y dejar como editable sólo algunos campos en la consulta 
es la
de crear una vista (con el campo de geometría incluido) como 
contrapartida,
al nemos en mi caso, Qgis funciona bastante más lento (en una tabal 
con

260.000 registros)
En vez de cargar la tabla directamente, se carga la vista como capa
editable.



En Fri, 09 Feb 2018 02:14:57 -0300, jvenegasperu . 


escribió:

Hola a todos buen dia


Tengo usuarios que hacen insert update delete a tablas a traves de 
Qgis

todo funciona ok sin embargo dentro de la tabla tengo un conjunto de
columnas que se llenan de manera automatica de acuerdo a los campos 
que

ingresa el usuario y al producirse la insercion o update se disparan
trigers after que guardan en otras tablas dependiendo del contenido 
de

esos
campos que el usuario no deberia tocar.

Por el momento lo que estoy haciendo es preparar un archivo de 
trabajo
plantilla para qgis y darselo a los usuarios para trabajar en las 
capas de
trabajo que utiliza, en qgis cada capa se corresponde con una tabla 
de
postgres entonces lo que hago es desde la interfaz de qgis ocultar 
los
campos que no debe tocar para que al momento de registrar la 
información

el
campo no se muestre sin embargo el usuario puede hacer clic derecho 
sobre
la capa ir a las propiedades y poner visible e incluso editable el 
campo.

y
si el usuario modifica esos campos pues toda la automatizacion se va 
al

tacho y a veces hasta se cuelga Qgis

Mi consulta es la siguiente es posible darle permisos a un usuario 
para

poder efectuar las operaciones de insert update delete pero al mismo
tiempo
otorgarle solo visibilidad sobre un conjunto de campos de tal forma 
de

tener el siguiente comportamiento:

usuario postgres tiene todos los permisos y puede ver todos los 
campos

hace
select a la tabla 1

select * from tabla1 devuelve por ejemplo 10 campos. todos los 
campos de

la
tabla

si se loguea el usuario1 que tiene restricciones para los campos 
entonces

si hace

select * from tabla1 le devuelve por ejemplo solo 4 campos que se le
asigno
que podia ver

campo1,campo2,campo5,campo7 -- Es decir solo los campos que tiene 
permiso

para ver.

Este usuario igual podria hacer todas las operaciones con la tabla 
pero no

puede ver los demas campos de tal forma que los campos que no se ven
tambien se puedan llenar con operaciones pero sin que el usuario que 
se

logueo pueda verlos.

Es posible hacer algo asi con postgres? como se pdoria lograr?

Espero haberme podido explicar bien ya que este comportamiento 
ayudaria

mucho en trabajo que realizo con QGIS.

Como comente actualmente lo hago ocultando el campo desde la 
interfaz de
qgis pero esto no es seguro y ademas entre mas campos trae qgis de 
la BD

mas pesado y lento se hace para moverse con los datos espaciales.





--
  Ing. Agrimensor Néstor Ramires
  Departamento de Cartografía Digital
  Dirección General de Topografía y Catastro
  Municipalidad de Rosario









Re: Permisos para usuario por columnas

2018-02-15 Thread raul andrez gutierrez alejo
Hola Jose.

si el usuario tiene un usuario de base de datos para el, se puede hacer un
trigger antes del update

IF (current_user='usuario_X') THEN
NEW.campo_no_editable=OLD. .campo_no_editable;
END IF;
return NEW;

así si el usuario "usuario_X" modifica el campo " campo_no_editable ", el
triger coloca los datos viejos.

eso da la tranquilidad que no se modifique los datos, pero aumenta el
trabajo de administración  para mantener actualizado el trigger porque el
usuario puede cambiar o llegar nueva personas que necesiten el mismo
privilegio y si un nuevo usuario llega, el nuevo usuario "usuario_Y" si va
a tener permisos porque el IF no se cumple, o puede cambiar la lógica y
manejar lista blancas.

IF (current_user not in ('postgres','admin')) THEN
NEW.campo_no_editable=OLD. .campo_no_editable;
END IF;
return NEW;




El 15 de febrero de 2018, 9:21, Néstor Ramires 
escribió:

> No sabría decirte, aún no he hecho la experiencia, si puedo decirte que es
> una de las opciones que se han pensado, podría funcionar bien, de hecho
> concretamente ésta tabla de la que hablo tiene 11 campos de carga manual y
> control más el que contiene la geometría, el resto de los datos (se agregan
> al rededor de 30 campos más) aún no se lo ha trabajado y es algo por
> resolver.
>
>
>
> En Sun, 11 Feb 2018 05:39:03 -0300, jvenegasperu . 
> escribió:
>
>  Nestor si en efecto la vista para mi no es una opcion se hace demasiado
>> lento.
>>
>> yo solo uso vistas materializadas para mirar desde qgis las vistas
>> normales
>> si que demoran con Qgis.
>>
>> Pienso que quiza una salida sea tener dos tablas una con solo los campos
>> para el usuario y otra con todo lo necesario y luego con un trigger
>> insertar en la tabla mas completa que te parece tal vez funcione bien.
>>
>>
>>
>> El 9 de febrero de 2018, 7:37, Néstor Ramires 
>> escribió:
>>
>> Me encontré con la misma situación. Aún no lo resuelvo a nivel de permisos
>>> (hay otras prioridades) sin embargo una alternativa que encontramos para
>>> visualizar y dejar como editable sólo algunos campos en la consulta es la
>>> de crear una vista (con el campo de geometría incluido) como
>>> contrapartida,
>>> al nemos en mi caso, Qgis funciona bastante más lento (en una tabal con
>>> 260.000 registros)
>>> En vez de cargar la tabla directamente, se carga la vista como capa
>>> editable.
>>>
>>>
>>>
>>> En Fri, 09 Feb 2018 02:14:57 -0300, jvenegasperu . <
>>> jvenegasp...@gmail.com>
>>> escribió:
>>>
>>> Hola a todos buen dia
>>>

 Tengo usuarios que hacen insert update delete a tablas a traves de Qgis
 todo funciona ok sin embargo dentro de la tabla tengo un conjunto de
 columnas que se llenan de manera automatica de acuerdo a los campos que
 ingresa el usuario y al producirse la insercion o update se disparan
 trigers after que guardan en otras tablas dependiendo del contenido de
 esos
 campos que el usuario no deberia tocar.

 Por el momento lo que estoy haciendo es preparar un archivo de trabajo
 plantilla para qgis y darselo a los usuarios para trabajar en las capas
 de
 trabajo que utiliza, en qgis cada capa se corresponde con una tabla de
 postgres entonces lo que hago es desde la interfaz de qgis ocultar los
 campos que no debe tocar para que al momento de registrar la información
 el
 campo no se muestre sin embargo el usuario puede hacer clic derecho
 sobre
 la capa ir a las propiedades y poner visible e incluso editable el
 campo.
 y
 si el usuario modifica esos campos pues toda la automatizacion se va al
 tacho y a veces hasta se cuelga Qgis

 Mi consulta es la siguiente es posible darle permisos a un usuario para
 poder efectuar las operaciones de insert update delete pero al mismo
 tiempo
 otorgarle solo visibilidad sobre un conjunto de campos de tal forma de
 tener el siguiente comportamiento:

 usuario postgres tiene todos los permisos y puede ver todos los campos
 hace
 select a la tabla 1

 select * from tabla1 devuelve por ejemplo 10 campos. todos los campos de
 la
 tabla

 si se loguea el usuario1 que tiene restricciones para los campos
 entonces
 si hace

 select * from tabla1 le devuelve por ejemplo solo 4 campos que se le
 asigno
 que podia ver

 campo1,campo2,campo5,campo7 -- Es decir solo los campos que tiene
 permiso
 para ver.

 Este usuario igual podria hacer todas las operaciones con la tabla pero
 no
 puede ver los demas campos de tal forma que los campos que no se ven
 tambien se puedan llenar con operaciones pero sin que el usuario que se
 logueo pueda verlos.

 Es posible hacer algo asi con postgres? como se pdoria lograr?

 Espero haberme podido explicar bien ya que este comportamiento ayudaria
 mucho en trabajo que realizo con QGIS.

Re: Permisos para usuario por columnas

2018-02-15 Thread Néstor Ramires

No sabría decirte, aún no he hecho la experiencia, si puedo decirte que es una 
de las opciones que se han pensado, podría funcionar bien, de hecho 
concretamente ésta tabla de la que hablo tiene 11 campos de carga manual y 
control más el que contiene la geometría, el resto de los datos (se agregan al 
rededor de 30 campos más) aún no se lo ha trabajado y es algo por resolver.


En Sun, 11 Feb 2018 05:39:03 -0300, jvenegasperu .  
escribió:


 Nestor si en efecto la vista para mi no es una opcion se hace demasiado
lento.

yo solo uso vistas materializadas para mirar desde qgis las vistas normales
si que demoran con Qgis.

Pienso que quiza una salida sea tener dos tablas una con solo los campos
para el usuario y otra con todo lo necesario y luego con un trigger
insertar en la tabla mas completa que te parece tal vez funcione bien.



El 9 de febrero de 2018, 7:37, Néstor Ramires 
escribió:


Me encontré con la misma situación. Aún no lo resuelvo a nivel de permisos
(hay otras prioridades) sin embargo una alternativa que encontramos para
visualizar y dejar como editable sólo algunos campos en la consulta es la
de crear una vista (con el campo de geometría incluido) como contrapartida,
al nemos en mi caso, Qgis funciona bastante más lento (en una tabal con
260.000 registros)
En vez de cargar la tabla directamente, se carga la vista como capa
editable.



En Fri, 09 Feb 2018 02:14:57 -0300, jvenegasperu . 
escribió:

Hola a todos buen dia


Tengo usuarios que hacen insert update delete a tablas a traves de Qgis
todo funciona ok sin embargo dentro de la tabla tengo un conjunto de
columnas que se llenan de manera automatica de acuerdo a los campos que
ingresa el usuario y al producirse la insercion o update se disparan
trigers after que guardan en otras tablas dependiendo del contenido de
esos
campos que el usuario no deberia tocar.

Por el momento lo que estoy haciendo es preparar un archivo de trabajo
plantilla para qgis y darselo a los usuarios para trabajar en las capas de
trabajo que utiliza, en qgis cada capa se corresponde con una tabla de
postgres entonces lo que hago es desde la interfaz de qgis ocultar los
campos que no debe tocar para que al momento de registrar la información
el
campo no se muestre sin embargo el usuario puede hacer clic derecho sobre
la capa ir a las propiedades y poner visible e incluso editable el campo.
y
si el usuario modifica esos campos pues toda la automatizacion se va al
tacho y a veces hasta se cuelga Qgis

Mi consulta es la siguiente es posible darle permisos a un usuario para
poder efectuar las operaciones de insert update delete pero al mismo
tiempo
otorgarle solo visibilidad sobre un conjunto de campos de tal forma de
tener el siguiente comportamiento:

usuario postgres tiene todos los permisos y puede ver todos los campos
hace
select a la tabla 1

select * from tabla1 devuelve por ejemplo 10 campos. todos los campos de
la
tabla

si se loguea el usuario1 que tiene restricciones para los campos entonces
si hace

select * from tabla1 le devuelve por ejemplo solo 4 campos que se le
asigno
que podia ver

campo1,campo2,campo5,campo7 -- Es decir solo los campos que tiene permiso
para ver.

Este usuario igual podria hacer todas las operaciones con la tabla pero no
puede ver los demas campos de tal forma que los campos que no se ven
tambien se puedan llenar con operaciones pero sin que el usuario que se
logueo pueda verlos.

Es posible hacer algo asi con postgres? como se pdoria lograr?

Espero haberme podido explicar bien ya que este comportamiento ayudaria
mucho en trabajo que realizo con QGIS.

Como comente actualmente lo hago ocultando el campo desde la interfaz de
qgis pero esto no es seguro y ademas entre mas campos trae qgis de la BD
mas pesado y lento se hace para moverse con los datos espaciales.





--
  Ing. Agrimensor Néstor Ramires
  Departamento de Cartografía Digital
  Dirección General de Topografía y Catastro
  Municipalidad de Rosario








--
  Ing. Agrimensor Néstor Ramires
  Departamento de Cartografía Digital
  Dirección General de Topografía y Catastro
  Municipalidad de Rosario



Re: Permisos para usuario por columnas

2018-02-09 Thread Néstor Ramires

Me encontré con la misma situación. Aún no lo resuelvo a nivel de permisos (hay 
otras prioridades) sin embargo una alternativa que encontramos para visualizar 
y dejar como editable sólo algunos campos en la consulta es la de crear una 
vista (con el campo de geometría incluido) como contrapartida, al nemos en mi 
caso, Qgis funciona bastante más lento (en una tabal con 260.000 registros)
En vez de cargar la tabla directamente, se carga la vista como capa editable.


En Fri, 09 Feb 2018 02:14:57 -0300, jvenegasperu .  
escribió:


Hola a todos buen dia

Tengo usuarios que hacen insert update delete a tablas a traves de Qgis
todo funciona ok sin embargo dentro de la tabla tengo un conjunto de
columnas que se llenan de manera automatica de acuerdo a los campos que
ingresa el usuario y al producirse la insercion o update se disparan
trigers after que guardan en otras tablas dependiendo del contenido de esos
campos que el usuario no deberia tocar.

Por el momento lo que estoy haciendo es preparar un archivo de trabajo
plantilla para qgis y darselo a los usuarios para trabajar en las capas de
trabajo que utiliza, en qgis cada capa se corresponde con una tabla de
postgres entonces lo que hago es desde la interfaz de qgis ocultar los
campos que no debe tocar para que al momento de registrar la información el
campo no se muestre sin embargo el usuario puede hacer clic derecho sobre
la capa ir a las propiedades y poner visible e incluso editable el campo. y
si el usuario modifica esos campos pues toda la automatizacion se va al
tacho y a veces hasta se cuelga Qgis

Mi consulta es la siguiente es posible darle permisos a un usuario para
poder efectuar las operaciones de insert update delete pero al mismo tiempo
otorgarle solo visibilidad sobre un conjunto de campos de tal forma de
tener el siguiente comportamiento:

usuario postgres tiene todos los permisos y puede ver todos los campos hace
select a la tabla 1

select * from tabla1 devuelve por ejemplo 10 campos. todos los campos de la
tabla

si se loguea el usuario1 que tiene restricciones para los campos entonces
si hace

select * from tabla1 le devuelve por ejemplo solo 4 campos que se le asigno
que podia ver

campo1,campo2,campo5,campo7 -- Es decir solo los campos que tiene permiso
para ver.

Este usuario igual podria hacer todas las operaciones con la tabla pero no
puede ver los demas campos de tal forma que los campos que no se ven
tambien se puedan llenar con operaciones pero sin que el usuario que se
logueo pueda verlos.

Es posible hacer algo asi con postgres? como se pdoria lograr?

Espero haberme podido explicar bien ya que este comportamiento ayudaria
mucho en trabajo que realizo con QGIS.

Como comente actualmente lo hago ocultando el campo desde la interfaz de
qgis pero esto no es seguro y ademas entre mas campos trae qgis de la BD
mas pesado y lento se hace para moverse con los datos espaciales.





--
  Ing. Agrimensor Néstor Ramires
  Departamento de Cartografía Digital
  Dirección General de Topografía y Catastro
  Municipalidad de Rosario