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
List_all_Users_with_Permissions
(Reference Lists)


Vytvořeno: 01-13-1997 14:02:00
Poslední změna: 12-09-2002 12:53:58

Outputs a list of all users with permissions

Modul

Module: Reference Lists

Zdrojový kód:

PROCEDURE List_all_Users_with_Permissions()
BEGIN
/*
  Lists all user with permissions
*/

  PRINT {"Arial",12,BOLD} "Seznam uživatelů s jejich právy ",NL(2);
  
  FOREACH User ORDER BY Login DO
      PRINT {"Arial",10,BOLD} Fullname;
      IF Administrator THEN
          PRINT{"Arial",10}" ", "(administrátor)",NL;
      ELSE
          PRINT{"Arial",10} NL;
      END
      temp$="";
      foundpermission%=0;
      FOREACH Objecttype DO
         IF Objecttype.Name="Enterprisedatamodel" THEN
            limit%=7;
         ELSE
            limit%=8;
         END
         FOREACH Objectstate WHERE Objecttype=Objecttype.Name
                             ORDER BY State DO
            FOR Userpermission WHERE User=User.Login
                                 AND Objecttype=Objecttype.Name
                                 AND State=Objectstate.State DO
               foundpermission%=1;
               IF temp$<>Objecttype THEN
                   CALL GetObjecttypeName(Objecttype,objecttypename$);
                   PRINT{"Arial",10} NL, objecttypename$;
               END
               temp$=Objecttype;
               PRINT{"Arial",10} NL;
               PRINT{"Arial",10} TAB(4),State;
               PRINT{"Arial",10} TAB(25),"Práva:";
               CALL Number2Bitmask(Operation,rbyte$);
               i%=2;
               WHILE i% < limit% DO
                  IF MID$(rbyte$,i%,1)="1" THEN
                      CALL GetOperationName(Objecttype,i%,permission$);
                      PRINT{"Arial",10} TAB(37),permission$,NL;
                  ELSE
                      firstgroup%=0;
                      foundgroup%=0;
                      FOREACH Groupmember WHERE User=User.Login DO
                         FOR Grouppermission WHERE Group=Groupmember.Group
                                               AND Objecttype=Objecttype.Name
                                               AND State=Objectstate.State DO
                            CALL Number2Bitmask(Operation,rgbyte$);
                            IF MID$(rgbyte$,i%,1)="1" THEN
                               foundgroup%=1;
                               CALL GetOperationName(Objecttype,i%,permission$);
                               IF firstgroup%=0 THEN
                                  PRINT{"Arial",10} TAB(37),permission$," (",Group;
                                  firstgroup%=1;
                               ELSE
                                  PRINT{"Arial",10} ", ",Group;
                               END
                            END
                         END
                      END
                      IF foundgroup%=1 THEN
                         PRINT{"Arial",10} ")",NL;
                      END
                  END
                  i%=i%+1;
               END
            END//Userpermission
      
            IF foundpermission%=0 THEN
               i%=2;
               first%=0;
               WHILE i%<limit% DO
                  firstgroup%=0;
                  foundgroup%=0;
                  FOREACH Groupmember WHERE User=User.Login DO
                     FOR Grouppermission WHERE Group=Groupmember.Group
                                           AND Objecttype=Objecttype.Name
                                           AND State=Objectstate.State DO
                        foundpermission%=1;
                        IF temp$<>Objecttype THEN
                           CALL GetObjecttypeName(Objecttype,objecttypename$);
                           PRINT{"Arial",10} NL, objecttypename$;
                        END
                        temp$=Objecttype;
                        IF first%=0 THEN
                           PRINT{"Arial",10} NL;
                           PRINT{"Arial",10} TAB(4),State;
                           PRINT{"Arial",10} TAB(25),"Práva:";
                           first%=1;
                        END
                        CALL Number2Bitmask(Operation,rgbyte$);
                        IF MID$(rgbyte$,i%,1)="1" THEN
                           foundgroup%=1;
                           CALL GetOperationName(Objecttype,i%,permission$);
                           IF firstgroup%=0 THEN
                              PRINT{"Arial",10} TAB(37),permission$," (",group;
                              firstgroup%=1;
                           ELSE
                              PRINT{"Arial",10} ", ",group;
                           END
                         END
                     END // Grouppermission
                  END // Groupmember
                  IF foundgroup%=1 THEN
                     PRINT{"Arial",10} ")",NL;
                  END
                  i%=i%+1;
              END
           END
        END //objectstate
          
        FOR Userpermission WHERE User=User.Login
                             AND Objecttype=Objecttype.Name
                             AND State="" DO
            foundpermission%=1;
            IF temp$<>Objecttype THEN
               CALL GetObjecttypeName(Objecttype,objecttypename$);
               PRINT{"Arial",10} NL, objecttypename$;
            END
            temp$=Objecttype;
            PRINT{"Arial",10} NL;
            PRINT{"Arial",10} TAB(4),"v každém stavu";
            PRINT{"Arial",10} TAB(25),"Práva:";
            CALL Number2Bitmask(Operation,rbyte$);
            i%=2;
            WHILE i% < limit% DO
               IF MID$(rbyte$,i%,1)="1" THEN
                  CALL GetOperationName(Objecttype,i%,permission$);
                  PRINT{"Arial",10} TAB(37),permission$,NL;
               ELSE
                  firstgroup%=0;
                  foundgroup%=0;
                  FOREACH Groupmember WHERE User=User.Login DO
                     FOR Grouppermission WHERE Group=Groupmember.Group
                                           AND Objecttype=Objecttype.Name
                                           AND State="" DO
                         CALL Number2Bitmask(Operation,rgbyte$);
                         IF MID$(rgbyte$,i%,1)="1" THEN
                            foundgroup%=1;
                            CALL GetOperationName(Objecttype,i%,permission$);
                            IF firstgroup%=0 THEN
                               PRINT{"Arial",10} TAB(37),permission$," (",Group;
                               firstgroup%=1;
                            ELSE
                               PRINT{"Arial",10} ", ",Group;
                            END
                         END
                     END
                  END
                  IF foundgroup%=1 THEN
                     PRINT{"Arial",10} ")",NL;
                  END
               END
               i%=i%+1;
            END
         END//Userpermission
         
         i%=2;
         first%=0;
         WHILE i%<limit% DO
            firstgroup%=0;
            foundgroup%=0;
            FOREACH Groupmember WHERE User=User.Login DO
               FOR Grouppermission WHERE Group=Groupmember.Group
                                     AND Objecttype=Objecttype.Name
                                     AND State="" DO
                   foundpermission%=1;
                   IF temp$<>Objecttype THEN
                      CALL GetObjecttypeName(Objecttype,objecttypename$);
                      PRINT{"Arial",10} NL, objecttypename$;
                   END
                   temp$=Objecttype;
                   IF first%=0 THEN
                      PRINT{"Arial",10} NL;
                      PRINT{"Arial",10} TAB(4),"v každém stavu";
                      PRINT{"Arial",10} TAB(25),"Práva:";
                      first%=1;
                   END
                   CALL Number2Bitmask(Operation,rgbyte$);
                   IF MID$(rgbyte$,i%,1)="1" THEN
                      foundgroup%=1;
                      CALL GetOperationName(Objecttype,i%,permission$);
                      IF firstgroup%=0 THEN
                         PRINT{"Arial",10} TAB(37),permission$," (",group;
                         firstgroup%=1;
                      ELSE
                         PRINT{"Arial",10} ", ",group;
                      END
                   END
               END // Grouppermission
            END // Groupmember
            IF foundgroup%=1 THEN
               PRINT{"Arial",10} ")",NL;
            END
            i%=i%+1;
        END
       
    END // Objecttype
  
    IF foundpermission%=0 THEN
      PRINT{"Arial",10,ITALIC} NL,TAB(4),"Žádná uživatelská oprávnění nejsou definována.",NL;
    END
    PRINT{"Arial",10} NL;
  
  END //user
  PRINT{"Arial",10} NL;

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\13158.htm (C) microTOOL GmbH 2002