# Berechtigungsverwaltung
> Symcon Dokumentation · Deutsch · erzeugt am 2026-11-09
> Index: https://www.symcon.de/de/llms.txt
## Inhalt
Seiten in dieser Datei:
- Benutzer
- IPS_AddPermissionToUser – fügt einem Benutzer eine Berechtigung hinzu
- IPS_AddRoleToUser – weist einem Benutzer eine Rolle zu
- IPS_CreateUser – erstellt einen neuen Benutzer
- IPS_DeleteUser – löscht einen Benutzer
- IPS_GetUser – liefert Informationen über einen Benutzer
- IPS_GetUserList – liefert die Namen aller Benutzer
- IPS_RemovePermissionFromUser – entfernt eine Berechtigung von einem Benutzer
- IPS_RemoveRoleFromUser – entfernt eine Rolle von einem Benutzer
- IPS_SetUserActive – aktiviert/deaktiviert einen Benutzer
- IPS_SetUserBindDN – setzt den BindDN eines LDAP-Benutzers
- IPS_SetUserEMail – setzt die E-Mail-Adresse eines Benutzers
- IPS_SetUserFirstName – setzt den Vornamen eines Benutzers
- IPS_SetUserLastName – setzt den Nachnamen eines Benutzers
- IPS_SetUserPassword – setzt das Passwort eines Benutzers
- IPS_UserExists – prüft, ob ein bestimmter Benutzer existiert
- IPS_UserHasPermission – prüft, ob ein Benutzer eine Operation auf einem Objekt ausführen darf
- IPS_UserHasRole – prüft, ob einem Benutzer eine bestimmte Rolle zugewiesen ist
- IPS_UserIsAdministrator – prüft, ob ein Benutzer Administrator ist
- IPS_GetLoggedInUser – liefert den Namen des Benutzers, in dessen Kontext die aktuelle Ausführung läuft
- IPS_HasPermission – prüft, ob der aktuell angemeldete Benutzer eine Operation auf einem Objekt ausführen darf
- IPS_IsAdministrator – prüft, ob der aktuell angemeldete Benutzer Administrator ist
- IPS_IsUnknown – prüft, ob die aktuelle Ausführung ohne angemeldeten Benutzer läuft
- Rollen
- IPS_AddPermissionToRole – fügt einer Rolle eine Berechtigung hinzu
- IPS_CreateRole – erstellt eine neue Rolle
- IPS_DeleteRole – löscht eine Rolle
- IPS_GetRole – liefert Informationen über eine Rolle
- IPS_GetRoleList – liefert die Namen aller Rollen
- IPS_RemovePermissionFromRole – entfernt eine Berechtigung von einer Rolle
- IPS_RoleExists – prüft, ob eine Rolle existiert
- IPS_RoleHasPermission – prüft, ob eine Rolle eine Berechtigung für ein Objekt hat
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/
## Benutzer
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/
## IPS_AddPermissionToUser
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-addpermissiontouser/
`bool IPS_AddPermissionToUser(string $Benutzername, int $ObjektID, string $Operation, bool $Rekursiv)`
fügt einem Benutzer eine Berechtigung hinzu
**Parameter**
- `$Benutzername` (string): Name des Benutzers (case-sensitiv)
- `$ObjektID` (int): ID des Objekts, für das die Berechtigung gilt
- `$Operation` (string): Name der registrierten Operation, z.B. VISUALIZATION
- `$Rekursiv` (bool): __TRUE__, wenn die Berechtigung auch für alle Objekte unterhalb von __ObjektID__ gilt, andernfalls __FALSE__
**Rückgabewert** (bool): Konnte die Funktion erfolgreich ausgeführt werden, liefert sie als Ergebnis __TRUE__, andernfalls __FALSE__.
Die Funktion fügt dem Benutzer __Benutzername__ die Berechtigung hinzu, die __Operation__ auf dem Objekt __ObjektID__ auszuführen. Berechtigungen können alternativ über Rollen vergeben werden (siehe [IPS_AddPermissionToRole](management-permissions.md)). Der Zugriff auf eine Visualisierung kann auch direkt in deren Instanzkonfiguration unter [Sicherheit](../components/tile-visualization.md) festgelegt werden.
Eine rekursive Berechtigung gilt für das Objekt selbst und für alle Objekte darunter im Objektbaum (Kinder, Kindeskinder usw.). Eine rekursive Berechtigung auf das Wurzelobjekt (ID 0) gilt somit für alle Objekte. Eine nicht rekursive Berechtigung gilt ausschließlich für genau dieses Objekt. Links werden dabei nicht verfolgt, maßgeblich ist allein die Position des geprüften Objekts im Objektbaum.
Operationen werden von Modulen registriert. Aktuell registriert die Visualisierung die Operation __VISUALIZATION__ (Zugriff auf eine Visualisierung mit all ihren Objekten), sobald eine Visualisierungsinstanz (z.B. [Kachel Visualisierung](../modules/tile-visualization.md) oder [WebFront Visualisierung](../modules/webfront-visualization.md)) vorhanden ist. Geprüft wird sie auf die ID der Visualisierungsinstanz. Der Name der Operation ist case-sensitiv. Ist die Operation nicht registriert, schlägt die Funktion mit "Cannot verify unsupported operation" fehl.
> **Hinweis:** Diese Funktion steht nur mit Lizenzen zur Verfügung, die das RBAC-Feature ([Berechtigungssteuerung](../modules/permission-control.md)) enthalten. Andernfalls schlägt sie mit "This function is only available for licenses with the RBAC feature enabled!" fehl. Sind mehr Benutzer vorhanden als die Lizenz erlaubt (standardmäßig 10 Benutzer, der Benutzer @admin zählt nicht mit), schlägt sie mit "Your license is currently limited to 10 users. Please consider upgrading the license to more users!" fehl (die Zahl entspricht dem Limit der Lizenz).
Der aktuell angemeldete Benutzer (siehe [IPS_GetLoggedInUser](management-permissions.md)) muss Administrator sein, also der Benutzer @admin oder ein Benutzer mit der Rolle @admin. Andernfalls schlägt die Funktion mit "Administrator permissions are required for this action!" fehl.
Weitere Prüfungen in dieser Reihenfolge: Ist die Operation nicht registriert, schlägt die Funktion mit "Cannot verify unsupported operation" fehl. Existiert der Benutzer nicht, schlägt die Funktion mit "User with name '…' does not exist" fehl. Der Benutzer @admin kann nicht verändert werden, der Versuch schlägt mit "User @admin cannot be modified!" fehl. Existiert das Objekt nicht, schlägt sie mit "Object #… does not exist" fehl. Besitzt der Benutzer bereits eine Berechtigung mit identischer __ObjektID__, __Operation__ und __Rekursiv__, schlägt sie mit "User already has this permission" fehl. Eine Berechtigung, die sich nur in __Rekursiv__ unterscheidet, gilt als eigener Eintrag.
Siehe auch: [IPS_RemovePermissionFromUser](management-permissions.md), [IPS_UserHasPermission](management-permissions.md)
**Beispiel**
```php
$VisuID = 12345; // ID einer Kachel Visualisierung
IPS_AddPermissionToUser('anna', $VisuID, 'VISUALIZATION', false);
```
## IPS_AddRoleToUser
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-addroletouser/
`bool IPS_AddRoleToUser(string $Benutzername, string $Rollenname)`
weist einem Benutzer eine Rolle zu
**Parameter**
- `$Benutzername` (string): Name des Benutzers (case-sensitiv)
- `$Rollenname` (string): Name der zuzuweisenden Rolle (case-sensitiv)
**Rückgabewert** (bool): Konnte die Funktion erfolgreich ausgeführt werden, liefert sie als Ergebnis __TRUE__, andernfalls __FALSE__.
Die Funktion weist dem Benutzer __Benutzername__ die Rolle __Rollenname__ zu. Der Benutzer erhält damit alle Berechtigungen der Rolle. Wird die Rolle @admin zugewiesen, wird der Benutzer zum Administrator. Rollen werden mit [IPS_CreateRole](management-permissions.md) erstellt.
> **Hinweis:** Diese Funktion steht nur mit Lizenzen zur Verfügung, die das RBAC-Feature ([Berechtigungssteuerung](../modules/permission-control.md)) enthalten. Andernfalls schlägt sie mit "This function is only available for licenses with the RBAC feature enabled!" fehl. Sind mehr Benutzer vorhanden als die Lizenz erlaubt (standardmäßig 10 Benutzer, der Benutzer @admin zählt nicht mit), schlägt sie mit "Your license is currently limited to 10 users. Please consider upgrading the license to more users!" fehl (die Zahl entspricht dem Limit der Lizenz).
Der aktuell angemeldete Benutzer (siehe [IPS_GetLoggedInUser](management-permissions.md)) muss Administrator sein, also der Benutzer @admin oder ein Benutzer mit der Rolle @admin. Andernfalls schlägt die Funktion mit "Administrator permissions are required for this action!" fehl.
Existiert die Rolle nicht, schlägt die Funktion mit "Role with name '…' does not exist" fehl; existiert der Benutzer nicht, mit "User with name '…' does not exist". Ist die Rolle bereits zugewiesen, schlägt sie mit "User with name '…' already has Role '…' attached" fehl. Da der Benutzer @admin implizit alle Rollen besitzt, schlägt die Funktion für ihn ebenfalls mit dieser Meldung fehl.
Siehe auch: [IPS_RemoveRoleFromUser](management-permissions.md), [IPS_UserHasRole](management-permissions.md)
**Beispiel**
```php
IPS_CreateRole('visu');
IPS_AddRoleToUser('anna', 'visu');
```
## IPS_CreateUser
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-createuser/
`bool IPS_CreateUser(string $Benutzername, int $Benutzertyp)`
erstellt einen neuen Benutzer
**Parameter**
- `$Benutzername` (string): Name des neuen Benutzers (case-sensitiv)
- `$Benutzertyp` (int): Typ des Benutzers, siehe Tabelle in der Beschreibung
0 `USER_TYPE_LOCAL`: Lokales Konto
1 `USER_TYPE_LDAP`: LDAP
**Rückgabewert** (bool): Konnte die Funktion erfolgreich ausgeführt werden, liefert sie als Ergebnis __TRUE__, andernfalls __FALSE__.
Die Funktion erstellt einen neuen Benutzer mit dem Namen __Benutzername__ und dem Typ __Benutzertyp__.
| Benutzertyp | Konstante | Beschreibung |
| ----------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------- |
| 0 | `USER_TYPE_LOCAL` | Lokales Konto, Anmeldung mit dem über [IPS_SetUserPassword](management-permissions.md) gesetzten Passwort |
| 1 | `USER_TYPE_LDAP` | LDAP, Anmeldung über den LDAP-Server mit dem über [IPS_SetUserBindDN](management-permissions.md) gesetzten BindDN |
Benutzer werden üblicherweise in der [Berechtigungssteuerung](../modules/permission-control.md) verwaltet.
Ein neuer Benutzer ist __deaktiviert__, hat kein Passwort, keinen Vor- und Nachnamen, keine Rollen und keine Berechtigungen. Damit sich der Benutzer anmelden kann, muss er mit [IPS_SetUserActive](management-permissions.md) aktiviert werden und bei einem lokalen Konto mit [IPS_SetUserPassword](management-permissions.md) ein Passwort erhalten bzw. bei einem LDAP-Konto mit [IPS_SetUserBindDN](management-permissions.md) einen BindDN.
> **Hinweis:** Diese Funktion steht nur mit Lizenzen zur Verfügung, die das RBAC-Feature ([Berechtigungssteuerung](../modules/permission-control.md)) enthalten. Andernfalls schlägt sie mit "This function is only available for licenses with the RBAC feature enabled!" fehl. Der neue Benutzer wird auf das Benutzerlimit der Lizenz angerechnet (standardmäßig 10 Benutzer, der Benutzer @admin zählt nicht mit). Würde das Limit überschritten, schlägt die Funktion mit "Your license is currently limited to 10 users. Please consider upgrading the license to more users!" fehl (die Zahl entspricht dem Limit der Lizenz).
Der aktuell angemeldete Benutzer (siehe [IPS_GetLoggedInUser](management-permissions.md)) muss Administrator sein, also der Benutzer @admin oder ein Benutzer mit der Rolle @admin. Andernfalls schlägt die Funktion mit "Administrator permissions are required for this action!" fehl.
Weitere Fehler:
* Ein leerer Name schlägt mit "User cannot be empty" fehl.
* Der Name "token" ist für die Anmeldung mit temporären Tokens reserviert und schlägt mit "User 'token' is reserved and cannot be used" fehl.
* Ein Name, der dem Lizenznehmer (E-Mail-Adresse der Lizenz) entspricht, schlägt mit "User cannot be equivalent to the licensee" fehl.
* Ein anderer Benutzertyp als 0 oder 1 schlägt mit "Unsupported User Type!" fehl.
* Existiert bereits ein Benutzer mit diesem Namen, schlägt die Funktion mit "User with name '…' already exists" fehl.
Siehe auch: [IPS_DeleteUser](management-permissions.md), [IPS_GetUser](management-permissions.md), [IPS_AddRoleToUser](management-permissions.md)
**Beispiel**
```php
IPS_CreateUser('anna', USER_TYPE_LOCAL);
IPS_SetUserPassword('anna', 'geheim');
IPS_SetUserFirstName('anna', 'Anna');
IPS_SetUserLastName('anna', 'Muster');
IPS_SetUserActive('anna', true);
```
## IPS_DeleteUser
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-deleteuser/
`bool IPS_DeleteUser(string $Benutzername)`
löscht einen Benutzer
**Parameter**
- `$Benutzername` (string): Name des Benutzers (case-sensitiv)
**Rückgabewert** (bool): Konnte die Funktion erfolgreich ausgeführt werden, liefert sie als Ergebnis __TRUE__, andernfalls __FALSE__.
Die Funktion löscht den Benutzer __Benutzername__ mitsamt seinen Rollenzuweisungen und Berechtigungen. Die Rollen selbst bleiben erhalten.
> **Hinweis:** Diese Funktion steht nur mit Lizenzen zur Verfügung, die das RBAC-Feature ([Berechtigungssteuerung](../modules/permission-control.md)) enthalten. Andernfalls schlägt sie mit "This function is only available for licenses with the RBAC feature enabled!" fehl. Das Benutzerlimit der Lizenz wird hier nicht geprüft, sodass Benutzer auch dann gelöscht werden können, wenn mehr Benutzer vorhanden sind als die Lizenz erlaubt.
Der aktuell angemeldete Benutzer (siehe [IPS_GetLoggedInUser](management-permissions.md)) muss Administrator sein, also der Benutzer @admin oder ein Benutzer mit der Rolle @admin. Andernfalls schlägt die Funktion mit "Administrator permissions are required for this action!" fehl.
Existiert der Benutzer nicht, schlägt die Funktion mit "User with name '…' does not exist" fehl. Der Benutzer @admin kann nicht verändert werden, der Versuch schlägt mit "User @admin cannot be modified!" fehl.
Siehe auch: [IPS_CreateUser](management-permissions.md), [IPS_UserExists](management-permissions.md)
**Beispiel**
```php
if (IPS_UserExists('anna')) {
IPS_DeleteUser('anna');
}
```
## IPS_GetUser
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-getuser/
`array IPS_GetUser(string $Benutzername)`
liefert Informationen über einen Benutzer
**Parameter**
- `$Benutzername` (string): Name des Benutzers (case-sensitiv)
**Rückgabewert** (array)
Folgende Informationen stehen als __key => value__ Paare zur Verfügung:
| Index | Typ | Beschreibung |
| --------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| __UserName__ | string | Name des Benutzers |
| __UserType__ | integer | Typ des Benutzers
0 `USER_TYPE_LOCAL`: Lokales Konto
1 `USER_TYPE_LDAP`: LDAP |
| __FirstName__ | string | Vorname |
| __LastName__ | string | Nachname |
| __EMail__ | string | E-Mail-Adresse |
| __BindDN__ | string | BindDN für die Anmeldung am LDAP-Server (nur für LDAP-Benutzer relevant) |
| __IsActive__ | boolean | __TRUE__, wenn der Benutzer aktiv ist und sich anmelden kann |
| __Roles__ | array | Namen der direkt zugewiesenen Rollen |
| __Permissions__ | array | Direkt zugewiesene Berechtigungen, siehe Berechtigungen |
### Berechtigungen
| Index | Typ | Beschreibung |
| ------------- | ------- | -------------------------------------------------------------------------------- |
| __ObjectID__ | integer | ID des Objekts, für das die Berechtigung gilt |
| __Operation__ | string | Name der Operation, z.B. VISUALIZATION |
| __Recursive__ | boolean | __TRUE__, wenn die Berechtigung auch für alle Objekte unterhalb des Objekts gilt |
Die Funktion liefert ein Array mit Informationen über den Benutzer __Benutzername__. Das Passwort wird nicht zurückgegeben, es wird ausschließlich als Hash gespeichert. __Roles__ und __Permissions__ enthalten nur die direkt dem Benutzer zugewiesenen Einträge; Berechtigungen, die sich über Rollen ergeben, können mit [IPS_GetRole](management-permissions.md) ausgelesen bzw. mit [IPS_UserHasPermission](management-permissions.md) geprüft werden.
Für den Benutzer @admin liefert die Funktion den Vornamen "Default" und den Nachnamen "Administrator" ohne Rollen und Berechtigungen, da dieser ohnehin alle Berechtigungen besitzt.
Existiert der Benutzer nicht, schlägt die Funktion mit "User with name '…' does not exist" fehl. Die Funktion erfordert weder das RBAC-Feature in der Lizenz noch Administratorrechte.
Siehe auch: [IPS_GetUserList](management-permissions.md), [IPS_UserExists](management-permissions.md)
**Beispiel**
```php
print_r(IPS_GetUser('anna'));
/* liefert z.B.:
Array
(
[BindDN] =>
[EMail] => anna@example.com
[FirstName] => Anna
[IsActive] => 1
[LastName] => Muster
[Permissions] => Array
(
[0] => Array
(
[ObjectID] => 12345
[Operation] => VISUALIZATION
[Recursive] =>
)
)
[Roles] => Array
(
[0] => visu
)
[UserName] => anna
[UserType] => 0
)
*/
```
## IPS_GetUserList
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-getuserlist/
`array IPS_GetUserList()`
liefert die Namen aller Benutzer
**Rückgabewert** (array): Ein Array mit den Namen aller Benutzer, inklusive des Benutzers @admin
Die Funktion liefert die Namen aller vorhandenen Benutzer. Der Benutzer @admin ist immer enthalten. Die Reihenfolge der Einträge ist nicht garantiert.
Die Funktion erfordert weder das RBAC-Feature in der Lizenz noch Administratorrechte. Detaillierte Informationen zu einem Benutzer liefert [IPS_GetUser](management-permissions.md).
**Beispiel**
```php
print_r(IPS_GetUserList());
/* liefert z.B.:
Array
(
[0] => @admin
[1] => anna
)
*/
```
## IPS_RemovePermissionFromUser
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-removepermissionfromuser/
`bool IPS_RemovePermissionFromUser(string $Benutzername, int $ObjektID, string $Operation, bool $Rekursiv)`
entfernt eine Berechtigung von einem Benutzer
**Parameter**
- `$Benutzername` (string): Name des Benutzers (case-sensitiv)
- `$ObjektID` (int): ID des Objekts, für das die Berechtigung gilt
- `$Operation` (string): Name der registrierten Operation, z.B. VISUALIZATION
- `$Rekursiv` (bool): Muss dem Wert entsprechen, mit dem die Berechtigung hinzugefügt wurde
**Rückgabewert** (bool): Konnte die Funktion erfolgreich ausgeführt werden, liefert sie als Ergebnis __TRUE__, andernfalls __FALSE__.
Die Funktion entfernt die Berechtigung für die __Operation__ auf dem Objekt __ObjektID__ vom Benutzer __Benutzername__. Die Kombination aus __ObjektID__, __Operation__ und __Rekursiv__ muss exakt einer direkt dem Benutzer zugewiesenen Berechtigung entsprechen (siehe __Permissions__ in [IPS_GetUser](management-permissions.md)). Berechtigungen, die der Benutzer über Rollen erhält, bleiben unberührt.
> **Hinweis:** Diese Funktion steht nur mit Lizenzen zur Verfügung, die das RBAC-Feature ([Berechtigungssteuerung](../modules/permission-control.md)) enthalten. Andernfalls schlägt sie mit "This function is only available for licenses with the RBAC feature enabled!" fehl. Sind mehr Benutzer vorhanden als die Lizenz erlaubt (standardmäßig 10 Benutzer, der Benutzer @admin zählt nicht mit), schlägt sie mit "Your license is currently limited to 10 users. Please consider upgrading the license to more users!" fehl (die Zahl entspricht dem Limit der Lizenz).
Der aktuell angemeldete Benutzer (siehe [IPS_GetLoggedInUser](management-permissions.md)) muss Administrator sein, also der Benutzer @admin oder ein Benutzer mit der Rolle @admin. Andernfalls schlägt die Funktion mit "Administrator permissions are required for this action!" fehl.
Weitere Prüfungen in dieser Reihenfolge: Ist die Operation nicht registriert, schlägt die Funktion mit "Cannot verify unsupported operation" fehl. Existiert der Benutzer nicht, schlägt die Funktion mit "User with name '…' does not exist" fehl. Der Benutzer @admin kann nicht verändert werden, der Versuch schlägt mit "User @admin cannot be modified!" fehl. Existiert das Objekt nicht, schlägt sie mit "Object #… does not exist" fehl. Besitzt der Benutzer die Berechtigung nicht, schlägt sie mit "User does not have this permission" fehl.
Siehe auch: [IPS_AddPermissionToUser](management-permissions.md), [IPS_RemovePermissionFromRole](management-permissions.md)
**Beispiel**
```php
$VisuID = 12345; // ID einer Kachel Visualisierung
IPS_RemovePermissionFromUser('anna', $VisuID, 'VISUALIZATION', false);
```
## IPS_RemoveRoleFromUser
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-removerolefromuser/
`bool IPS_RemoveRoleFromUser(string $Benutzername, string $Rollenname)`
entfernt eine Rolle von einem Benutzer
**Parameter**
- `$Benutzername` (string): Name des Benutzers (case-sensitiv)
- `$Rollenname` (string): Name der zu entfernenden Rolle (case-sensitiv)
**Rückgabewert** (bool): Konnte die Funktion erfolgreich ausgeführt werden, liefert sie als Ergebnis __TRUE__, andernfalls __FALSE__.
Die Funktion entfernt die Rolle __Rollenname__ vom Benutzer __Benutzername__. Die Berechtigungen der Rolle gelten danach nicht mehr für den Benutzer, die Rolle selbst bleibt erhalten.
> **Hinweis:** Diese Funktion steht nur mit Lizenzen zur Verfügung, die das RBAC-Feature ([Berechtigungssteuerung](../modules/permission-control.md)) enthalten. Andernfalls schlägt sie mit "This function is only available for licenses with the RBAC feature enabled!" fehl. Sind mehr Benutzer vorhanden als die Lizenz erlaubt (standardmäßig 10 Benutzer, der Benutzer @admin zählt nicht mit), schlägt sie mit "Your license is currently limited to 10 users. Please consider upgrading the license to more users!" fehl (die Zahl entspricht dem Limit der Lizenz).
Der aktuell angemeldete Benutzer (siehe [IPS_GetLoggedInUser](management-permissions.md)) muss Administrator sein, also der Benutzer @admin oder ein Benutzer mit der Rolle @admin. Andernfalls schlägt die Funktion mit "Administrator permissions are required for this action!" fehl.
Existiert der Benutzer nicht, schlägt die Funktion mit "User with name '…' does not exist" fehl. Ist die Rolle dem Benutzer nicht zugewiesen, schlägt sie mit "User with name '…' does not have Role '…' attached" fehl. Der Benutzer @admin kann nicht verändert werden, der Versuch schlägt mit "User @admin cannot be modified!" fehl.
Siehe auch: [IPS_AddRoleToUser](management-permissions.md), [IPS_DeleteRole](management-permissions.md)
**Beispiel**
```php
if (IPS_UserHasRole('anna', 'visu')) {
IPS_RemoveRoleFromUser('anna', 'visu');
}
```
## IPS_SetUserActive
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-setuseractive/
`bool IPS_SetUserActive(string $Benutzername, bool $Aktiv)`
aktiviert/deaktiviert einen Benutzer
**Parameter**
- `$Benutzername` (string): Name des Benutzers (case-sensitiv)
- `$Aktiv` (bool): Gibt an, ob der Benutzer aktiviert (__TRUE__) / deaktiviert (__FALSE__) werden soll
**Rückgabewert** (bool): Konnte die Funktion erfolgreich ausgeführt werden, liefert sie als Ergebnis __TRUE__, andernfalls __FALSE__.
Die Funktion aktiviert bzw. deaktiviert den Benutzer __Benutzername__. Nur aktive Benutzer können sich anmelden. So kann ein Benutzer vorübergehend gesperrt werden, ohne ihn zu löschen. Neu erstellte Benutzer sind zunächst deaktiviert (siehe [IPS_CreateUser](management-permissions.md)). Rollen und Berechtigungen des Benutzers bleiben beim Deaktivieren erhalten.
> **Hinweis:** Diese Funktion steht nur mit Lizenzen zur Verfügung, die das RBAC-Feature ([Berechtigungssteuerung](../modules/permission-control.md)) enthalten. Andernfalls schlägt sie mit "This function is only available for licenses with the RBAC feature enabled!" fehl. Sind mehr Benutzer vorhanden als die Lizenz erlaubt (standardmäßig 10 Benutzer, der Benutzer @admin zählt nicht mit), schlägt sie mit "Your license is currently limited to 10 users. Please consider upgrading the license to more users!" fehl (die Zahl entspricht dem Limit der Lizenz).
Der aktuell angemeldete Benutzer (siehe [IPS_GetLoggedInUser](management-permissions.md)) muss Administrator sein, also der Benutzer @admin oder ein Benutzer mit der Rolle @admin. Andernfalls schlägt die Funktion mit "Administrator permissions are required for this action!" fehl.
Existiert der Benutzer nicht, schlägt die Funktion mit "User with name '…' does not exist" fehl. Der Benutzer @admin kann nicht verändert werden, der Versuch schlägt mit "User @admin cannot be modified!" fehl.
**Beispiel**
```php
IPS_SetUserActive('anna', true); // Aktiviert den Benutzer
```
## IPS_SetUserBindDN
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-setuserbinddn/
`bool IPS_SetUserBindDN(string $Benutzername, string $BindDN)`
setzt den BindDN eines LDAP-Benutzers
**Parameter**
- `$Benutzername` (string): Name des Benutzers (case-sensitiv)
- `$BindDN` (string): Distinguished Name, mit dem sich der Benutzer am LDAP-Server anmeldet
**Rückgabewert** (bool): Konnte die Funktion erfolgreich ausgeführt werden, liefert sie als Ergebnis __TRUE__, andernfalls __FALSE__.
Die Funktion setzt den BindDN (Distinguished Name) des Benutzers __Benutzername__. Bei der Anmeldung eines LDAP-Benutzers (Benutzertyp 1, `USER_TYPE_LDAP`) wird mit diesem BindDN und dem eingegebenen Passwort eine Anmeldung am LDAP-Server durchgeführt, der in der [Berechtigungssteuerung](../modules/permission-control.md) konfiguriert ist. Bei der LDAP-Synchronisation der [Berechtigungssteuerung](../modules/permission-control.md) wird der BindDN automatisch gesetzt.
Der Wert kann für jeden Benutzertyp gesetzt werden, ausgewertet wird er jedoch nur für LDAP-Benutzer.
> **Hinweis:** Diese Funktion steht nur mit Lizenzen zur Verfügung, die das RBAC-Feature ([Berechtigungssteuerung](../modules/permission-control.md)) enthalten. Andernfalls schlägt sie mit "This function is only available for licenses with the RBAC feature enabled!" fehl. Sind mehr Benutzer vorhanden als die Lizenz erlaubt (standardmäßig 10 Benutzer, der Benutzer @admin zählt nicht mit), schlägt sie mit "Your license is currently limited to 10 users. Please consider upgrading the license to more users!" fehl (die Zahl entspricht dem Limit der Lizenz).
Der aktuell angemeldete Benutzer (siehe [IPS_GetLoggedInUser](management-permissions.md)) muss Administrator sein, also der Benutzer @admin oder ein Benutzer mit der Rolle @admin. Andernfalls schlägt die Funktion mit "Administrator permissions are required for this action!" fehl.
Existiert der Benutzer nicht, schlägt die Funktion mit "User with name '…' does not exist" fehl. Der Benutzer @admin kann nicht verändert werden, der Versuch schlägt mit "User @admin cannot be modified!" fehl.
**Beispiel**
```php
IPS_CreateUser('max', USER_TYPE_LDAP);
IPS_SetUserBindDN('max', 'uid=max,cn=users,dc=symcon');
IPS_SetUserActive('max', true);
```
## IPS_SetUserEMail
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-setuseremail/
`bool IPS_SetUserEMail(string $Benutzername, string $EMail)`
setzt die E-Mail-Adresse eines Benutzers
**Parameter**
- `$Benutzername` (string): Name des Benutzers (case-sensitiv)
- `$EMail` (string): Neue E-Mail-Adresse des Benutzers
**Rückgabewert** (bool): Konnte die Funktion erfolgreich ausgeführt werden, liefert sie als Ergebnis __TRUE__, andernfalls __FALSE__.
Die Funktion setzt die E-Mail-Adresse des Benutzers __Benutzername__. Der Wert wird nicht auf Gültigkeit geprüft. Der aktuelle Wert kann mit [IPS_GetUser](management-permissions.md) ausgelesen werden.
> **Hinweis:** Diese Funktion steht nur mit Lizenzen zur Verfügung, die das RBAC-Feature ([Berechtigungssteuerung](../modules/permission-control.md)) enthalten. Andernfalls schlägt sie mit "This function is only available for licenses with the RBAC feature enabled!" fehl. Sind mehr Benutzer vorhanden als die Lizenz erlaubt (standardmäßig 10 Benutzer, der Benutzer @admin zählt nicht mit), schlägt sie mit "Your license is currently limited to 10 users. Please consider upgrading the license to more users!" fehl (die Zahl entspricht dem Limit der Lizenz).
Der aktuell angemeldete Benutzer (siehe [IPS_GetLoggedInUser](management-permissions.md)) muss Administrator sein, also der Benutzer @admin oder ein Benutzer mit der Rolle @admin. Andernfalls schlägt die Funktion mit "Administrator permissions are required for this action!" fehl.
Existiert der Benutzer nicht, schlägt die Funktion mit "User with name '…' does not exist" fehl. Der Benutzer @admin kann nicht verändert werden, der Versuch schlägt mit "User @admin cannot be modified!" fehl.
**Beispiel**
```php
IPS_SetUserEMail('anna', 'anna@example.com');
```
## IPS_SetUserFirstName
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-setuserfirstname/
`bool IPS_SetUserFirstName(string $Benutzername, string $Vorname)`
setzt den Vornamen eines Benutzers
**Parameter**
- `$Benutzername` (string): Name des Benutzers (case-sensitiv)
- `$Vorname` (string): Neuer Vorname des Benutzers
**Rückgabewert** (bool): Konnte die Funktion erfolgreich ausgeführt werden, liefert sie als Ergebnis __TRUE__, andernfalls __FALSE__.
Die Funktion setzt den Vornamen des Benutzers __Benutzername__. Vor- und Nachname werden unter anderem in der Visualisierung angezeigt. Der aktuelle Wert kann mit [IPS_GetUser](management-permissions.md) ausgelesen werden.
> **Hinweis:** Diese Funktion steht nur mit Lizenzen zur Verfügung, die das RBAC-Feature ([Berechtigungssteuerung](../modules/permission-control.md)) enthalten. Andernfalls schlägt sie mit "This function is only available for licenses with the RBAC feature enabled!" fehl. Sind mehr Benutzer vorhanden als die Lizenz erlaubt (standardmäßig 10 Benutzer, der Benutzer @admin zählt nicht mit), schlägt sie mit "Your license is currently limited to 10 users. Please consider upgrading the license to more users!" fehl (die Zahl entspricht dem Limit der Lizenz).
Der aktuell angemeldete Benutzer (siehe [IPS_GetLoggedInUser](management-permissions.md)) muss Administrator sein, also der Benutzer @admin oder ein Benutzer mit der Rolle @admin. Andernfalls schlägt die Funktion mit "Administrator permissions are required for this action!" fehl.
Existiert der Benutzer nicht, schlägt die Funktion mit "User with name '…' does not exist" fehl. Der Benutzer @admin kann nicht verändert werden, der Versuch schlägt mit "User @admin cannot be modified!" fehl.
**Beispiel**
```php
IPS_SetUserFirstName('anna', 'Anna');
```
## IPS_SetUserLastName
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-setuserlastname/
`bool IPS_SetUserLastName(string $Benutzername, string $Nachname)`
setzt den Nachnamen eines Benutzers
**Parameter**
- `$Benutzername` (string): Name des Benutzers (case-sensitiv)
- `$Nachname` (string): Neuer Nachname des Benutzers
**Rückgabewert** (bool): Konnte die Funktion erfolgreich ausgeführt werden, liefert sie als Ergebnis __TRUE__, andernfalls __FALSE__.
Die Funktion setzt den Nachnamen des Benutzers __Benutzername__. Vor- und Nachname werden unter anderem in der Visualisierung angezeigt. Der aktuelle Wert kann mit [IPS_GetUser](management-permissions.md) ausgelesen werden.
> **Hinweis:** Diese Funktion steht nur mit Lizenzen zur Verfügung, die das RBAC-Feature ([Berechtigungssteuerung](../modules/permission-control.md)) enthalten. Andernfalls schlägt sie mit "This function is only available for licenses with the RBAC feature enabled!" fehl. Sind mehr Benutzer vorhanden als die Lizenz erlaubt (standardmäßig 10 Benutzer, der Benutzer @admin zählt nicht mit), schlägt sie mit "Your license is currently limited to 10 users. Please consider upgrading the license to more users!" fehl (die Zahl entspricht dem Limit der Lizenz).
Der aktuell angemeldete Benutzer (siehe [IPS_GetLoggedInUser](management-permissions.md)) muss Administrator sein, also der Benutzer @admin oder ein Benutzer mit der Rolle @admin. Andernfalls schlägt die Funktion mit "Administrator permissions are required for this action!" fehl.
Existiert der Benutzer nicht, schlägt die Funktion mit "User with name '…' does not exist" fehl. Der Benutzer @admin kann nicht verändert werden, der Versuch schlägt mit "User @admin cannot be modified!" fehl.
**Beispiel**
```php
IPS_SetUserLastName('anna', 'Muster');
```
## IPS_SetUserPassword
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-setuserpassword/
`bool IPS_SetUserPassword(string $Benutzername, string $Passwort)`
setzt das Passwort eines Benutzers
**Parameter**
- `$Benutzername` (string): Name des Benutzers (case-sensitiv)
- `$Passwort` (string): Neues Passwort des Benutzers
**Rückgabewert** (bool): Konnte die Funktion erfolgreich ausgeführt werden, liefert sie als Ergebnis __TRUE__, andernfalls __FALSE__.
Die Funktion setzt das Passwort des Benutzers __Benutzername__. Das Passwort wird nicht im Klartext, sondern ausschließlich als gesalzener Hash (PBKDF2-HMAC-SHA256) gespeichert und kann daher nicht wieder ausgelesen werden.
Das Passwort wird nur für lokale Konten (Benutzertyp 0, `USER_TYPE_LOCAL`) verwendet. Solange für ein lokales Konto kein Passwort gesetzt wurde, ist keine Anmeldung möglich. LDAP-Benutzer (Benutzertyp 1, `USER_TYPE_LDAP`) melden sich stattdessen über den LDAP-Server mit ihrem BindDN an (siehe [IPS_SetUserBindDN](management-permissions.md)), das hier gesetzte Passwort wird für sie nicht ausgewertet.
> **Hinweis:** Diese Funktion steht nur mit Lizenzen zur Verfügung, die das RBAC-Feature ([Berechtigungssteuerung](../modules/permission-control.md)) enthalten. Andernfalls schlägt sie mit "This function is only available for licenses with the RBAC feature enabled!" fehl. Sind mehr Benutzer vorhanden als die Lizenz erlaubt (standardmäßig 10 Benutzer, der Benutzer @admin zählt nicht mit), schlägt sie mit "Your license is currently limited to 10 users. Please consider upgrading the license to more users!" fehl (die Zahl entspricht dem Limit der Lizenz).
Der aktuell angemeldete Benutzer (siehe [IPS_GetLoggedInUser](management-permissions.md)) muss Administrator sein, also der Benutzer @admin oder ein Benutzer mit der Rolle @admin. Andernfalls schlägt die Funktion mit "Administrator permissions are required for this action!" fehl.
Existiert der Benutzer nicht, schlägt die Funktion mit "User with name '…' does not exist" fehl. Der Benutzer @admin kann nicht verändert werden, der Versuch schlägt mit "User @admin cannot be modified!" fehl.
**Beispiel**
```php
IPS_SetUserPassword('anna', 'geheim');
```
## IPS_UserExists
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-userexists/
`bool IPS_UserExists(string $Benutzername)`
prüft, ob ein bestimmter Benutzer existiert
**Parameter**
- `$Benutzername` (string): Name des zu prüfenden Benutzers (case-sensitiv)
**Rückgabewert** (bool): Existiert der Benutzer, wird __TRUE__ zurückgegeben, andernfalls __FALSE__.
Die Funktion prüft, ob ein Benutzer mit dem Namen __Benutzername__ existiert. Groß- und Kleinschreibung werden unterschieden. Der Benutzer @admin existiert immer, der Sonderbenutzer @unknown ist hingegen kein echter Benutzer, sodass die Funktion für ihn __FALSE__ liefert.
Die Funktion erfordert weder das RBAC-Feature in der Lizenz noch Administratorrechte.
**Beispiel**
```php
if (IPS_UserExists('anna')) {
echo 'Benutzer existiert!';
}
```
## IPS_UserHasPermission
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-userhaspermission/
`bool IPS_UserHasPermission(string $Benutzername, int $ObjektID, string $Operation)`
prüft, ob ein Benutzer eine Operation auf einem Objekt ausführen darf
**Parameter**
- `$Benutzername` (string): Name des Benutzers (case-sensitiv)
- `$ObjektID` (int): ID des zu prüfenden Objekts
- `$Operation` (string): Name der registrierten Operation, z.B. VISUALIZATION
**Rückgabewert** (bool): Hat der Benutzer die Berechtigung, wird __TRUE__ zurückgegeben, andernfalls __FALSE__.
Die Funktion prüft, ob der Benutzer __Benutzername__ die __Operation__ auf dem Objekt __ObjektID__ ausführen darf. Berücksichtigt werden die Berechtigungen des Benutzers selbst sowie die Berechtigungen aller seiner Rollen. Ob der Benutzer aktiv ist, spielt für die Prüfung keine Rolle.
Die Prüfung erfolgt in dieser Reihenfolge: Ist die Operation nicht registriert, schlägt die Funktion mit "Cannot verify unsupported operation" fehl; existiert das Objekt nicht, mit "Object #… does not exist". Der Benutzer @admin hat immer alle Berechtigungen, der Benutzer @unknown nie. Für alle anderen Benutzer gilt: Existiert der Benutzer nicht, schlägt die Funktion mit "User with name '…' does not exist" fehl. Hat der Benutzer die Rolle @admin, wird __TRUE__ geliefert. Andernfalls wird __TRUE__ geliefert, wenn eine Berechtigung des Benutzers selbst oder einer seiner Rollen die Operation für das Objekt gewährt.
Eine rekursive Berechtigung gilt für das Objekt selbst und für alle Objekte darunter im Objektbaum (Kinder, Kindeskinder usw.). Eine rekursive Berechtigung auf das Wurzelobjekt (ID 0) gilt somit für alle Objekte. Eine nicht rekursive Berechtigung gilt ausschließlich für genau dieses Objekt. Links werden dabei nicht verfolgt, maßgeblich ist allein die Position des geprüften Objekts im Objektbaum.
Operationen werden von Modulen registriert. Aktuell registriert die Visualisierung die Operation __VISUALIZATION__ (Zugriff auf eine Visualisierung mit all ihren Objekten), sobald eine Visualisierungsinstanz (z.B. [Kachel Visualisierung](../modules/tile-visualization.md) oder [WebFront Visualisierung](../modules/webfront-visualization.md)) vorhanden ist. Geprüft wird sie auf die ID der Visualisierungsinstanz. Der Name der Operation ist case-sensitiv. Ist die Operation nicht registriert, schlägt die Funktion mit "Cannot verify unsupported operation" fehl.
Die Funktion erfordert weder das RBAC-Feature in der Lizenz noch Administratorrechte. Für den aktuell angemeldeten Benutzer kann [IPS_HasPermission](management-permissions.md) verwendet werden.
**Beispiel**
```php
$VisuID = 12345; // ID einer Kachel Visualisierung
IPS_AddPermissionToUser('anna', 0, 'VISUALIZATION', true); // rekursiv ab dem Wurzelobjekt
var_dump(IPS_UserHasPermission('anna', $VisuID, 'VISUALIZATION'));
/* liefert:
bool(true)
*/
```
## IPS_UserHasRole
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-userhasrole/
`bool IPS_UserHasRole(string $Benutzername, string $Rollenname)`
prüft, ob einem Benutzer eine bestimmte Rolle zugewiesen ist
**Parameter**
- `$Benutzername` (string): Name des Benutzers (case-sensitiv)
- `$Rollenname` (string): Name der zu prüfenden Rolle (case-sensitiv)
**Rückgabewert** (bool): Ist dem Benutzer die Rolle zugewiesen, wird __TRUE__ zurückgegeben, andernfalls __FALSE__.
Die Funktion prüft, ob dem Benutzer __Benutzername__ die Rolle __Rollenname__ zugewiesen ist. Die Rolle selbst muss dafür nicht existieren.
Für den Benutzer @admin liefert die Funktion für jede Rolle __TRUE__, für den Sonderbenutzer @unknown immer __FALSE__. Existiert der Benutzer nicht, schlägt die Funktion mit "User with name '…' does not exist" fehl. Die Funktion erfordert weder das RBAC-Feature in der Lizenz noch Administratorrechte.
Siehe auch: [IPS_AddRoleToUser](management-permissions.md), [IPS_UserIsAdministrator](management-permissions.md)
**Beispiel**
```php
if (IPS_UserHasRole('anna', 'visu')) {
echo 'Anna hat die Rolle visu';
}
```
## IPS_UserIsAdministrator
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/benutzer/ips-userisadministrator/
`bool IPS_UserIsAdministrator(string $Benutzername)`
prüft, ob ein Benutzer Administrator ist
**Parameter**
- `$Benutzername` (string): Name des Benutzers (case-sensitiv)
**Rückgabewert** (bool): Ist der Benutzer Administrator, wird __TRUE__ zurückgegeben, andernfalls __FALSE__.
Die Funktion prüft, ob der Benutzer __Benutzername__ Administrator ist. Administrator ist der Benutzer @admin sowie jeder Benutzer, dem die Rolle @admin zugewiesen wurde (siehe [IPS_AddRoleToUser](management-permissions.md)). Für den Sonderbenutzer @unknown liefert die Funktion __FALSE__.
Existiert der Benutzer nicht, schlägt die Funktion mit "User with name '…' does not exist" fehl. Die Funktion erfordert weder das RBAC-Feature in der Lizenz noch Administratorrechte.
Für den aktuell angemeldeten Benutzer kann [IPS_IsAdministrator](management-permissions.md) verwendet werden.
**Beispiel**
```php
var_dump(IPS_UserIsAdministrator('anna'));
/* liefert z.B.:
bool(false)
*/
```
## IPS_GetLoggedInUser
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/ips-getloggedinuser/
`string IPS_GetLoggedInUser()`
liefert den Namen des Benutzers, in dessen Kontext die aktuelle Ausführung läuft
**Rückgabewert** (string): Name des aktuell angemeldeten Benutzers, z.B. "@admin" oder "@unknown"
Die Funktion liefert den Namen des Benutzers, in dessen Kontext die aktuelle Ausführung (z.B. ein Skript) läuft. Ein Skript übernimmt dabei den Benutzer des Kontexts, der es gestartet hat. Wird ein Skript z.B. durch eine Aktion in einer Visualisierung gestartet, an der ein Benutzer angemeldet ist, liefert die Funktion den Namen dieses Benutzers.
Folgende Sonderbenutzer existieren:
| Benutzer | Beschreibung |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| __@admin__ | Administrator mit allen Berechtigungen. Die Anmeldung erfolgt mit der Lizenz (E-Mail-Adresse) und dem Kennwort für den Fernzugriff, z.B. an der Konsole. |
| __@unknown__ | Es ist kein Benutzer angemeldet. Dieser Benutzer hat keinerlei Berechtigungen. |
Die Funktion erfordert kein RBAC-Feature in der Lizenz. Der ausführende Benutzer wird auch in der Ablaufverfolgung als __ExecutionUser__ angezeigt, siehe [IPS_GetTraces](../developer/internal-command-reference/helpers.md).
Siehe auch: [IPS_IsAdministrator](management-permissions.md), [IPS_IsUnknown](management-permissions.md), [IPS_HasPermission](management-permissions.md)
**Beispiel**
```php
echo IPS_GetLoggedInUser();
/* liefert z.B.:
@admin
*/
```
## IPS_HasPermission
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/ips-haspermission/
`bool IPS_HasPermission(int $ObjektID, string $Operation)`
prüft, ob der aktuell angemeldete Benutzer eine Operation auf einem Objekt ausführen darf
**Parameter**
- `$ObjektID` (int): ID des zu prüfenden Objekts
- `$Operation` (string): Name der registrierten Operation, z.B. VISUALIZATION
**Rückgabewert** (bool): Hat der aktuell angemeldete Benutzer die Berechtigung, wird __TRUE__ zurückgegeben, andernfalls __FALSE__.
Die Funktion prüft, ob der Benutzer, in dessen Kontext die aktuelle Ausführung läuft (siehe [IPS_GetLoggedInUser](management-permissions.md)), die __Operation__ auf dem Objekt __ObjektID__ ausführen darf. Berücksichtigt werden die Berechtigungen des Benutzers selbst sowie die Berechtigungen aller seiner Rollen. Sie entspricht [IPS_UserHasPermission](management-permissions.md) für den aktuellen Benutzer.
Die Prüfung erfolgt in dieser Reihenfolge: Ist die Operation nicht registriert, schlägt die Funktion mit "Cannot verify unsupported operation" fehl; existiert das Objekt nicht, mit "Object #… does not exist". Der Benutzer @admin hat immer alle Berechtigungen, der Benutzer @unknown nie. Für alle anderen Benutzer gilt: Existiert der Benutzer nicht, schlägt die Funktion mit "User with name '…' does not exist" fehl. Hat der Benutzer die Rolle @admin, wird __TRUE__ geliefert. Andernfalls wird __TRUE__ geliefert, wenn eine Berechtigung des Benutzers selbst oder einer seiner Rollen die Operation für das Objekt gewährt.
Eine rekursive Berechtigung gilt für das Objekt selbst und für alle Objekte darunter im Objektbaum (Kinder, Kindeskinder usw.). Eine rekursive Berechtigung auf das Wurzelobjekt (ID 0) gilt somit für alle Objekte. Eine nicht rekursive Berechtigung gilt ausschließlich für genau dieses Objekt. Links werden dabei nicht verfolgt, maßgeblich ist allein die Position des geprüften Objekts im Objektbaum.
Operationen werden von Modulen registriert. Aktuell registriert die Visualisierung die Operation __VISUALIZATION__ (Zugriff auf eine Visualisierung mit all ihren Objekten), sobald eine Visualisierungsinstanz (z.B. [Kachel Visualisierung](../modules/tile-visualization.md) oder [WebFront Visualisierung](../modules/webfront-visualization.md)) vorhanden ist. Geprüft wird sie auf die ID der Visualisierungsinstanz. Der Name der Operation ist case-sensitiv. Ist die Operation nicht registriert, schlägt die Funktion mit "Cannot verify unsupported operation" fehl.
Die Funktion erfordert kein RBAC-Feature in der Lizenz.
**Beispiel**
```php
$VisuID = 12345; // ID einer Kachel Visualisierung
if (IPS_HasPermission($VisuID, 'VISUALIZATION')) {
echo 'Zugriff erlaubt';
}
```
## IPS_IsAdministrator
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/ips-isadministrator/
`bool IPS_IsAdministrator()`
prüft, ob der aktuell angemeldete Benutzer Administrator ist
**Rückgabewert** (bool): Ist der aktuell angemeldete Benutzer Administrator, wird __TRUE__ zurückgegeben, andernfalls __FALSE__.
Die Funktion prüft, ob der Benutzer, in dessen Kontext die aktuelle Ausführung läuft (siehe [IPS_GetLoggedInUser](management-permissions.md)), Administrator ist. Administrator ist der Benutzer @admin sowie jeder Benutzer, dem die Rolle @admin zugewiesen wurde. Für den Benutzer @unknown liefert die Funktion immer __FALSE__.
Administratorrechte sind z.B. für alle Funktionen erforderlich, die Benutzer und Rollen verändern. Die Funktion erfordert kein RBAC-Feature in der Lizenz.
Um einen beliebigen Benutzer zu prüfen, kann [IPS_UserIsAdministrator](management-permissions.md) verwendet werden.
**Beispiel**
```php
if (IPS_IsAdministrator()) {
echo 'Das Skript läuft mit Administratorrechten';
}
```
## IPS_IsUnknown
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/ips-isunknown/
`bool IPS_IsUnknown()`
prüft, ob die aktuelle Ausführung ohne angemeldeten Benutzer läuft
**Rückgabewert** (bool): Ist der aktuelle Benutzer @unknown, wird __TRUE__ zurückgegeben, andernfalls __FALSE__.
Die Funktion prüft, ob die aktuelle Ausführung ohne angemeldeten Benutzer läuft, also ob [IPS_GetLoggedInUser](management-permissions.md) den Sonderbenutzer @unknown liefert. Dies ist der Fall, wenn im auslösenden Kontext kein Benutzer angemeldet bzw. keine Anmeldung erfolgreich war. Der Benutzer @unknown besitzt keinerlei Berechtigungen und ist kein Administrator.
Die Funktion erfordert kein RBAC-Feature in der Lizenz.
**Beispiel**
```php
if (IPS_IsUnknown()) {
echo 'Kein Benutzer angemeldet';
} else {
echo 'Angemeldet als ' . IPS_GetLoggedInUser();
}
```
## Rollen
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/rollen/
## IPS_AddPermissionToRole
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/rollen/ips-addpermissiontorole/
`bool IPS_AddPermissionToRole(string $Rolle, int $ObjektID, string $Operation, bool $Rekursiv)`
fügt einer Rolle eine Berechtigung hinzu
**Parameter**
- `$Rolle` (string): Name der Rolle
- `$ObjektID` (int): ID des Objekts, für das die Berechtigung gilt
- `$Operation` (string): Name der Operation, z.B. VISUALIZATION
- `$Rekursiv` (bool): Gibt an, ob die Berechtigung auch für alle Objekte unterhalb von __ObjektID__ gilt (__TRUE__) oder nur für das Objekt selbst (__FALSE__)
**Rückgabewert** (bool): Konnte die Funktion erfolgreich ausgeführt werden, liefert sie als Ergebnis __TRUE__, andernfalls __FALSE__.
Die Funktion fügt der Rolle __Rolle__ die Berechtigung hinzu, die __Operation__ auf dem Objekt __ObjektID__ auszuführen. Alle Benutzer, denen die Rolle zugewiesen ist, erhalten damit diese Berechtigung.
Ist __Rekursiv__ aktiviert, gilt die Berechtigung für das Objekt und alle darunterliegenden Objekte – eine rekursive Berechtigung auf das Wurzelobjekt (ID 0) gilt somit für alle Objekte. Eine Berechtigung wird durch __ObjektID__, __Operation__ und __Rekursiv__ gemeinsam bestimmt; dieselbe __ObjektID__ und __Operation__ kann also einmal rekursiv und einmal nicht rekursiv eingetragen werden.
Als __Operation__ muss eine im System registrierte Operation angegeben werden, ansonsten schlägt die Funktion mit "Cannot verify unsupported operation" fehl. Die Groß-/Kleinschreibung ist dabei zu beachten. Aktuell gibt es die Operation `VISUALIZATION` (Zugriff auf eine Visualisierung mit all ihren Objekten). Sie wird registriert, sobald eine Visualisierungsinstanz (z.B. [Kachel Visualisierung](../modules/tile-visualization.md)) existiert, und wird auf die ID der Visualisierungsinstanz geprüft.
Die Prüfungen erfolgen in dieser Reihenfolge: Operation, Rolle ("Role with name '…' does not exist"), Objekt ("Object #… does not exist"). Ist dieselbe Berechtigung bereits vorhanden, schlägt die Funktion mit "Role already has this permission" fehl.
Der ausführende Benutzer muss Administrator sein (siehe [IPS_IsAdministrator](management-permissions.md)), ansonsten schlägt die Funktion mit "Administrator permissions are required for this action!" fehl.
> **Hinweis:** Die Rollenverwaltung steht nur mit einer Lizenz zur Verfügung, welche das RBAC-Feature enthält. Andernfalls schlägt die Funktion mit "This function is only available for licenses with the RBAC feature enabled!" fehl. Sind mehr Benutzer angelegt, als die Lizenz erlaubt, schlägt die Funktion mit "Your license is currently limited to … users. Please consider upgrading the license to more users!" fehl.
**Beispiel**
```php
// Die Rolle darf die Visualisierung mit der ID 12345 öffnen
IPS_AddPermissionToRole('Bewohner', 12345, 'VISUALIZATION', false);
```
## IPS_CreateRole
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/rollen/ips-createrole/
`bool IPS_CreateRole(string $Rolle)`
erstellt eine neue Rolle
**Parameter**
- `$Rolle` (string): Name der zu erstellenden Rolle
**Rückgabewert** (bool): Konnte die Funktion erfolgreich ausgeführt werden, liefert sie als Ergebnis __TRUE__, andernfalls __FALSE__.
Die Funktion erstellt eine neue Rolle mit dem Namen __Rolle__. Eine neue Rolle besitzt noch keine Berechtigungen. Diese werden über [IPS_AddPermissionToRole](management-permissions.md) hinzugefügt. Anschließend kann die Rolle über [IPS_AddRoleToUser](management-permissions.md) beliebigen Benutzern zugewiesen werden, die dadurch alle Berechtigungen der Rolle erhalten. Rollen können auch über die [Berechtigungssteuerung](../modules/permission-control.md) verwaltet werden.
Der Name darf nicht leer sein ("Role cannot be empty") und muss eindeutig sein, ansonsten schlägt die Funktion mit "Role with name '…' already exists" fehl. Die Groß-/Kleinschreibung wird unterschieden. Die Rolle @admin existiert immer und gewährt alle Berechtigungen.
Der ausführende Benutzer muss Administrator sein (siehe [IPS_IsAdministrator](management-permissions.md)), ansonsten schlägt die Funktion mit "Administrator permissions are required for this action!" fehl.
> **Hinweis:** Die Rollenverwaltung steht nur mit einer Lizenz zur Verfügung, welche das RBAC-Feature enthält. Andernfalls schlägt die Funktion mit "This function is only available for licenses with the RBAC feature enabled!" fehl. Sind mehr Benutzer angelegt, als die Lizenz erlaubt, schlägt die Funktion mit "Your license is currently limited to … users. Please consider upgrading the license to more users!" fehl.
**Beispiel**
```php
if (!IPS_RoleExists('Bewohner')) {
IPS_CreateRole('Bewohner');
}
// Zugriff auf die Visualisierung mit der ID 12345 erlauben
IPS_AddPermissionToRole('Bewohner', 12345, 'VISUALIZATION', false);
// Rolle einem Benutzer zuweisen
IPS_AddRoleToUser('anna', 'Bewohner');
```
## IPS_DeleteRole
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/rollen/ips-deleterole/
`bool IPS_DeleteRole(string $Rolle)`
löscht eine Rolle
**Parameter**
- `$Rolle` (string): Name der zu löschenden Rolle
**Rückgabewert** (bool): Konnte die Funktion erfolgreich ausgeführt werden, liefert sie als Ergebnis __TRUE__, andernfalls __FALSE__.
Die Funktion löscht die Rolle mit dem Namen __Rolle__ mitsamt ihren Berechtigungen. Die Rolle wird dabei automatisch von allen Benutzern entfernt, denen sie zugewiesen war – diese verlieren somit alle Berechtigungen, die sie nur über diese Rolle erhalten haben.
Existiert die Rolle nicht, schlägt die Funktion mit "Role with name '…' does not exist" fehl. Die Rolle @admin kann nicht gelöscht werden ("Role @admin cannot be deleted!").
Der ausführende Benutzer muss Administrator sein (siehe [IPS_IsAdministrator](management-permissions.md)), ansonsten schlägt die Funktion mit "Administrator permissions are required for this action!" fehl.
> **Hinweis:** Die Rollenverwaltung steht nur mit einer Lizenz zur Verfügung, welche das RBAC-Feature enthält. Andernfalls schlägt die Funktion mit "This function is only available for licenses with the RBAC feature enabled!" fehl. Sind mehr Benutzer angelegt, als die Lizenz erlaubt, schlägt die Funktion mit "Your license is currently limited to … users. Please consider upgrading the license to more users!" fehl.
**Beispiel**
```php
if (IPS_RoleExists('Bewohner')) {
IPS_DeleteRole('Bewohner');
}
```
## IPS_GetRole
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/rollen/ips-getrole/
`array IPS_GetRole(string $Rolle)`
liefert Informationen über eine Rolle
**Parameter**
- `$Rolle` (string): Name der Rolle
**Rückgabewert** (array)
Folgende Informationen stehen als __key => value__ Paare zur Verfügung:
| Index | Typ | Beschreibung |
| --------------- | ------ | --------------------------------------------------------------- |
| __RoleName__ | string | Name der Rolle |
| __Permissions__ | array | Liste der Berechtigungen der Rolle (siehe Berechtigungstabelle) |
__Berechtigungstabelle__
| Index | Typ | Beschreibung |
| ------------- | ------- | ------------------------------------------------------------------ |
| __ObjectID__ | integer | ID des Objekts, für das die Berechtigung gilt |
| __Operation__ | string | Name der Operation, z.B. VISUALIZATION |
| __Recursive__ | boolean | Die Berechtigung gilt auch für alle Objekte unterhalb von ObjectID |
Die Funktion liefert den Namen und die Berechtigungen der Rolle mit dem Namen __Rolle__. Existiert die Rolle nicht, schlägt die Funktion mit "Role with name '…' does not exist" fehl.
Die Rolle @admin enthält keine Einträge in __Permissions__, gewährt aber trotzdem alle Berechtigungen. Ob eine Rolle eine bestimmte Berechtigung hat, prüft [IPS_RoleHasPermission](management-permissions.md). Die Funktion setzt weder Administratorrechte noch das RBAC-Feature der Lizenz voraus.
**Beispiel**
```php
print_r(IPS_GetRole('Bewohner'));
/* liefert z.B.:
Array
(
[Permissions] => Array
(
[0] => Array
(
[ObjectID] => 12345
[Operation] => VISUALIZATION
[Recursive] =>
)
)
[RoleName] => Bewohner
)
*/
```
## IPS_GetRoleList
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/rollen/ips-getrolelist/
`array IPS_GetRoleList()`
liefert die Namen aller Rollen
**Rückgabewert** (array): Ein Array mit den Namen aller vorhandenen Rollen.
Die Funktion liefert die Namen aller Rollen, einschließlich der immer vorhandenen Rolle @admin. Die Reihenfolge der Einträge ist nicht garantiert. Details einer Rolle liefert [IPS_GetRole](management-permissions.md). Die Funktion setzt weder Administratorrechte noch das RBAC-Feature der Lizenz voraus.
**Beispiel**
```php
print_r(IPS_GetRoleList());
/* liefert z.B.:
Array
(
[0] => @admin
[1] => Bewohner
)
*/
```
## IPS_RemovePermissionFromRole
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/rollen/ips-removepermissionfromrole/
`bool IPS_RemovePermissionFromRole(string $Rolle, int $ObjektID, string $Operation, bool $Rekursiv)`
entfernt eine Berechtigung von einer Rolle
**Parameter**
- `$Rolle` (string): Name der Rolle
- `$ObjektID` (int): ID des Objekts, für das die Berechtigung gilt
- `$Operation` (string): Name der Operation, z.B. VISUALIZATION
- `$Rekursiv` (bool): Gibt an, ob die Berechtigung auch für alle Objekte unterhalb von __ObjektID__ gilt (__TRUE__) oder nur für das Objekt selbst (__FALSE__)
**Rückgabewert** (bool): Konnte die Funktion erfolgreich ausgeführt werden, liefert sie als Ergebnis __TRUE__, andernfalls __FALSE__.
Die Funktion entfernt die Berechtigung, die __Operation__ auf dem Objekt __ObjektID__ auszuführen, von der Rolle __Rolle__. __ObjektID__, __Operation__ und __Rekursiv__ müssen genau mit der beim Hinzufügen über [IPS_AddPermissionToRole](management-permissions.md) angegebenen Berechtigung übereinstimmen (siehe [IPS_GetRole](management-permissions.md)), ansonsten schlägt die Funktion mit "Role does not have this permission" fehl.
Als __Operation__ muss eine im System registrierte Operation angegeben werden, ansonsten schlägt die Funktion mit "Cannot verify unsupported operation" fehl. Die Groß-/Kleinschreibung ist dabei zu beachten. Aktuell gibt es die Operation `VISUALIZATION` (Zugriff auf eine Visualisierung mit all ihren Objekten). Sie wird registriert, sobald eine Visualisierungsinstanz (z.B. [Kachel Visualisierung](../modules/tile-visualization.md)) existiert, und wird auf die ID der Visualisierungsinstanz geprüft.
Die Prüfungen erfolgen in dieser Reihenfolge: Operation, Rolle ("Role with name '…' does not exist"), Objekt ("Object #… does not exist").
Der ausführende Benutzer muss Administrator sein (siehe [IPS_IsAdministrator](management-permissions.md)), ansonsten schlägt die Funktion mit "Administrator permissions are required for this action!" fehl.
> **Hinweis:** Die Rollenverwaltung steht nur mit einer Lizenz zur Verfügung, welche das RBAC-Feature enthält. Andernfalls schlägt die Funktion mit "This function is only available for licenses with the RBAC feature enabled!" fehl. Sind mehr Benutzer angelegt, als die Lizenz erlaubt, schlägt die Funktion mit "Your license is currently limited to … users. Please consider upgrading the license to more users!" fehl.
**Beispiel**
```php
// Die Rolle darf die Visualisierung mit der ID 12345 nicht mehr öffnen
IPS_RemovePermissionFromRole('Bewohner', 12345, 'VISUALIZATION', false);
```
## IPS_RoleExists
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/rollen/ips-roleexists/
`bool IPS_RoleExists(string $Rolle)`
prüft, ob eine Rolle existiert
**Parameter**
- `$Rolle` (string): Name der zu prüfenden Rolle
**Rückgabewert** (bool): Falls die Rolle existiert, wird __TRUE__ zurückgemeldet, andernfalls __FALSE__.
Die Funktion prüft, ob eine Rolle mit dem Namen __Rolle__ existiert. Die Groß-/Kleinschreibung wird unterschieden. Die Rolle @admin existiert immer. Die Funktion setzt weder Administratorrechte noch das RBAC-Feature der Lizenz voraus.
**Beispiel**
```php
if (IPS_RoleExists('Bewohner')) {
echo 'Rolle existiert bereits!';
}
```
## IPS_RoleHasPermission
Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/berechtigungsverwaltung/rollen/ips-rolehaspermission/
`bool IPS_RoleHasPermission(string $Rolle, int $ObjektID, string $Operation)`
prüft, ob eine Rolle eine Berechtigung für ein Objekt hat
**Parameter**
- `$Rolle` (string): Name der Rolle
- `$ObjektID` (int): ID des zu prüfenden Objekts
- `$Operation` (string): Name der Operation, z.B. VISUALIZATION
**Rückgabewert** (bool): Hat die Rolle die Berechtigung, wird __TRUE__ zurückgemeldet, andernfalls __FALSE__.
Die Funktion prüft, ob die Rolle __Rolle__ die __Operation__ auf dem Objekt __ObjektID__ ausführen darf. Das ist der Fall, wenn die Rolle eine Berechtigung mit dieser Operation direkt für __ObjektID__ besitzt oder eine rekursive Berechtigung für __ObjektID__ oder eines der übergeordneten Objekte (bis hin zum Wurzelobjekt mit der ID 0). Die Rolle @admin hat immer alle Berechtigungen.
Es werden nur die Berechtigungen der Rolle berücksichtigt. Ob ein Benutzer – über seine eigenen Berechtigungen oder eine seiner Rollen – berechtigt ist, prüft [IPS_UserHasPermission](management-permissions.md).
Die Prüfungen erfolgen in dieser Reihenfolge: Operation ("Cannot verify unsupported operation"), Objekt ("Object #… does not exist"), Rolle ("Role with name '…' does not exist"). Die Operation muss im System registriert sein; aktuell gibt es die Operation `VISUALIZATION`, sobald eine Visualisierungsinstanz existiert. Die Funktion setzt weder Administratorrechte noch das RBAC-Feature der Lizenz voraus.
**Beispiel**
```php
if (IPS_RoleHasPermission('Bewohner', 12345, 'VISUALIZATION')) {
echo 'Die Rolle darf die Visualisierung öffnen';
}
```