home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 April / Chip_1997-04_cd.bin / tema / 602propc / disk5 / data.5 / WINTIME / APPS / I_PRAVA.PGM < prev    next >
Text File  |  1996-12-03  |  3KB  |  69 lines

  1. INCLUDE
  2.  
  3. procedure PravaAplikace;
  4. {**************************************}
  5. type
  6.   object = record
  7.     name : string[10];
  8.     categ : short;
  9.   end;
  10. var
  11.   spom : string[100]; 
  12.   cpom : cursor object;
  13.   i,pocetpom : integer;
  14.   objnum,tabnum : short;
  15.   skupuziv : string[10];
  16.   a : boolean;
  17.   strpom : string[100];
  18.   aplname : string[10];
  19.  
  20. begin
  21.   if myName <> 'DB_ADMIN' then Info_box('Nelze',' Nastavenφ prßv m∙₧e provΘst pouze sprßvce databßze!')
  22.   else begin
  23.     a := Input_box('jmΘno u₧ivatele nebo skupiny',skupuziv,10);
  24.     if a then begin
  25.       Set_cursor(1);
  26.       
  27.       if Find_object('I_prava', CATEG_PGMSRC, objnum) then Signalize
  28.       else aplname := Objtab[objnum].apl_name;                       // zjiÜt∞nφ jmΘna aktußlnφ aplikace
  29.       
  30.       if Find_object(skupuziv,CATEG_USER,objnum) then begin          // skupina se nenaÜla
  31.         strpom := 'U₧ivatel nebo skupina > '+skupuziv+' < nenφ dosud zalo₧en(a).'#10'Chcete ho (ji) zalo₧it prßv∞ te∩ a pokraΦovat?';
  32.         if not YesNo_box('Varovßnφ',strpom) then halt      // zastavφ se vno°en² b∞h, tj. prßv∞ tato propcedura
  33.         else if Create_group(skupuziv) then Signalize;
  34.       end;
  35.       
  36.       strpom := 'Nastavuji prßva skupiny '+skupuziv+' k objekt∙m aplikace '+aplname+'...';
  37.       Set_status_text(strpom);
  38.       spom := "SELECT obj_name, Ord(category) FROM Objtab WHERE Apl_name="""+aplname+"""";
  39.       if Open_sql_cursor(cpom, spom) then Signalize
  40.       else begin
  41.         Rec_cnt(cpom, pocetpom);
  42.         if pocetpom <> -1 then 
  43.           for i := 0 to pocetpom-1 do begin
  44.             Set_status_nums(i,pocetpom-1);
  45.             if Set_object_rights(cpom[i].name,cpom[i].categ,skupuziv, RIGHT_READ) then Signalize;
  46.           end;
  47.         Close_cursor(cpom);  
  48.       end;
  49.   
  50.       strpom := 'Nastavuji prßva skupiny '+skupuziv+' k tabulkßm aplikace '+aplname+'...';
  51.       Set_status_text(strpom);
  52.       spom := "SELECT tab_name, Ord(category) FROM Tabtab WHERE Apl_name="""+aplname+"""";
  53.       if Open_sql_cursor(cpom, spom) then Signalize
  54.       else begin
  55.         Rec_cnt(cpom, pocetpom);
  56.         if pocetpom <> -1 then 
  57.           for i := 0 to pocetpom-1 do begin
  58.             Set_status_nums(i,pocetpom-1);
  59.             if Set_object_rights(cpom[i].name,CATEG_TABLE,skupuziv, RIGHT_READ) then Signalize;
  60.             if not Find_object(cpom[i].name, CATEG_TABLE, tabnum) then
  61.               if Set_data_rights(tabnum,skupuziv,RIGHT_READ+RIGHT_WRITE+RIGHT_INSERT+RIGHT_DEL,0,0) then Signalize;
  62.           end;
  63.         Close_cursor(cpom);  
  64.       end;
  65.       Info_box('Provedeno','OK');  
  66.     end;
  67.   end;  
  68. end;
  69.