> For the complete documentation index, see [llms.txt](https://docs.ninox.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ninox.com/ninox-scripting/de/automate-your-workflows/work-with-functions/users-and-roles.md).

# Nutzer und Rollen

Lerne, wie du Nutzerdetails liest, Rollen und Admin-Status prüfst und Skripte an App-, Sprach- und Arbeitsbereichskontext anpasst.

Mit diesen Funktionen personalisierst du Workflows und schützt sensible Aktionen. Du liest Details zum aktuellen Nutzer, prüfst Rollen, erkennst den Admin-Status und passt das Verhalten an App-, Sprache- und Arbeitsbereichskontext an.

In diesem Kapitel lernst du, wie du:

* Details zum aktuellen Nutzer liest.
* Rollen vor sensiblen Aktionen prüfst.
* Admin-Nutzer und den Admin-Modus erkennst.
* Skripte an die aktuelle App und Sprache anpasst.
* Arbeitsbereich-, Datenbank- und Tabellenkontext prüfst.

<table><thead><tr><th width="220.94140625">Funktion (A-Z)</th><th>Aufgabe</th></tr></thead><tbody><tr><td><code>assignUserRoles()</code></td><td>Weist einem Nutzer bestimmte Rollen zu</td></tr><tr><td><code>clientLang()</code></td><td>Gibt die aktuelle Client-Sprache zurück</td></tr><tr><td><code>isAdminMode()</code></td><td>Prüft, ob die UI im Admin-Modus ist</td></tr><tr><td><code>removeUserRoles()</code></td><td>Entfernt bestimmte Rollen von einem Nutzer</td></tr><tr><td><code>user()</code></td><td>Gibt den aktuellen Nutzerwert zurück</td></tr><tr><td><code>userEmail()</code></td><td>Gibt die E-Mail-Adresse des aktuellen Nutzers zurück</td></tr><tr><td><code>userFirstName()</code></td><td>Gibt den Vornamen des aktuellen Nutzers zurück</td></tr><tr><td><code>userFullName()</code></td><td>Gibt den vollständigen Namen des aktuellen Nutzers zurück</td></tr><tr><td><code>userHasRole()</code></td><td>Prüft, ob der aktuelle Nutzer eine bestimmte Rolle hat</td></tr><tr><td><code>userId()</code></td><td>Gibt die ID des aktuellen Nutzers zurück</td></tr><tr><td><code>userIsAdmin()</code></td><td>Prüft, ob der aktuelle Nutzer ein Admin ist</td></tr><tr><td><code>userLastName()</code></td><td>Gibt den Nachnamen des aktuellen Nutzers zurück</td></tr><tr><td><code>userName()</code></td><td>Gibt den Namen des aktuellen Nutzers zurück</td></tr><tr><td><code>userRole()</code></td><td>Gibt die primäre Rolle des aktuellen Nutzers zurück</td></tr><tr><td><code>userRoles()</code></td><td>Gibt die Rollen des aktuellen Nutzers zurück</td></tr><tr><td><code>users()</code></td><td>Gibt alle Nutzerwerte des Arbeitsbereichs zurück</td></tr></tbody></table>

## Details zum aktuellen Nutzer lesen

Nutze diese Funktionen, wenn du Meldungen personalisieren, Nutzerzuordnungen speichern oder anzeigen willst, wer eine Aktion ausgeführt hat.

### Mit `user()` den aktuellen Nutzerwert holen <a href="#get-user-details" id="get-user-details"></a>

Nutze `user()`, wenn du den aktuellen Nutzerwert brauchst oder einen bestimmten Nutzerwert im Arbeitsbereich suchen willst.

Nutze es, wenn du:

* direkt auf den aktuellen Nutzer verweisen willst.
* den Nutzer an eine andere Funktion oder einen Vergleich übergeben willst.
* nutzerbezogene Workflow-Logik bauen willst.
* den aktuellen Nutzer mit einem Nutzerfeld vergleichen willst.

`user()`\
`user(string)`

* `string` der Nutzername oder die Nutzer-Id

`user()` gibt einen Nutzerwert zurück

{% hint style="info" %}
Der Nutzerwert ist eine Id als `string` mit der Zusatzinformation, dass sie sich auf einen Ninox-Nutzer im aktuellen Arbeitsbereich bezieht.
{% endhint %}

Wenn der angegebene Name oder die Id nicht zu einem Mitglied im Arbeitsbereich passt, gibt `user(string)` keinen Wert zurück.

#### Schauen wir uns einige Beispiele an:

```ninox
user()
```

Gibt den aktuellen Nutzerwert zurück.

```ninox
user("Jane Doe")
```

Gibt den Nutzerwert zurück und zeigt den Namen des Nutzers an, wenn die Person Mitglied im Arbeitsbereich ist. Andernfalls gibt die Funktion keinen Wert zurück.

```ninox
user("LK9qZNFr2Y5xKcKAFp")
```

Gibt den Nutzerwert zurück und zeigt den Namen des Nutzers an, wenn die Person Mitglied im Arbeitsbereich ist. Andernfalls gibt die Funktion keinen Wert zurück.

```ninox
user() = user("Max Mustermann") or user() = user("Maria Garcia")
```

Gibt `true` zurück, wenn der aktuelle Nutzer einem der beiden Nutzer entspricht.

```ninox
user() = assigned_to
```

Gibt `true` zurück, wenn der aktuelle Nutzer dem Wert im Nutzerfeld `assigned_to` entspricht.

### Identitätsfelder von Nutzern lesen <a href="#read-user-identity-fields" id="read-user-identity-fields"></a>

Nutze diese Funktionen, wenn du einen bestimmten Teil der Identität des aktuellen Nutzers brauchst.

Nutze sie, wenn du:

* eine persönliche Begrüßung anzeigen willst.
* speichern willst, wer eine Aktion ausgelöst hat.
* die E-Mail-Adresse des Nutzers in Freigabe- oder Nachrichten-Workflows verwenden willst.

`userId()` gibt die interne ID des aktuellen Nutzers zurück.\
`userId(Nutzer)` gibt die interne ID des Nutzers zurück, der im Feld "Nutzer" gespeichert ist.\
`userName()` gibt den Anzeigenamen des aktuellen Nutzers zurück.\
`userName(Nutzer)` gibt den Anzeigenamen des Nutzers zurück, der im Feld "Nutzer" gespeichert ist.\
`userEmail()` gibt die E-Mail-Adresse des aktuellen Nutzers zurück.\
`userEmail(Nutzer)` gibt die E-Mail-Adresse des Nutzers zurück, der im Feld "Nutzer" gespeichert ist.\
`userFirstName()` gibt den Vornamen des aktuellen Nutzers zurück.\
`userFirstName(Nutzer)` gibt den Vornamen des Nutzers zurück, der im Feld "Nutzer" gespeichert ist.\
`userLastName()` gibt den Nachnamen des aktuellen Nutzers zurück.\
`userLastName(Nutzer)` gibt den Nachnamen des Nutzers zurück, der im Feld "Nutzer" gespeichert ist.\
`userFullName()` gibt den vollständigen Namen des aktuellen Nutzers zurück.\
`userFullName(Nutzer)` gibt den vollständigen Namen des Nutzers zurück, der im Feld "Nutzer" gespeichert ist.

#### Schauen wir uns ein Beispiel an:

```ninox
alert("Welcome " + userFullName() + "!")
```

Zeigt eine kurze Begrüßung für den aktuellen Nutzer.

Tipps:

* Nutze `userFullName()` für gut lesbare Bezeichnungen und Meldungen.
* `userName(user)` gibt den Anzeigenamen aus dem Nutzerprofil zurück.
* Nutze `userEmail()`, wenn ein Workflow Dateien teilt oder Benachrichtigungen sendet.
* `userEmail(user)` gibt die E-Mail-Adresse im Arbeitsbereich für den angegebenen Nutzer zurück.
* `userFirstName(user)` nutzt den Vornamen aus dem Profil dieses Nutzers.
* `userLastName(user)` nutzt den Nachnamen aus dem Profil dieses Nutzers.
* `userFullName(user)` kombiniert Vor- und Nachname aus dem Nutzerprofil.
* `userId(user)` gibt die interne alphanumerische ID des angegebenen Nutzers zurück.
* Speichere `userId()`, wenn du eine stabile interne Referenz brauchst.

### Mit `users()` alle Mitwirkenden zurückgeben <a href="#return-all-contributors-with-users" id="return-all-contributors-with-users"></a>

Nutze `users()`, wenn du alle Mitwirkenden aus dem aktuellen Arbeitsbereich als Array brauchst.

Nutze es, wenn du:

* alle Nutzer im Arbeitsbereich durchlaufen willst.
* eine Liste mit Namen der Mitwirkenden bauen willst.
* alle Nutzer in Filter- oder Zuweisungslogik wiederverwenden willst.

`users()`

`users()` gibt ein Array von Nutzerwerten zurück.

#### Schauen wir uns ein Beispiel an:

```ninox
users()
```

Gibt alle Mitwirkenden aus dem aktuellen Arbeitsbereich zurück.

Tipps:

* Nutze `users()`, wenn du alle Mitwirkenden brauchst, nicht nur den aktuellen Nutzer.
* Durchlaufe `users()`, wenn du jeden Mitwirkenden einzeln prüfen oder wiederverwenden willst.

## Rollen und Admin-Zugriff prüfen

Nutze diese Funktionen, wenn du Zugriff steuern oder für verschiedene Nutzer unterschiedliches Verhalten zeigen willst.

### Rollen prüfen <a href="#check-roles-and-admin-access" id="check-roles-and-admin-access"></a>

Nutze `userRole()` und `userRoles()`, um die Rollen des aktuellen Nutzers zu prüfen. Nutze `userHasRole()`, wenn du nur eine direkte Ja-oder-Nein-Prüfung brauchst.

Nutze sie, wenn du:

* den Zugriff auf Admin- oder Manager-Aktionen einschränken willst.
* rollenspezifische Schaltflächen oder Seiten anzeigen willst.
* Exporte, Löschungen oder Freigabe-Workflows absichern willst.

`userRole()`\
`userRole(user)`\
`userRoles()`\
`userRoles(user)`\
`userHasRole(string)`\
`userHasRole(user, string)`

* `string` der Rollenname, den du mit `userHasRole()` prüfen willst
* `user` der Nutzer, den du prüfen willst

#### Schauen wir uns einige Beispiele an:

```ninox
userRole()
```

Gibt die erste Rolle des aktuellen Nutzers zurück, zum Beispiel `admin` oder `editor`.

```ninox
userRole(user)
```

Gibt die erste Rolle des Nutzers zurück, der im Feld `user` gespeichert ist.

```ninox
userRoles()
```

Gibt alle Rollen des aktuellen Nutzers zurück.

```ninox
userRoles(user)
```

Gibt alle Rollen des Nutzers zurück, der im Feld `user` gespeichert ist.

```ninox
if userHasRole("Manager") then "OK" else "No access" end
```

Prüft, ob der aktuelle Nutzer die Rolle `Manager` hat.

```ninox
userHasRole(created_by, "admin")
```

Prüft, ob der Nutzer im Feld `Created_by` die Rolle `admin` hat.

Tipps:

* `userRole()` gibt nur die erste Rolle eines Nutzers zurück.
* `userRoles()` gibt eine Liste von Rollennamen zurück.
* Nutze `userRoles()`, wenn du alle zugewiesenen Rollen prüfen willst.
* Nutze `userHasRole()` für Berechtigungsprüfungen in Schaltflächen und Skripten.
* Prüfe den Zugriff früh, damit eingeschränkte Aktionen sofort stoppen.

### Admin-Status prüfen <a href="#check-admin-status" id="check-admin-status"></a>

Nutze `userIsAdmin()`, um zu prüfen, ob der aktuelle Nutzer Admin-Rechte hat. Nutze `isAdminMode()`, um zu prüfen, ob die Oberfläche gerade im Admin-Modus läuft.

Nutze sie, wenn du:

* sensible Wartungsaktionen absichern willst.
* Seiten oder Bedienelemente nur für Admins anzeigen willst.
* die UI an den aktuellen Admin-Kontext anpassen willst.

`userIsAdmin()` gibt einen booleschen Wert zurück.\
`isAdminMode()` gibt einen booleschen Wert zurück.

#### Schauen wir uns einige Beispiele an:

```ninox
userIsAdmin()
```

Gibt `true` zurück, wenn der aktuelle Nutzer Admin-Rechte hat.

```ninox
isAdminMode()
```

Gibt `true` zurück, wenn der Builder-Modus aktiv ist.

```ninox
if not userIsAdmin() then alert("Admins only.") else openPage("Admin") end
```

Zeigt eine kurze Warnung für Nicht-Admins und öffnet die Admin-Seite für Admins.

{% hint style="info" %}
Kombiniere Rollenprüfungen mit `dialog()` vor sensiblen Aktionen wie Löschen, Exporten oder Sammelaktualisierungen.
{% endhint %}

### Rollen mit `assignUserRoles()` zuweisen und mit `removeUserRoles()` entfernen

Nutze diese Funktionen, um einem Nutzer Rollen zuzuweisen oder zu entziehen. Gib die Rollen als Textwerte in einem Array und den Nutzer an.

Wenn eine zuzuweisende Rolle noch nicht existiert, wird sie automatisch erstellt.

`assignUserRoles(user, array)`\
`removeUserRoles(user, array)`

* `user` der [Nutzerwert](#get-user-details)
* `array` das Text-Array mit Rollen zum Zuweisen oder Entfernen

{% hint style="info" %}
Schreibe die Namen von Rollen korrekt und beachte Groß- und Kleinschreibung. Andernfalls können ähnliche, unerwünschte Rollen entstehen oder Rollen werden nicht wie gewollt entfernt.
{% endhint %}

#### Schauen wir uns einige Beispiele an:

```ninox
assignUserRoles(ninox_nutzer, ["Supervisor", "Controlling"])
```

Weist dem Nutzer im Feld "Ninox-Nutzer" die Rollen "Supervisor" und "Controlling" zu.

```ninox
let myRoles := split(text, ",");
assignUserRoles(ninox_nutzer, myRoles)
```

Erstellt ein Array aus den kommagetrennten Rollen im Feld "Text". Das Skript weist sie dem Nutzer im Feld "Ninox-Nutzer" zu.

```ninox
let myRoles := split(text, ",");
removeUserRoles(ninox_nutzer, myRoles)
```

Entfernt die Rollen im Array vom Nutzer im Feld "Ninox-Nutzer".

## Skripte an App-, Sprache- und Arbeitsbereichskontext anpassen

Nutze diese Funktionen, wenn sich dein Skript je nach Sprache oder aktueller Umgebung anders verhalten soll.

### Mit `clientLang()` die aktuelle Sprache erkennen <a href="#detect-the-current-language-with-clientlang" id="detect-the-current-language-with-clientlang"></a>

Nutze `clientLang()`, um die aktuell im Browser oder in der App gesetzte Sprache zu lesen.

Nutze es, wenn du:

* Meldungen lokalisieren willst.
* Bezeichnungen je nach Sprache wechseln willst.
* unterschiedlichen Nutzern unterschiedliche Texte zeigen willst.

`clientLang()`

`clientLang()` gibt einen String wie `en`, `de` oder `es` zurück.

#### Schauen wir uns einige Beispiele an:

```ninox
if clientLang() = "es" then "Hola" else "Hello" end
```

Gibt `Hola` zurück, wenn die Client-Sprache auf Spanisch gesetzt ist.

Tipps:

* `clientLang()` spiegelt die Sprache im aktuellen Browser oder in der App wider.
* Nutzer können auf verschiedenen Clients unterschiedliche Sprachen nutzen.
* Halte lokalisierte Meldungen kurz.
* Teste sprachabhängige Skripte mit echten Client-Sprach-Einstellungen.

## Häufige Muster für Nutzer und Rollen

Diese kurzen Muster zeigen typische Wege, Workflows in Ninox zu personalisieren und zu schützen.

### Zugriff auf Admins beschränken

```ninox
if not userIsAdmin() then alert("Admins only.") else openPage("Admin") end
```

Blockiert Nicht-Admins und führt Admins in den Admin-Bereich.

### Zugriff per Rolle beschränken

```ninox
if userHasRole("Manager") then "OK" else "No access" end
```

Prüft, ob der aktuelle Nutzer die Rolle `Manager` hat.

### Eine kurze Meldung lokalisieren

```ninox
if clientLang() = "de" then "Willkommen" else "Welcome" end
```

Gibt eine kurze Begrüßung abhängig von der aktuellen Client-Sprache zurück.

Nutze dieses Kapitel zusammen mit Navigations- und Dateifunktionen:

* Nutze Rollenprüfungen vor Exporten, Löschungen oder Seitenwechseln.
* Nutze Nutzerdetails, um Alerts, Protokolle und geteilte Inhalte zu personalisieren.
* Nutze App- und Sprachprüfungen, wenn Verhalten von der Client-Umgebung abhängt.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.ninox.com/ninox-scripting/de/automate-your-workflows/work-with-functions/users-and-roles.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
