Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-03-2012
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
Ayuda con diseño de Tablas de Permisos Para usuarios

hola amigos del foro, despues de un rato regreso con ustedes para plantarles mi problematica.

resulta que tengo que diseñar la tabla de permisos para usuario y de paso haber si me pueden echar una manita ejemplo.


Administrador:

permisos para:

* insertar
* modificar
* eliminar
* impresion


Usuario 1:

permisos:

* insertar
* modificar

permisos 2:

* eliminar
* impresion

tienen alguna sugerencia para diseñar esto.

ahora bien como le haria para validar los permisos que tiene cada usuario?, perdon pero es la primera aplicacion que hago de este tipo anteriormente todo se dejaba a al base de datos que por cierto es sqlserver 2000. de antemano muchas gracias.

o alguien podria darme un ejemplo de roles y permisos por favor;

no me preocupa la activacion o desactivacion de los botones.

Última edición por microbiano fecha: 29-03-2012 a las 07:22:24. Razón: complementarlo
Responder Con Cita
  #2  
Antiguo 29-03-2012
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 22
José Luis Garcí Va camino a la fama
Hola microbiano, te pongo como lo solucione yo, para la tabla usuarios, encripto la clave de acceso, pero no el ususario y el nivel de usuario (parte fundamental de mi sistema).

Cuando carga el usuario en el acceso, carga una variable el nivel de usuario, luego en el action list, tengo una funcion que carga los form comprobando si tienes nivel de usuario suficiente, en tu caso si lo quieres puedes usarlo, directamente , en las cationes o directamente en los onclick de los botones y la propiedad tag, basta con un simple
Código Delphi [-]
if varINivelUsuario >=Button.Tag then
....(codigo a evaluar)
end else Showmmesage('No tiene el nivel necesario, para ejecutar este apartado');

Te comento que en el tag uso niveles del 0 al 9
donde:
0 es invitado, (no necesita clave)
1-5 (Básico)
6-7 (para usuario de alto permiso)
8 (supervisor)
9 (pide nuevamente la clave del usuario, normalmente lo uso en apartador que necesitan un nivel de usuari superior a 6)

Espero te sea util.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"

Última edición por José Luis Garcí fecha: 29-03-2012 a las 08:50:28.
Responder Con Cita
  #3  
Antiguo 29-03-2012
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 22
José Luis Garcí Va camino a la fama
Se me ocurre que tambien puedes crear botones (partiendo del que uses, con tres o Seis nuevas propiedades), como idea te propondria las siguientes propiedades:

NivelUsuario: tipo integer;
Clave: Tipo String
UsarClave: Tipo Boolean
---------------------------(Más complejo)
UsarClaveusuario: Tipo Boolean (te permite usar la clave de usuario)
Datasource: TdataSource
Field: Tfield (para el campo de la base de datos, supuestamente Usuarios, campo ClavedeAcceso)
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #4  
Antiguo 30-03-2012
carlo_acp carlo_acp is offline
Miembro
 
Registrado: may 2006
Posts: 26
Poder: 0
carlo_acp Va por buen camino
Me parece muy buena la respuesta, yo le valido desde el OnShow del form, según los permisos que tenga, le inhabilito el botón relacionado a la operación, es decir si
no tiene permiso para editar, btnEditar.enabled:= false, asi sucesivamente.

Saludos
Responder Con Cita
  #5  
Antiguo 31-03-2012
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
amigos seria mucho pedir un ejemplo simple para darme una idea de como se manejarian los menus con el TActions List y los permisos de antemano muchas gracias
Responder Con Cita
  #6  
Antiguo 31-03-2012
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 22
José Luis Garcí Va camino a la fama
Creamos un nuevo projecto, ponemos de la pestaña Standard 1 edit,1 ActionList, 1 MainMenu, 3 Botones,
de la pestaña additional ponemos un StaticText y de la pestaña win32 un Statusbar, quedaria más o menos así:



Ponemos el StaticText el autosize en false y ponemos el siguiente texto

Cita:
0=(Cualquiera)
4=0400
6=0600
7=AlfaDog
8=0A8l0f0a
9=L0e1v2e3l495

Clave=Nova

Pinchamos en el statusbar 2 veces y creamos dos paneles, al primero ponemos el Width a 400 y en el segundo rellenamos el text con lo siguiente

Cita:
Nivel de usuario [ ]


Ponemos el Statusbar en Autohin picamos el Checked y en el Formulario lo mismo en ShowHint.

Ahora abrimos el codigo del formulario y des pues de



Código Delphi [-]
var
  Form1: TForm1;

creamos la variable VarINivelUsuario quedando de la siguiente manera

Código Delphi [-]
var
  Form1: TForm1;
  VarINivelUsuario:Integer;

Volvemos al modo diseño yn en los evento vuscamos el OnCreate, pichamos y ponemos el Siguiente Código

Código Delphi [-]
   VarINivelUsuario:=0;
   StatusBar1.Panels[1].Text:='Nivel de usuario [0]';
   Edit1.Enabled:=False;
   Edit1.Text:='';
   Edit1.PasswordChar:='*';


Pinchamos en el ActionList dos veces y nos sale esta pantalla



Pinchamos en New Action (con el ratón botón derecho o en el icono de carpeta con un asterisco rojo) y
rellenamos los datos en el object inspector de la siguiente manera



Creamos las siguientes actiones

Cita:
A_Salir, Tag=0, caption=Salir y hint=Salimos del programa
A_CambiarNivel, Tag=0, caption=Cambiar nivel de usuario y hint=Cambia el nivel de usuario para acceder a las diferentes zonas
A_nivel4, Tag=4, caption=Nivel 4 y hint=Necesitas nivel
A_nivel6, Tag=6, caption=Nivel 6 y hint=Necesitas nivel
A_nivel7, Tag=7, caption=Nivel 7 y hint=Necesitas nivel
A_nivel8, Tag=8, caption=Nivel 8 y hint=Necesitas nivel
A_nivel9, Tag=9, caption=Nivel 9 y hint=Necesitas nivel 9 y clave de seguridad
Una vez terminado, pinchamos en A_Salir y ponemos el siguiente codigo en A_SalirExecute

Código Delphi [-]
   Application.Terminate;

Ahora pinchamos en A_CambiarNivel y ponemos el siguiente código

Código Delphi [-]
    Edit1.Enabled:=True;
    Edit1.SetFocus;

Seguimos con los niveles del 4 al 8 y en cada uno ponemos el siguiente codigo, cambiandolo por el numero del nivel
tanto en donde miramos el tag como en los textos, quedando el código

Código Delphi [-]
//Para nivel 4
    if VarINivelUsuario>=A_nivel4.Tag then ShowMessage('Usted a accedido, al nivel 4')
                                      else ShowMessage(A_nivel4.Hint+' para poder acceder');
//Para nivel 6
    if VarINivelUsuario>=A_nivel6.Tag then ShowMessage('Usted a accedido, al nivel 6')
                                      else ShowMessage(A_nivel6.Hint+' para poder acceder');
//Para nivel 7
    if VarINivelUsuario>=A_nivel7.Tag then ShowMessage('Usted a accedido, al nivel 7')
                                      else ShowMessage(A_nivel7.Hint+' para poder acceder');
//Para nivel 8
    if VarINivelUsuario>=A_nivel8.Tag then ShowMessage('Usted a accedido, al nivel 8')
                                      else ShowMessage(A_nivel8.Hint+' para poder acceder');
Y por último nivel 9 con el código

Código Delphi [-]
    if VarINivelUsuario>=A_nivel9.Tag then
    begin
      Edit1.Enabled:=True;
      Edit1.SetFocus;
    end else ShowMessage('No tiene nivel 9 para poder acceder');


Ahora preparamos el main menu y ponemos en el siguiente orden


Cita:
Caption = Acciones
Action = A_nivel4
Action = A_nivel6
Action = A_nivel7
Action = A_nivel8
Action = A_nivel9
Caption = -
Action = A_CambiarNivel
Caption = -
Action =A_Salir
Quedando el menú de la siguiente manera



Cambiamos el texto del Button1 a Ejecutar edit y el botton2 el action a A_CambiarNivel
Pinchamos dos veces en el button1 y ponemos el siguiente código

Código Delphi [-]
var VarBPro:Boolean;  //Para comrpobar si se ha ejecutado algún proceso
begin
    VarBPro:=false;
    if VarINivelUsuario=9 then
    begin
       if UpperCase(Edit1.Text)='NOVA' then
       BEGIN
           VarBPro:=True;
           ShowMessage('ES USTED USUARIO DE NIVEL 9 Y CONOCE LA CLAVE, FELICIDADES');
       END Else ShowMessage('La Clave introducida no Es Valida');
    end;
    if (VarBPro=false) and (UpperCase(Edit1.Text)='0400') then
    begin
       VarBPro:=True;
       StatusBar1.Panels[1].Text:='Nivel de usuario [4]';
       VarINivelUsuario:=4;
    end;
    if (VarBPro=false) and (UpperCase(Edit1.Text)='0600') then
    begin
       VarBPro:=True;
       StatusBar1.Panels[1].Text:='Nivel de usuario [6]';
       VarINivelUsuario:=6;
    end;
    if (VarBPro=false) and (UpperCase(Edit1.Text)='ALFADOG') then
    begin
       VarBPro:=True;
       StatusBar1.Panels[1].Text:='Nivel de usuario [7]';
       VarINivelUsuario:=7;
    end;
    if (VarBPro=false) and (UpperCase(Edit1.Text)='0A8L0F0A') then
    begin
       VarBPro:=True;
       StatusBar1.Panels[1].Text:='Nivel de usuario [8]';
       VarINivelUsuario:=8;
    end;
    if (VarBPro=false) and (UpperCase(Edit1.Text)='L0E1V2E3L495') then
    begin
       VarBPro:=True;
       StatusBar1.Panels[1].Text:='Nivel de usuario [9]';
       VarINivelUsuario:=9;
    end;
    if (VarBPro=false) then
    begin
       StatusBar1.Panels[1].Text:='Nivel de usuario [0]';
       VarINivelUsuario:=0;
    end;
    Edit1.Text:='';
    Edit1.Enabled:=False;
end;

y hemos terminado, ten en cuenta que con esta demo una vez metas el nivel 9, no te dejara cambiar de nivel, ya que esta hecha muy básica, podría arreglarse con otra variable local, para saber si se ha pulsado cambio de nivel de usuario o solicitud de clave, espero te sirva de ayuda


Código del Ejemplo
Archivos Adjuntos
Tipo de Archivo: zip Ejemplo control usuarios (2).zip (21,0 KB, 60 visitas)
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"

Última edición por José Luis Garcí fecha: 31-03-2012 a las 11:12:37. Razón: Arreglos y comentarios
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
validacion de usuarios y permisos para cada usuario? lince_36 JAVA 7 27-07-2010 18:11:14
Permisos de Usuarios yoennis Varios 5 02-02-2009 02:19:30
permisos de usuarios laukri Conexión con bases de datos 3 16-12-2007 09:27:51
Diseño de una BD - Usuarios, Perfiles, Permisos Delphius Conexión con bases de datos 3 09-01-2007 17:42:48
Ayuda para detectar un fallo en diseño de dll Sergio OOP 3 17-10-2003 18:33:17


La franja horaria es GMT +2. Ahora son las 01:32:31.


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
Copyright 1996-2007 Club Delphi