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
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
_prepara_SQL(IBSQL1, 'grant ' + nombre_rol + ' to ' + nombre_usuario)
else
_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;