602SQL-┌plnß dokumentace Index   Tisk  

Prßva a subjekty prßva v SQL

Z hlediska editace subjekt∙ prßv lze rozliÜit tyto Φinnosti:

Z hlediska vztahu prßv k u₧ivateli (resp. subjektu prßv) lze rozliÜit tyto Φinnosti:

Vytvß°enφ a ruÜenφ u₧ivatel∙ a skupin

U₧ivatele lze vytvo°it SQL p°φkazem CREATE USER, zruÜit p°φkazem DROP USER. Nastavit p°φstupovΘ heslo u₧ivateli lze pomocφ funkce Set_password.

Skupinu u₧ivatel∙ lze vytvo°it SQL p°φkazem CREATE GROUP, zruÜit p°φkazem DROP GROUP.

Vztah mezi subjekty prßv

Zjistit nebo zm∞nit vztah mezi dv∞ma subjekty prßv (nap°. za°adit u₧ivatele do skupiny, obsadit skupinu do role) umo₧≥ujφ funkce Set_membership a Get_membership

P°φklad:

PROCEDURE `INIT_SET_PRIVILS`();
/*******************************************/
// nastavφ vÜem tabulkßm v aplikaci prßva Φφst, psßt, vklßdat a mazat zßznamy 
// pro roli Internet_user
BEGIN
  DECLARE sqlstr CHAR(500);
  DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
  BEGIN
    CALL log_write("Init_set_privils - "||sqlstate||' '||Int2str(sqlcode));
  END;

  FOR row AS INSENSITIVE CURSOR FOR
   SELECT T2.tab_name              // seznam tabulek
   FROM OBJTAB T1, TABTAB T2 
   WHERE T1.APL_UUID=T2.APL_UUID
    AND (Ord(T1.category)=CATEG_APPL) AND (t1.obj_name=CURRENT_APPLICATION)
  DO
    SET sqlstr = "GRANT DELETE, INSERT, SELECT, UPDATE ON "||row.tab_name||" TO ROLE INTERNET_USER";
    CALL SQL_execute(sqlstr);   // provΘst dynamicky sestaven² p°φkaz
  END FOR;
END