Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   De usuarios y roles (https://www.clubdelphi.com/foros/showthread.php?t=50406)

dec 18-11-2007 12:25:48

Hola,

Gracias Delphius. :) No creas que lo tuyo es más complicado... más bien yo diría, modestia aparte, que lo mío es muy simple... acaso demasiado. Pero, en fin... de momento ahí vamos. Cualquier cosa que se te ocurra será bienvenida, por supuesto. A ver si pronto puedes echar un vistazo al código fuente de mi invento, siempre que quieras, claro está. :D

Delphius 18-11-2007 21:00:30

Cita:

Empezado por dec (Mensaje 246912)
Hola,

Gracias Delphius. :) No creas que lo tuyo es más complicado... más bien yo diría, modestia aparte, que lo mío es muy simple... acaso demasiado. Pero, en fin... de momento ahí vamos. Cualquier cosa que se te ocurra será bienvenida, por supuesto. A ver si pronto puedes echar un vistazo al código fuente de mi invento, siempre que quieras, claro está. :D

Pues yo me hago lios con mi modelo. El mayor supuesto con el que deseo operar es que: en el contexto del problema existen tendencias de cambios inesperados y no se puede dejar nada al azar. Debe ser lo suficiente flexible como para permitir adaptarse a variadas reglas de asignaciones de permisos, perfiles y situaciones, independientemente del negocio en donde operan. Por si te "pica la espina" lo estaba tratando aquí. Lo tuve que dejar de lado, porque no era obligatorio, pero me gustaría llegar a conseguir algo así. De vez en cuando vuelvo a repasar esta parte para ver si aprendo algo; pero se me queman los cables... algún dia lo lograré. Considero que es una buena opción a contemplar en mi trabajo, pues está entre mis objetivos que el producto sea adaptable a cualquier entorno (me esta saliendo, pero en esa parte da problemas)

En cuanto aprenda bien (o medianamente bien) PHP voy a poder comprender el código fuente. Por ahora "sigo en pañales". Pero no espero las esperanzas de aprenderlo y usarlo, sobre todo después del proyecto que tengo en mano:rolleyes:,... que sería el segundo paso.

Saludos,

dec 18-11-2007 22:32:51

Hola,

Cita:

Empezado por Delphius
En cuanto aprenda bien (o medianamente bien) PHP voy a poder comprender el código fuente. Por ahora "sigo en pañales". Pero no espero las esperanzas de aprenderlo y usarlo, sobre todo después del proyecto que tengo en mano,... que sería el segundo paso.

Ponte a ello, verás que puede llegar a ser divertido. Sobre todo si no has hecho nunca nada para "la web", o, incluso más, si has hecho algo pero siempre "estático", con HTML y demás. PHP te abre unas puertas bien grandes. Montarte un entorno para "jugar" con PHP no es complicado.

Hay distribuciones de lo necesario como pueda ser Xampp, que ponen las cosas bastante sencillas, para empezar. Y entornos de desarrollo como Eclipse PDT y Aptana que quitan el sentido. En fin. Que todo es ponerse. Y te lo digo yo... que casi empiezo, pero, bueno... :D

Delphius 18-11-2007 22:53:34

Cita:

Empezado por dec (Mensaje 246952)
Hola,

Ponte a ello, verás que puede llegar a ser divertido. Sobre todo si no has hecho nunca nada para "la web", o, incluso más, si has hecho algo pero siempre "estático", con HTML y demás. PHP te abre unas puertas bien grandes. Montarte un entorno para "jugar" con PHP no es complicado.

Hay distribuciones de lo necesario como pueda ser Xampp, que ponen las cosas bastante sencillas, para empezar. Y entornos de desarrollo como Eclipse PDT y Aptana que quitan el sentido. En fin. Que todo es ponerse. Y te lo digo yo... que casi empiezo, pero, bueno... :D

Es divertido, de lo poco que he todado lo he notado divertido... mi problema es que hasta no comprender correctamente HTML poco o nada voy a aprovechar PHP (que la lo tengo instalado, en Windows... pero bueno. la cosa es tenerlo:D). Por recomendación tuya ya llevo 2 días descargando Aptana (de a poquito, en lo que la conexión me lo permita)

Saludos,
PD: ¡Porque carajo no me llega la antena WiFi de una c.... vez! ¡Que quiero meterme en la internet gratis que promueve el gobierno!

dec 18-11-2007 23:36:38

Hola,

Hombre... te comprendo perfectamente. Todavía puedo decir que la mayor parte de mi "vida de internauta" la he hecho con una conexión a Internet para nada parecida a la que tengo ahora, sin la que ya no sabría vivir... pero, te diré algo: Aptana merece la pena, o esa es mi opinión. Así que... a darle duro. Más de una ISO y más de dos me he descargado yo con mi módem... ¡ya lo creo! Semanas enteras para bajar algún SUSE... aunque tú tal vez podrías recurrir a algún amigo, o a algún "ciber café"... ;)

walito 19-11-2007 22:49:07

Cita:

Empezado por dec (Mensaje 246700)
Hola,

Todo ayuda Delphius. ¿Sabes qué pasa? Que al cabo he "conseguido" (todavía lo pongo en duda) un sistema de privilegios, de "roles", muy, pero, que, muy sencillo... vamos, a mí me lo parece, y, desde luego, comparándolo con el de WordPress (que es un sistema similar al que traigo entre manos, si bien el mío es mucho más humilde), digo, en WordPress es un asunto bastante complejo, o a mí me lo parece.

Sin embargo, voy a mostrar la "burrada" que he preparado para asignar diferentes permisos a diferentes usuarios. A continuación el método "InitializeUserRoles()" de una clase "Roles":

Código PHP:

  private function InitializeUserRoles(){
    
// 10 = Admin user
    
$this->userRoles[10][ROLES_CAP_MANAGE_SITE] = true;
    
$this->userRoles[10][ROLES_CAP_MANAGE_LINKS] = true;    
    
$this->userRoles[10][ROLES_CAP_MANAGE_TERMS] = true;  
    
$this->userRoles[10][ROLES_CAP_MANAGE_POSTS] = true;   
    
$this->userRoles[10][ROLES_CAP_MANAGE_USERS] = true;    
    
$this->userRoles[10][ROLES_CAP_MANAGE_THEMES] = true;
    
$this->userRoles[10][ROLES_CAP_MANAGE_IMPORT] = true;    
    
$this->userRoles[10][ROLES_CAP_MANAGE_EXPORT] = true;    
    
$this->userRoles[10][ROLES_CAP_MANAGE_OPTIONS] = true;
    
$this->userRoles[10][ROLES_CAP_MANAGE_PROFILE] = true;      
    
$this->userRoles[10][ROLES_CAP_MANAGE_COMMENTS] = true;
    
// 9 = Editor user
    
$this->userRoles[9][ROLES_CAP_MANAGE_SITE] = true;
    
$this->userRoles[9][ROLES_CAP_MANAGE_LINKS] = true;    
    
$this->userRoles[9][ROLES_CAP_MANAGE_TERMS] = true
    
$this->userRoles[9][ROLES_CAP_MANAGE_POSTS] = true;     
    
$this->userRoles[9][ROLES_CAP_MANAGE_PROFILE] = true;          
    
$this->userRoles[9][ROLES_CAP_MANAGE_COMMENTS] = true;
    
// 8 = Author user
    
$this->userRoles[8][ROLES_CAP_MANAGE_SITE] = true;    
    
$this->userRoles[8][ROLES_CAP_MANAGE_POSTS] = true;  
    
$this->userRoles[8][ROLES_CAP_MANAGE_PROFILE] = true;    
    return 
true;
  } 

Eso, que estoy seguro de que puede mejorarse (pero, ahora no estamos viendo eso), se resume en "El usuario con nivel 10 puede administrar el sitio", "El usuario con nivel 10 puede administrar enlaces", etc., etc. Luego, como puede verse, según bajamos el nivel del usuario este puede hacer menos cosas. Eso sería una especie de "tabla de capacidadades según el nivel de cada usuario".

Hay que decir que la clase "Roles" sirve a una propiedad de la clase "User". La clase "User" cuenta con una propiedad (variable, miembro) del tipo "Roles". Cuando se instancia la clase "User" se asigna a la variable "userlevel" (del tipo "Roles") un determinado nivel y, la propia clase "User" cuenta con un método "Can()" que lo que hace es llamar a este otro de la clase "Roles":

Código PHP:

  public function UserCan($capability){    
    if(isset(
$this->userRoles[$this->userLevel][$capability])){
      return 
$this->userRoles[$this->userLevel][$capability];  
    }else{
      return 
false
    }
  } 

Que, como puede verse, viene a comprobar si el usuario del nivel que sea, puede realizar una determinada tarea, tiene la capacidad de realizarla. Básicamente en eso se resume todo... (!). En la base de datos hay una tabla "users" y otra tabla "usersmeta", que están relacionadas. A cada usuario le corresponde un nivel, que se guarda en "usersmeta". Y eso es todo... No hay más... ¡y parece funcionar!

Pero,... francamente, no entiendo entonces a qué tanto "lío" en WordPress con los permisos... y, como sé perfectamente que WordPress es mucho WordPress, y que mi sistema no le llega a la altura de los zapatos... no tengo sino pensar que en algo estoy metiendo la pata, que lo que he hecho no está bien hecho, porque, ¡no puede haberme resultado tan sencillo, ni, en general, resultar tan sencillo como parece y es!

Pero, para terminar, aquí aplica aquello de "Eppurse muove"... porque, con todas las dudas que hay todavía por ahí rondando, el caso es que parece que el puñetero sistema funciona...

En todo caso, y, en lo que respecta a esto último, tal vez debería hacer lo que ha recomendado ArdiIIa, esto es, mirar algún otro programa similar y estudiar su funcionamiento. Y a lo mejor para lo que planteo desde un principio tampoco estaría mal que hiciera esto, pero, bueno, qué leches, quería comentar aquí el asunto a ver qué os parecía a vosotros. :) :D

Dec, la mejor opcion es esa que tu comentas ahi, yo hice algo parecido pero en delphi donde formas un arbol con los permios.
Yo lo hice asi:
[modulo]->[submodulo]->[permisos]->[agregas, editar, borrar, etc]

Yo lo cargo de la sig forma:
[nombreModulo][listousuarios][permiso][listar]
[nombreModulo][listousuarios][permiso][imprimir]
[nombreModulo][listousuarios][permiso][ver]

[nombreModulo][agregaeditausuarios][permiso][editar]

Despues con una funcion le paso los 2 primeros parametros, y en el 3ro pregunto si ese permiso esta seteado

GetPermisos('nombreModulo', 'agregaeditausuarios', 'agregar'): boolean

entonces siempre que cargues la pagina en php antes de todo segun tus opcion verificar si tiene o no esos permisos, en caso de que no tenga permisos, el boton o lo que fuese lo desactivas.

Es una idea que me surgio y quedo andando a la perfeccion.

Saludos

walito 19-11-2007 22:53:48

Dec, cualquier cosa que necesites de PHP avisame por este medio, tengo bastante experiencia en php.

Asi ya quedan mis respuestas en el foro para que alguien las use :D

dec 19-11-2007 23:42:10

Hola,

Gracias Walito. Ahí andamos. :)

ArdiIIa 21-11-2007 17:48:29

Cita:

Empezado por dec (Mensaje 246737)
De hecho, mirando en WordPress (referencia obligada del sistema de que tratamos)

Cita:

Empezado por Delphius (Mensaje 246898)
Me he bajado WordPress (una versión que dicen que es en castellano)
Saludos,

Wordpress: vulnerabilidad en la autenticación por cookies

Visto aquí

dec 21-11-2007 17:52:10

Hola,

Sí; leí sobre el asunto ayer. Se ve que visitamos Kriptópolis. :)


La franja horaria es GMT +2. Ahora son las 11:26:00.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi