Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-06-2007
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 21
sitrico Va por buen camino
Cool Una de Usuarios

Bueno, ya estoy terminando mi aplicación y tengo que comenzar a validar lus usuarios permisos y esas cosas, (si quizá ubiese podido empezar conjuntamente ) el punto es que quisiera usar el gestor de usuarios de firebird básicamente current_user, por lo que debo crear unos usuaris y dominios. (el IbExpert no me ayuda así que los Grant serán a mano).

El punto es: ¿ como puedo identificar un IdUsuario (integer) a partir del Current_User (es un char de 15) ? me explico:

Al realizar insersiones uso +- algo así:

Código SQL [-]
INSERT INTO CI_CITAS 
(IDCITA, IDPACIENTE, FCHCITA, HORA, USUARIO, OBSERVACIONES) VALUES 
(NULL, :IDPACIENTE, :FCHCITA, :HORA, current_user, :OBSERVACIONES)

hay alguna manera (del lado del servidor) de usar un campo como current_User_ID (integer) no me gustan mucho los campos clave Char

Edito: se me olvidava.

Hay alguna manera de evitar que un mismo usuario se conecte más de 1 vez (ni siquiera he probado conectarme con un usuario que no sea sysdba)
__________________
Sitrico

Última edición por sitrico fecha: 12-06-2007 a las 01:34:40.
Responder Con Cita
  #2  
Antiguo 12-06-2007
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 21
TJose Va por buen camino
Hola sitrico

no entiendo bien cual es la duda.
los usuarios, son usuarios registrados en el servidor, no en una tabla de la base de datos.
current_user te devuelve el usuario, actualmente conectado desde la conexión activa, y que está registrado en el servidor. Si existen los usuarios juan, pedro y jose, cada uno accediendo desde un cliente diferente, por ejemplo, la consulta:
Código SQL [-]
select current_user from T
devolverá juan, pedro y jose respectivamente para cada conexión.

Saludos
TJose
Responder Con Cita
  #3  
Antiguo 12-06-2007
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 21
sitrico Va por buen camino
Tengo entendido que current_user devuelve el nombre del usuario que inicio la conexión con el servidor. (venga el que escribio el login y password).

En el caso que explique al inicio debería funcionar así:

Pongo en el datamodule el loginPrompt a true;

El usuario escribirá su nombre de usuario y contraseña.

Si pido el current_user me debe devolver el nombre del usuario indicado antes (loginPrompt ). Los permisos y restricciones de cada usuario los definiré por roles. (Ya preguntaré sobre ello).

Pero la pregunta original era: Hay alguna una manera de usar un Id (un valor integer) en lugar del Char(15) que devuelve current_user.

Supongo que tendré que crear una tabla

Código SQL [-]
Create Table Usuarios (
    UserName Char(15) not null,
    IdUser Integer,
    Bla...bla...bla

Y luego en un trigger before insert /update (en las tablas que corresponde) hago algo como

(no estoy muy claro en la sintaxis exacta pero creo que la puedo resolver con paciencia)

Código SQL [-]
If (New.IdUser is null) Then
   New.IdUser = select IdUser from usuarios Where UserName = Current_User

Aunque si es esa la única opción, prefiero escribir directo el current_user en las tablas
__________________
Sitrico

Última edición por sitrico fecha: 12-06-2007 a las 07:31:02.
Responder Con Cita
  #4  
Antiguo 12-06-2007
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 21
TJose Va por buen camino
Cita:
Si pido el current_user me debe devolver el nombre del usuario indicado antes (loginPrompt ). Los permisos y restricciones de cada usuario los definiré por roles. (Ya preguntaré sobre ello).
Esto es correcto

Cita:
Pero la pregunta original era: Hay alguna una manera de usar un Id (un valor integer) en lugar del Char(15) que devuelve current_user.
Quizá si, pero no tiene mucho sentido (a mi parecer), ya que que los usuarios están registrados en otra base de datos (security2.fdb en FB2.x) y se puede perder la referencia en cualquier momento. Qué sucede si quieres llevar la base de datos a otro servidor? Sería mucha casualidad que se mantenga la relacion id <---> usuario.
Por otro lado a security2.fdb deberías acceder como sysdba.

Saludos
TJose
Responder Con Cita
  #5  
Antiguo 13-06-2007
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Mira te voy a dar una idea de como yo trabajo la aprte usuarios.

Uso una tabla de usuarios y no la de seguridad de sgdbd.

Cada cuando alguien se conecta creo una variable dentro del deposito de variables en la parte de las sesiones que contiene el id del usuario que esta coneptado de esta manera tengo informacion del usuario que esta conectado. Pero esto es valido si es tu tabla y no la de sistema.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
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
Usuarios y roles morta71 Firebird e Interbase 10 05-02-2008 09:36:58
Tomar usuarios de red Barzaugc Varios 6 10-06-2005 01:55:04
Monitoreo de usuarios JAH Firebird e Interbase 4 07-08-2004 16:50:08
Usuarios en red castroruiz2001 Conexión con bases de datos 1 02-06-2003 20:55:15


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


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