[Gvsig_desarrolladores] Driver modificado
Francisco José Peñarrubia
fran.penarrubia en iver.es
Jue Abr 12 18:53:06 CEST 2007
Hola.
Veo que es un caso un tanto especial.
Yo te recomendaria que la gestión del acceso a tablas se hiciera a nivel
de base de datos, que para eso están los roles y tal y cual.
Ahora bien, si no puede ser, por lo que sea....
Yo intentaría hacer lo que dices: Heredar una clase de PostGisDriver y
reimplementar los métodos de isWritable Y getName().
Si implementas getName() y devuelves otra cadena (por ejemplo
"PostGisDriver que miente sobre los permisos de tablas"), te debería
aparecer como una opción más en el cuadro de diálogo, y ahí ya tienes el
control para añadir un método setWritable() o lo que quieras. Ojo, es
solo una idea que no he probado, y que seguro que tiene muchos
inconvenientes.
Si pudieras definir varios roles en la base de datos, lo tendrías más facil:
1.- Te autentificas en tu base de datos con usuario y contraseña, o como
anónimo.
2.- Asignas un rol en función de eso.
3.- Accedes a la base de datos con ese rol.
4.- Faltaría modificar PostGisDriver para que isWritable() lo devuelva bien.
Bueno, ya sabes, los toros desde la barrera se ven muy bien. Perdona si
no he sido de mucha ayuda. Suerte.
Vidal Toboso escribió:
> Hola Francisco
> El problema es que yo no quiero ni puedo controlar los permisos a nivel
> de fichero o de tabla. Los permisos los controla un servicio web de
> autenticación que trata cada fuente de datos como un objeto al que le
> asocia diferentes permisos según sea el usuario. Así, por ejemplo, un
> usuario conectado a nuestra bbdd puede no tener permiso para ver ciertas
> tablas, permiso sólo de lectura sobre otras y permiso de escritura y
> lectura sobre las demás, y para todas las conexiones va a utilizar el
> mismo driver (con el mismo usuario y clave de bbdd), que tendrá
> isWritable()=true. Es decir, isWritable() debe ser true, porque podrá
> haber usarios que sí puedan modificar la fuente.
> Se me ocurre ahora mismo hacer otro driver, clon del actual, pero con
> isWritable()=false siempre, y dependiendo de los permisos cargar uno u
> otro, pero no lo veo muy robusto, no sé.
> Así, partiendo del hecho de que voy a tener a priori todos los permisos
> sobre el fichero o sobre la tabla, es con código con lo que tengo que
> controlar que el usuario en cuestión sólo pueda realizar las funciones
> que el servicio web de autenticación le deje, y aquí es donde estoy
> (ahora mismo estoy creando una extensión nueva de StopEditing, en vez de
> la de StartEditing que comentamos anteriormente, para controlar ahí si
> el usuario puede modificar la fuente o no, no haga StartEditing porque
> así doy la opción de modificar y guardar en otro formato o en otra
> fuente).
>
> Gracias y un saludo,
>
> Vidal Toboso
>
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre : fran.penarrubia.vcf
Tipo : text/x-vcard
Tamaño : 269 bytes
Descripción: no disponible
Url : http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20070412/a02e9b75/fran.penarrubia.vcf
Más información sobre la lista de distribución gvSIG_desarrolladores