Informační tok Funkční structura Datová struktura ER model Modulová struktura Typová struktura Relační model Dokumentace


[Celkový datový model] [Funkce] [Externí rohraní] [Stavové diagramy] [Datové elementy] [Entity] [Relace]
[Databáze] [Události] [Materiály] [Generovací funkce] [Vyhodnocovací funkce] [Konfigurace] [Uživatelé] [Projekt] [Home]



Vyhodnocovací funkce
Permissions_of_a_User_for_an_Objecttype
(Administration)


Vytvořeno: 01-13-1997 15:17:21
Poslední změna: 12-11-2002 12:13:42

Outputs all permissions of a user for a specified objecttype. Input parameters. user$=Login of the user, objecttypename$= objecttype name as given in the usermanagement

Modul

Module: Administration

Zdrojový kód:

PROCEDURE Permissions_of_a_User_for_an_Objecttype(user$,objecttypename$)
BEGIN
 /*
 Input parameter: user$ = Login
                    objecttypename$ = objecttype name as given in the usermanagement
 */
 
 PRINT{"Arial",12,BOLD} "Práva uživatele ";
 PRINT{"Arial",12,BOLD,ITALIC} user$;
 PRINT{"Arial",12,BOLD} " k ";
 PRINT{"Arial",12,BOLD,ITALIC} objecttypename$,NL(2);
 CALL GetObjecttypeFromName(objecttypename$,objecttype$);
 
 // error message: parameters missing
 error%=0;
 IF user$="" OR objecttype$="" THEN
    error%=1;
    PRINT{"Arial",10,ITALIC} TAB(4), "Vstupní parametry:",NL;
    PRINT{"Arial",10,ITALIC} TAB(8), "user$ = login uživatele,",NL;
    PRINT{"Arial",10,ITALIC} TAB(8), "objecttypename$ = název objektu daný"+
                                     " v case/4/0 system managereru",NL;
    PRINT{"Arial",10,ITALIC} TAB(4), "Vkládejte oba parametry v uvozovkách .",NL(2);
 END
 //
 
 IF objecttype$ = "Enterprisedatamodel" THEN
    limit% = 7;
 ELSE
    limit% = 8;
 END
 permission%=0;
 
 FOREACH Objectstate WHERE Objecttype=objecttype$ ORDER BY State DO
    foundstatepermission%=0;
    FOR Userpermission WHERE User=user$ AND Objecttype=objecttype$
                         AND State=Objectstate.State DO
        foundstatepermission%=1;
        permission%=1;
        PRINT{"Arial",10,BOLD} "ve stavu: ",State,NL;
        CALL Number2Bitmask(Operation,rbyte$);
        i%=2;
        WHILE i% < limit% DO
            IF MID$(rbyte$,i%,1)="1" THEN
                CALL GetOperationName(objecttype$,i%,right$);
                PRINT{"Arial",10} NL;
                PRINT{"Arial",10} TAB(4),right$;
            ELSE
                firstright%=0;
                FOREACH Groupmember WHERE User=user$ DO
                   FOR Grouppermission WHERE Group=Groupmember.Group
                                         AND Objecttype=Userpermission.Objecttype
                                         AND State=Objectstate.State DO
                      CALL Number2Bitmask(Operation,rgbyte$);
                      IF MID$(rgbyte$,i%,1)="1" THEN
                         CALL GetOperationName(objecttype$,i%,right$);
                         IF firstright%=0 THEN
                            PRINT{"Arial",10} NL;
                            PRINT{"Arial",10} TAB(4),right$," (",group,") ";
                            firstright%=1;
                         ELSE
                            PRINT{"Arial",10} " (",group,")";
                         END
                      END
                   END
                END
            END
            i%=i%+1;
        END
        IF foundstatepermission%=1 THEN
            PRINT{"Arial",10} NL(2);
        END
    END//Userpermission
     
    IF foundstatepermission%=0 THEN
        i%=2;
        first%=0;
        WHILE i% < limit% DO
            firstright%=0;
            FOREACH Groupmember WHERE User=user$ DO
               FOR Grouppermission WHERE Group=Groupmember.Group
                                     AND Objecttype=objecttype$
                                     AND State=Objectstate.State DO
                   foundstatepermission%=1;
                   permission%=1;
                   IF first%=0 THEN
                      PRINT{"Arial",10,BOLD} "ve stavu: ",State,NL;
                      first%=1;
                   END
                   CALL Number2Bitmask(Operation,rgbyte$);
                   IF MID$(rgbyte$,i%,1)="1" THEN
                      CALL GetOperationName(objecttype$,i%,right$);
                      IF firstright%=0 THEN
                         PRINT{"Arial",10} NL;
                         PRINT{"Arial",10} TAB(4),right$," (",group,")";
                         firstright%=1;
                      ELSE
                         PRINT{"Arial",10} " (",group,")";
                      END
                   END
                END
            END
            i%=i%+1;
        END
        IF foundstatepermission%=1 THEN
            PRINT{"Arial",10} NL(2);
        END
    END
  
 END // Objectstate
  
 foundpermission%=0;
 FOR Userpermission WHERE User=user$ AND Objecttype=objecttype$
                      AND State="" DO
     foundpermission%=1;
     permission%=1;
     PRINT{"Arial",10,BOLD} "ve všech stavech",NL;
     CALL Number2Bitmask(Operation,rbyte$);
     i%=2;
     WHILE i% < limit% DO
         IF MID$(rbyte$,i%,1)="1" THEN
            CALL GetOperationName(objecttype$,i%,right$);
            PRINT{"Arial",10} NL;
            PRINT{"Arial",10} TAB(4),right$;
         ELSE
            firstright%=0;
            FOREACH Groupmember WHERE User=user$ DO
               FOR Grouppermission WHERE Group=Groupmember.Group
                                     AND Objecttype=Userpermission.Objecttype
                                     AND State="" DO
                   CALL Number2Bitmask(Operation,rgbyte$);
                   IF MID$(rgbyte$,i%,1)="1" THEN
                      foundpermission%=1;
                      CALL GetOperationName(objecttype$,i%,right$);
                      IF firstright%=0 THEN
                         PRINT{"Arial",10} NL;
                         PRINT{"Arial",10} TAB(4),right$," (",group,") ";
                         firstright%=1;
                      ELSE
                         PRINT{"Arial",10} " (",group,")";
                      END
                   END
               END
            END
         END
         i%=i%+1;
     END
     PRINT{"Arial",10} NL;
 END
 IF foundpermission%=0 THEN
     i%=2;
     first%=0;
     WHILE i% < limit% DO
         firstright%=0;
         FOREACH Groupmember WHERE User=user$ DO
            FOR Grouppermission WHERE Group=Groupmember.Group
                                  AND Objecttype=objecttype$
                                  AND State="" DO
                foundpermission%=1;
                permission%=1;
                IF first%=0 THEN
                   PRINT{"Arial",10,BOLD} "ve všech stavech:", NL;
                   first%=1;
                END
                CALL Number2Bitmask(Operation,rgbyte$);
                IF MID$(rgbyte$,i%,1)="1" THEN
                   CALL GetOperationName(objecttype$,i%,right$);
                   IF firstright%=0 THEN
                      PRINT{"Arial",10} NL;
                      PRINT{"Arial",10} TAB(4),right$," (",group,")";
                      firstright%=1;
                   ELSE
                      PRINT{"Arial",10} " (",group,")";
                   END
                END
            END
         END
         i%=i%+1;
     END
     IF foundpermission%=1 THEN
        PRINT{"Arial",10} NL;
     END
 END
                         
 IF permission%=0 AND error%=0 THEN
     PRINT{"Arial",10,ITALIC} "Nejsou definována žádná práva.", NL(2);
 END

END


Generováno: 16.10.2003 7:41 Systém: C:\Documents and Settings\hajsman\Dokumenty\Vyuka\Irs2\Projekt case40\Projekt03.csf Generováno systémem case/4/0
Vygeneroval: Administrator Soubor: C:\Documents and Settings\hajsman\Dokumenty\Vyuka\Irs2\Projekt case40\html\13221.htm (C) microTOOL GmbH 2002