Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Asignar role en Interbase (https://www.clubdelphi.com/foros/showthread.php?t=57104)

mayi 05-06-2008 16:25:18

Asignar role en Interbase
 
Hola a todos
estoy desarrollando un aplicación en Delphi con Interbase en la que necesito asignar roles en "tiempo real" a los usuarios, pero no he podido lograrlo. Hasta ahora había resuelto asignado los roles directamente a los usuarios desde el IBExpert pero necesito que sea desde mi aplicación.
En este momento solamente necesito asignar roles a los usuarios.(ambos previamente creados)
No sé si estoy bien encaminada, pero traté de hacer un procedimiento en Interbase en el que le pasaba como parámetro el usuario e intenté colocar sentencias sql como GRANT rolename TO user , pero por supuesto que esto no funcionó.
Creo que para ello necesito alguna UDF, o algo así.
Por favor, si alguien tiene alguna idea, les agredeceré mucho.:confused:

RolphyReyes 05-06-2008 18:10:13

Saludos.

Hasta donde tengo entendido ninguna versión de Firebird en la actualidad soporta este tipo de "mantenimiento" de usuarios vía sentencias SQL.

Esta funcionalidad estará disponible a partir de FB 2.5, entiendo que por lo pronto tendrás que darle mantenimiento por tu herramienta (IbExpert).

Hasta luego.

lbuelvas 05-06-2008 18:41:30

En mis aplicativos escritos en Delphi cuento con una opcion para el administrador para que asigen roles, pero el unico que puede asignar roles es el usaurio sysdba.




Simplemente selecciono el usuario y luego margo los roles en los que puede participar, para ello uso las siguientes instrucciones:

Código Delphi [-]
procedure TFrmAdministrador_Usuarios.ChkLB_RolesClickCheck(Sender: TObject);
var
  nombre_usuario,
  nombre_rol:     string;
begin
  //salirse si no se ha seleccionado algun usuario
  if ListViewMiembros.ItemIndex = -1 then begin
    ChkLB_Roles.Checked[ChkLB_Roles.ItemIndex] := not ChkLB_Roles.Checked[ChkLB_Roles.ItemIndex];
    exit;
  end;
  nombre_usuario := trim(ListViewMiembros.Selected.Caption);
  nombre_rol     := trim(ChkLB_Roles.Items.Strings[ChkLB_Roles.ItemIndex]);
  if ChkLB_Roles.Checked[ChkLB_Roles.ItemIndex] = true then
   //si esta checkado se otorga el privilegio
    _prepara_SQL(IBSQL1, 'grant  ' + nombre_rol + ' to   ' + nombre_usuario)
  else
   //no esta checkado se revoca el privilegio
    _prepara_SQL(IBSQL1, 'revoke ' + nombre_rol + ' from ' + nombre_usuario);
end;

procedure _prepara_SQL (var SQL1: TIBSQL; const cadena: string);
begin
  with SQL1 do begin
    Close;
    SQL.Clear;
    SQL.Add(cadena);
    Prepare;
    ExecQuery;
  end;
end;

mayi 05-06-2008 19:56:16

Hola
Muchas gracias por su ayuda, espero poder resolver mi problemita .
En mi opinión este es uno de los mejores foros de Internet.:)

mRoman 07-12-2012 18:17:00

Hola compañero forero:

Tengo una duda con respecto al código que posteaste....que version de firebird tenias instalado o tienes instalado?. Lo pregunto porque yo tengo la 1.5 y quiero hacer desde mi aplicativo, asignar roles, pero no hace nada cuando le doy la instruccion GRANT capturista TO usuario1...

Saludos.


La franja horaria es GMT +2. Ahora son las 17:22:32.

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