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

Añadir permisos a paginas personales

Estas en el tema de Añadir permisos a paginas personales en el foro de Drupal en Foros del Web. Hola, he programado unas paginas en php para realizar unas tareas en Drupal 5 (digamos que es algo especifico de los usuarios finales de la ...
  #1 (permalink)  
Antiguo 31/07/2012, 04:00
 
Fecha de Ingreso: junio-2012
Mensajes: 13
Antigüedad: 12 años, 5 meses
Puntos: 0
Añadir permisos a paginas personales

Hola, he programado unas paginas en php para realizar unas tareas en Drupal 5 (digamos que es algo especifico de los usuarios finales de la pagina, gestionar unos cobros etc.)

Mi problema es, que las paginas, están "ocultas" según usuarios, para acceder desde menus pero si se introduce la url directamente en el navegador, me permite entrar a cualquier pagina.

Me gustaría incluir en cada una de ellas, una verificación de usuarios para que redirigía automáticamente a la pagina de acceso denegado de drupal.
En el caso de ser un admin, permita entrar en esas paginas.

Agradecer de antemano vuestra ayuda.
  #2 (permalink)  
Antiguo 31/07/2012, 04:28
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Añadir permisos a paginas personales

Las páginas las hiciste vos con un modulo, o son un tipo de contenido especifico?

Para drupal 5 encontre este modulo, la verdad no se si funcione

http://drupal.org/project/simple_access

En caso de que las paginas las hayas hecho vos, es mas facil asignar el permiso si usaste el hook_menu(). Pero bueno no se como lo hayas hecho.

Saludos.
  #3 (permalink)  
Antiguo 31/07/2012, 04:38
 
Fecha de Ingreso: junio-2012
Mensajes: 13
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Añadir permisos a paginas personales

Si, las paginas son hechas por mi, es código php creado íntegramente, el caso esque no se como ponerle en el código que verifique los usuarios y si no, redirija a la pagina de acceso denegado.

No he trabajado nunca antes con Drupal y estoy perdidisimo! jejej
Una mini guia rapida me ayudaria muchisimo, gracias
  #4 (permalink)  
Antiguo 31/07/2012, 04:46
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Añadir permisos a paginas personales

Lamento no poder hacerte una miniguia, hendrikjimmy.

Usaste la api de Drupal para crear las paginas? Si no lo que debes hacer es integrar el api dentro de tu .PHP . Te dejo un enlace que te puede servir de guia:

http://drupal.org/node/260181

Saludos.
  #5 (permalink)  
Antiguo 31/07/2012, 10:36
 
Fecha de Ingreso: junio-2012
Mensajes: 13
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Añadir permisos a paginas personales

He estado probando lo que me has comentado MarioAraque, pero no he sabido resolver el problema.

Tengo en el servidor una carpeta con varios archivos .php y a esos archivos quiero meterle la seguridad de Drupal 5, es decir, que Drupal controle el acceso a esos archivos, si el usuario logueado es admin y de lo contrario que reenvíe a la pagina el usuario no tiene permisos suficientes.

los php que dispongo son exclusivamente codigo generado por mi, es como si fuese

<?php
echo "Hola";
?>

pero en vez del hola, tendria otras varias cosas.
Por lo que he estado leyendo y Mario me ha comentado antes, he de integrar la API de seguridad, pero no se como hacerlo.
Alguien conoce o sabe de algún enlace en el que medio lo expliquen?
  #6 (permalink)  
Antiguo 31/07/2012, 10:43
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Añadir permisos a paginas personales

El enlace que te puse arriba funciona perfectamente!

Tenes que entrar aca: http://drupal.org/node/260181

Un require_once y luego una funcion de Drupal, cuanta mas facilidad queres?

Tenes que hacer esto:

Crear los ficheros .php en la misma carpeta raiz que en donde tenes tu Drupal.
Hacer lo que dice el enlace de arriba.
Usas la api de Drupal sin problemas....

No entiendo por que te cerras en no leer el enlace que te pase, son dos lineas de codigo de php, y luego meterte a usar la api de Drupal, que dificultad ves en eso? Suponiendo que tenes conocimientos de php (que decis tenerlos).

Saludos.
  #7 (permalink)  
Antiguo 01/08/2012, 00:45
 
Fecha de Ingreso: junio-2012
Mensajes: 13
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Añadir permisos a paginas personales

Lo hice como indica, pero no se muestra nada del contenido. Da igual si estas logueado, si no... todo blanco!
  #8 (permalink)  
Antiguo 01/08/2012, 00:51
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Añadir permisos a paginas personales

Entonces seguro que tenes un error de PHP y no te muestra la pantalla.
Te voy a poner el codigo aca porque la verdad estoy seguro que ni has leido el enlace que te deje:

Código PHP:
Ver original
  1. <?php
  2. require_once './includes/bootstrap.inc'; // assuming your script is in the same folder as Drupal's index.php
  3. drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); // you now have access to all Drupal functionality
  4. ?>

Fijate que dice "Asimiendo que tu script este en la misma carpeta que el index.php de Drupal". Si no es asi, entonces no te va a funcionar. Tendras que hacer un chdir o directamente mover el fichero ahi y listo. Es tan facil como eso!!
Y si te sigue sin funcionar, entra al fichero index.php de tu Drupal y mira como hace esos requires, porque al final Drupal funciona asi, hace el require_once, luego el drupal_bootstrap y listo, pinta la pantalla y el footer....no hay mas que pedir. Copias eso y lo tenes.


Saludos.
  #9 (permalink)  
Antiguo 01/08/2012, 01:16
 
Fecha de Ingreso: junio-2012
Mensajes: 13
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Añadir permisos a paginas personales

Me tomas por idiota (perdon por la expresion) pero he probado y leido todo el conteido del enlace que me pasaste. y el resultado es blanco como te indico.
he probado con las rutas, se como funcionan los ./ y ../ y demas.....

no es que no sepa php, es que no se como funciona drupal!

voy a mirar el index como m indicas a ver que encuentro y a seguir probando cosillas

pd: no te irrites, que sabes q en programación un solo caracter te hace fallar miles de lineas de codigo buenas!!!!! y mas en un lenguaje que no puedes compilar como java, c#... para comprobar algun error!!!!!
  #10 (permalink)  
Antiguo 01/08/2012, 01:26
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Añadir permisos a paginas personales

Como te dije, mira el index.php de tu Drupal y mira como hace el require_once y la llamada al bootstrap, y pone el fichero con tu script en la misma carpeta que tu index y copia y pega el codigo. Si te tira una pantalla en blanco lo probas en local a ver que es.

No hay mas alternativas, y no es que me irrite, es que es increible como la gente quiere tener todo en bandeja de plata hecho, cuando en realidad yo te lo estoy dando! No hay mejor respuesta que ese enlace o, directamente, copiar lo que hace Drupal (que te va a funcionar si o si, porque ellos fueron los que lo programaron).

Saludos.
  #11 (permalink)  
Antiguo 01/08/2012, 01:40
 
Fecha de Ingreso: junio-2012
Mensajes: 13
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Añadir permisos a paginas personales

Bueno, agradecer tu constancia y paciencia, ya soy capaz de sacar el uid del usuario!
  #12 (permalink)  
Antiguo 01/08/2012, 01:43
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Añadir permisos a paginas personales

No te preocupes. La funcion de la api user_load($uid) te devuelve la informacion del usuario, incluido sus roles, entonces apartir de ahi filtras y podes hacer lo que vos queres.
El uid del admin siempre es el 1 (esta claro que si creas un rol admin tendra otro id, me refiero al usuario root), y si es usuario anonimo es 0. Si te hace falta tenes la variable global $user que te devuelve la info del usuario logueado (no se si incluye el rol).

Saludos.
  #13 (permalink)  
Antiguo 01/08/2012, 02:29
 
Fecha de Ingreso: junio-2012
Mensajes: 13
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Añadir permisos a paginas personales

Todo funciona bien en la carpeta raiz donde esta drupal instalado

estoy haciendo pruebas, ya que mi contenido lo tengo organizado dentro de una carpeta del directorio raiz, llamemosla "a" y dentro de esa carpeta el fichero con el que estoy haciendo pruebas

el path es /var/www/vhosts/xxxxxxxxxxxxxx.es/httpdocs

el codigo que estoy probando es el siguiente, pero no es capaz de obtener los datos del usuario logueado.

ese mismo codigo, quitando la linea del chdir, en la carpeta raiz, obtiene perfectamente los datos del usuario y me imprimiendo todos los datos.

chdir('/var/www/vhosts/xxxxxxxxxxxxxx.es/httpdocs');
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
user_load($uid);
global $user;
$user->uid;
print_r($user);

no se como capturar los datos si mi archivo esta dentro de una carpeta en el raiz!!
  #14 (permalink)  
Antiguo 01/08/2012, 02:54
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Añadir permisos a paginas personales

No va a ir, porque el chdir lo tenes que hacer a la raiz de tu Drupal, no a donde esta tu fichero, de hecho tu fichero esta en esa carpeta donde hacer el chdir..............es decir, el chdir te manda al mismo lugar donde estas ahora!

No se donde tengas instalado tu Drupal, pero tenes que irte ahi con el chdir, y el include deberia funcionarte.

Por otro lado, no hagas user_load ($uid); si no lo tenes instanciado, ni hagas $user->uid sin un echo antes...

Saludos.
  #15 (permalink)  
Antiguo 01/08/2012, 03:15
 
Fecha de Ingreso: junio-2012
Mensajes: 13
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Añadir permisos a paginas personales

A ver, en la carpeta raiz de mi dominio, donde tengo instaldo drupal, donde esta el index, he realizado un echo getcwd()
y el resultado ha sido /var/www/vhosts/MyDominio.es/httpdocs

en un archivo de prueba, en el directorio raiz, he probado este codigo
<?php
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
print_r($user);
?>

El cual me indica el usuario logueado si esq lo esta y si no, me saca anonimo...

bien, ahora dentro del raiz, tengo la carpeta "a" y dentro de la carpeta un archivo con siguiente codigo

<?php
chdir('/var/www/vhosts/MyDominio.es/httpdocs');
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
print_r($user);
?>

y el resultado es siempre un usuario anonimo, este logueado o no un usuario

yo creo que lo estoy haciendo bien, es mas si el chdir no lo indicara bien, no m mostraria datos de la variable $user, aunque son anonimos como si nadie estuviese logueado

ahora bien, yo creo que a lo mejor hay que indicarle a drupal, que esa carpeta "a" es parte de su sitema. Aunque hablo de la ignorancia de saber como funciona drupal!!

pd: muchas gracias por tu ayuda, la verdad esque hay muy poca info y me estas ayudando bastante.
  #16 (permalink)  
Antiguo 01/08/2012, 03:23
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Añadir permisos a paginas personales

Y si probas hacer un chdir('../) ?

luego de hacer ese chdir fijate donde estas ubicado dentro de tu carpeta con getcwd(), ya esto tiene poco q ver con Drupal :(
  #17 (permalink)  
Antiguo 01/08/2012, 03:34
 
Fecha de Ingreso: junio-2012
Mensajes: 13
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Añadir permisos a paginas personales

Si funciona perfectamente, este codigo
<?php
chdir("../");
echo getcwd();
echo "<br>";
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
//global $user;
print_r($user);
?>

me obtiene

/var/www/vhosts/MyDominio.es/httpdocs
stdClass Object ( [uid] => 0 [hostname] =>xxx.xxx.xxx.xxx [roles] => Array ( [1] => anonymous user ) [session] => [cache] => 0 )

Mientras, el mismo codigo sin la linea del chdir lo ejecuto en la raiz me da

/var/www/vhosts/MyDominio.es/httpdocs
stdClass Object ( [uid] => 281 [name] => ags [pass] => 28d5c02fa836eaede52cc9b60bec9f07 [mail] => [email protected] [mode] => 0 [sort] => 0 [threshold] => 0 [theme] => [signature] => [created] => 1343716900 [access] => 1343813148 [login] => 1343808908 [status] => 1 [timezone] => 3600 [language] => es [picture] => [init] => [data] => a:1:{s:18:"admin_compact_mode";b:1;} [sid] => m7621slb9jrnfoaqkheaerct84 [hostname] => 212.79.145.133 [timestamp] => 1343813148 [cache] => 0 [session] => [admin_compact_mode] => 1 [roles] => Array ( [2] => authenticated user [3] => editor [7] => admin ) )

el chdir, funciona bien! creo yo

saludos
  #18 (permalink)  
Antiguo 01/08/2012, 03:37
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Añadir permisos a paginas personales

Descomenta la linea global $user; no se como te funciona si estas haciendo un print_r() de una variable que no esta definida!

Aca tenes un mejor manual, de todos modos Drupal lo tenes bien instanciado en tu fichero ahora:

http://www.twohard.com/blog/bootsrapping-drupal

Saludos.
  #19 (permalink)  
Antiguo 01/08/2012, 04:03
 
Fecha de Ingreso: junio-2012
Mensajes: 13
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Añadir permisos a paginas personales

Dios q rabia m da, que lo este haciendo bien y no saber el por q falla... lo de la global comentada ha sido un error al escribirlo aqui, pero a la hora de ejecutarlo no la tenia comentada.

muchas gracias por tu ayuda, intentare averiguar el porque m muestra el usuario como anonimo estando logueado.

un saludo
  #20 (permalink)  
Antiguo 01/08/2012, 12:24
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: Añadir permisos a paginas personales

Cita:
Iniciado por hendrikjimmy Ver Mensaje
Si funciona perfectamente, este codigo
<?php
chdir("../");
echo getcwd();
echo "<br>";
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
//global $user;
print_r($user);
?>

me obtiene

/var/www/vhosts/MyDominio.es/httpdocs
stdClass Object ( [uid] => 0 [hostname] =>xxx.xxx.xxx.xxx [roles] => Array ( [1] => anonymous user ) [session] => [cache] => 0 )

Mientras, el mismo codigo sin la linea del chdir lo ejecuto en la raiz me da

/var/www/vhosts/MyDominio.es/httpdocs
stdClass Object ( [uid] => 281 [name] => ags [pass] => 28d5c02fa836eaede52cc9b60bec9f07 [mail] => [email protected] [mode] => 0 [sort] => 0 [threshold] => 0 [theme] => [signature] => [created] => 1343716900 [access] => 1343813148 [login] => 1343808908 [status] => 1 [timezone] => 3600 [language] => es [picture] => [init] => [data] => a:1:{s:18:"admin_compact_mode";b:1;} [sid] => m7621slb9jrnfoaqkheaerct84 [hostname] => 212.79.145.133 [timestamp] => 1343813148 [cache] => 0 [session] => [admin_compact_mode] => 1 [roles] => Array ( [2] => authenticated user [3] => editor [7] => admin ) )

el chdir, funciona bien! creo yo

saludos

El primer caso estas dentro de una carpeta por eso el acceso a la session "no se expande" debes indicarle a drupal que sea accesible en todo el dominio. Para eso vas a settings.php y editas $cookie_domain = 'TUDOMINIO';

Por cierto, no hace falta que llames a todo el core solo para manejar los usuarios, solo con llamar a drupal_bootstrap(DRUPAL_BOOTSTRAP_SESSION); es suficiente.

Código PHP:
Ver original
  1. chdir($_SERVER["DOCUMENT_ROOT"]);
  2. require_once './includes/bootstrap.inc';
  3. drupal_bootstrap(DRUPAL_BOOTSTRAP_SESSION);
  4.  
  5. global $user;
  6. var_dump($user);
__________________
Drupal Argentina

Última edición por NUCKLEAR; 01/08/2012 a las 12:35 Razón: Ortografía

Etiquetas: permisos, personales, php
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 07:37.