Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » Drupal »

restringir acceso a contenidos NO por roles

Estas en el tema de restringir acceso a contenidos NO por roles en el foro de Drupal en Foros del Web. Buenas tardes a todos. Me he metido en un proyecto por primera vez con Drupal y no sé si va a ser posible hacerlo. Os ...
  #1 (permalink)  
Antiguo 09/08/2013, 03:32
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 11 años, 9 meses
Puntos: 47
restringir acceso a contenidos NO por roles

Buenas tardes a todos. Me he metido en un proyecto por primera vez con Drupal y no sé si va a ser posible hacerlo. Os cuento a ver si me podéis sacar un poco de este atolladero:

Tengo que hacer una web para una gestoría. Dicha gestoría quiere que cada cliente suyo entre a la web con un nombre y contraseña de usuario y que solo tenga acceso a los contenidos del "cliente" a quien pertenecen. (Por ejemplo, soy jose, trabajo para Gymnasio Jose, y al entrar en la web de la gestoría solo tengo acceso a los contenidos hechos para Gymnasio Jose)

Por ejemplo con Content Access solo puedes trabajar con roles y claro, los clientes son muchos y hacer un rol por cada cliente y darle premisos en función del rol sería una locura.

¿No se podría hacer por ejemplo, una taxonomía de "código cliente" e incluir tanto a los usuarios como a los contenidos un campo "código cliente" relacionado a esa taxonomía, para que así, cada usuario solo pueda ver los contenidos que tengan el campo "codigo cliente" coincidentes con el suyo?

No sé si me he explicado. Supongo que posible es, pero no tengo ni idea de cómo hacerlo.

Si hay otra manera de hacerlo sería perfecto también.

Muchas gracias por haberos tomado el tiempo de leerme.

Saludos
  #2 (permalink)  
Antiguo 09/08/2013, 04:56
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 5 meses
Puntos: 265
Respuesta: restringir acceso a contenidos NO por roles

Mira, la propuesta de taxonomía que mencionas es bastante difícil de mantener la verdad. No te la recomiendo.

Lo que se me ocurrió es que podés crear un campo en el perfil del usuario que se vea en el proceso de registro, y haga referencia al cliente con el que trabajarán.

Este módulo te amplia las posibilidades de Profile: https://drupal.org/project/profile2
En todo caso podés agregar un campo en el perfil de tipo "nodereference" (con este modulo https://drupal.org/project/references) y permitir al usuario, al registrarse, elegir su cliente. Apartir de ahi ya podés hacer vistas filtrando por el cliente del usuario.

Espero que haya sido claro.

Saludos.
  #3 (permalink)  
Antiguo 09/08/2013, 05:23
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 11 años, 9 meses
Puntos: 47
Respuesta: restringir acceso a contenidos NO por roles

Hola Mario Muchas gracias por tu rápida respuesta.

Sí, he entendido lo que dices. A ver si me da tiempo a comprobarlo hoy a ver qué tal.

De todas formas, hay una duda que me trae de cabeza todos estos días con este tema y con lo de usar la vistas como me dices. Te cuento.

Con las vistas, puedo realizar peticiones a la base de datos y filtrarlas, (en este caso sería con el campo "cliente") y así al usuario se le filtra el contenido y la vista solo le muestro lo que pertenezca a su campo "cliente".

Pero mi duda es, de esta manera no restringes el acceso al nodo ¿verdad? vamos, que si escribes la url en el navegador directamente, sin pasar por la vista que realiza el filtro, Drupal mostrará el nodo al usuario aunque éste no sea de ese cliente ¿no?

Por ejemplo con Content Access si podrías restringir el acceso por URL, pero solo por medio de Roles, pero hacer lo mismo por medio de ese campo "cliente" ¿cómo se haría?

Muchísimas gracias una vez más.


Saludos
  #4 (permalink)  
Antiguo 09/08/2013, 06:47
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 5 meses
Puntos: 265
Respuesta: restringir acceso a contenidos NO por roles

Bueno, sinceramente no se si hay un módulo para eso.
Yo siempre intento minimizar la instalación de módulos para funcionalidades. Lo que me decís lo podrías hacer perfectamente dentro del node.tpl.php.

Primero deberías crear un tpl de tu tipo de contenido.
Luego debes comprobar dentro de ese fichero php si el usuario logueado tiene permisos para ver ese contenido.
En caso de que no lo tenga, redirigis a la portada o simplemente usas el drupal_not_found().

Está claro que hay que tener nociones de programación para hacer esto, no se si las tengas, pero así es como yo lo haría.

Saludos.
  #5 (permalink)  
Antiguo 09/08/2013, 09:42
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 11 años, 9 meses
Puntos: 47
Respuesta: restringir acceso a contenidos NO por roles

Algo sé de PHP y lo que dices así de primeras no parece complicado. Sobre todo ya sé por dónde empezar y me has dado esperanzas de que puedo hacerlo.

Entiendo que no es más que hacer un condicional de que si el campo $cliente del usuario es igual al campo $cliente del nodo le remita a la portada de lo contrario a drupal_not_found() como dices.

Voy a investigar cómo se hace.

Muchísimas,muchísimas gracias una vez más. Voy a ver qué tal se me da.

Saludos!!
  #6 (permalink)  
Antiguo 28/04/2014, 01:55
 
Fecha de Ingreso: abril-2014
Mensajes: 1
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: restringir acceso a contenidos NO por roles

Quizás sea ya algo tarde, pero por si alguien se encuentra con el mismo problema, yo hace tiempo me vi en las mismas para otro cliente, y tras mucho darle vueltas encontré la solución.
Aquí tienen el enlace:

[URL="http://jmsanchezleon.es/cms/drupal/control-de-acceso-drupal-7-rules/"]http://jmsanchezleon.es/cms/drupal/control-de-acceso-drupal-7-rules/[/URL]

Etiquetas: contenidos, nombre, restringir, roles, usuario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:01.