Seit OTRS 2.0 können Access Control Lists (ACLs) verwendet werden, um den Zugriff auf Tickets, Module, Queues, usw. zu steuern bzw. um in bestimmten Situationen Aktionen auf Tickets (schließen, verschieben, usw.) zu beeinflussen. ACLs können als Ergänzung zum bestehenden Berechtigungssystem der Rollen und Gruppen verwendet werden, mit ACLs lassen sich , basierend auf Ticket-Attributen, rudimentäre Workflows innerhalb des Systems abbilden.
ACLs können noch nicht über das
SysConfig-Interface
erstellt werden, sie müssen direkt in die Datei
Kernel/Config.pm
eingetragen werden. Im folgenden
einige Beispiele:
Beispiel 18.1. ACL, die das Verschieben von Tickets in eine Queue nur bei einer Ticket-Priorität von 5 erlaubt
# ticket acl $Self->{TicketAcl}->{'ACL-Name-2'} = { # match properties Properties => { # current ticket match properties Ticket => { Queue => ['Raw'], Priority => ['5 very high'], } }, # return possible options (white list) Possible => { # possible ticket options (white list) Ticket => { Queue => ['Alert'], }, }, };
Beispiel 18.2. ACL, die das Schließen von Tickets in der raw Queue verbietet und den Schließen-Schalter ausblendet
$Self->{TicketAcl}->{'ACL-Name-1'} = { # match properties Properties => { # current ticket match properties Ticket => { Queue => ['Raw'], } }, # return possible options (white list) Possible => { # possible ticket options (white list) Ticket => { State => ['new', 'open', 'pending reminder'], }, # possible action options Action => { AgentTicketLock => 1, AgentTicketZoom => 1, AgentTicketClose => 0, AgentTicketPending => 1, AgentTicketNote => 1, AgentTicketHistory => 1, AgentTicketPriority => 1, AgentTicketFreeText => 1, AgentTicketHistory => 1, AgentTicketCompose => 1, AgentTicketBounce => 1, AgentTicketTicketPrint => 1, AgentTicketForward => 1, AgentTicketTicketLink => 1, AgentTicketPrint => 1, AgentTicketPhone => 1, AgentTicketCustomer => 1, AgentTicketOwner => 1, }, }, };
Beispiel 18.3. ACL, die den Status für alle Agenten entfernt und Ihn nur noch für eine Gruppe zur Verfügung stellt
$Self->{TicketAcl}->{'ACL-Name-5'} = { # match properties Properties => { # current ticket match properties (match always) }, # return possible options PossibleNot => { # possible ticket options Ticket => { State => ['closed successful'], }, }, };
Im folgenden eine Liste aller Parameter, die für ACLs verwendet werden können:
# ticket acl $Self->{TicketAcl}->{'ACL-Name-Test'} = { # match properties Properties => { # current action match properties Frontend => { Action => ['AgentTicketPhone', 'AgentTicketEmail'], }, # current user match properties User => { Group_rw => [ 'hotline', ], }, # current user match properties Ticket => { Queue => ['Raw'], State => ['new', 'open'], Priority => ['some priority'], Lock => ['lock'], CustomerID => ['some id'], CustomerUserID => ['some id'], TicketFreeKey1 => ['some key'], TicketFreeKey2 => ['some key'], # ... TicketFreeKey8 => ['some key'], TicketFreeText1 => ['some value'], TicketFreeText2 => ['some value'], # ... TicketFreeText8 => ['some value'], } }, # return possible options (white list) Possible => { # possible ticket options (white list) Ticket => { Queue => ['Hotline', 'Koordination'], State => => ['some state'], Priority => ['5 very high'], TicketFreeKey1 => ['some key'], TicketFreeKey2 => ['some key'], # ... TicketFreeKey8 => ['some key'], TicketFreeText1 => ['some value'], TicketFreeText2 => ['some value'], # ... TicketFreeText8 => ['some value'], }, # possible action options (white list) Action => { AgentTicketLock => 1, AgentTicketZoom => 1, AgentTicketClose => 1, AgentTicketPending => 0, AgentTicketNote => 1, AgentTicketHistory => 0, AgentTicketPriority => 1, AgentTicketFreeText => 0, AgentTicketHistory => 1, AgentTicketCompose => 1, AgentTicketBounce => 1, AgentTicketTicketPrint => 0, AgentTicketForward => 1, AgentTicketTicketLink => 1, AgentTicketPrint => 1, AgentTicketPhone => 1, AgentTicketCustomer => 1, AgentTicketOwner => 0, }, }, # remove options (black list) PossibleNot => { # possible ticket options (black list) Ticket => { Queue => ['Hotline', 'Koordination'], State => ['closed', 'removed'], }, }, };