brix:papilio is built on a LAMP-stack and uses PDFlib+PDI as its primary rendering engine.
The application largely follows the MVC pattern:
One notable exception to this are the jFormer forms, which are created in the controllers themselves.
In order to protect certain areas from unauthorized access, ACLs are used. There are quite a few predefined and named ACLs, which should cover most use cases. But you can also add custom ACLs for special cases.
ROLE | create Orders | approve Orders | editUser Orders | layout Orders | print Orders | edit Users | switch User | edit Editable Elements | edit Templates | edit Clients | edit Divisions | edit Labels | view System | view Statistics | edit Visible Elements | edit User Groups | translate Orders |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SUPERADMIN | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
ADMIN | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
CONTROLLER | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
USER | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
PRINT_OPERATOR | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
GRAPHIC_ARTIST | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
LAYOUTER | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
GROUP_ADMIN | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
Additionally, brix:papilio is a multi-tennant system. This means that all top-level objects also store their client ID along with the other properties. This filter is applied throughout the system in order to separate the tennants. Only superadmins and users with the "switch client" flag (this may be useful for print operators) are able to switch clients.
Orders use the following state machine (note that an order can have multiple states):