# Authentik: Einladungslinks mit Gruppenzuordnung

Um Einladungslinks zu erstellen, bei denen nach der Registrierung automatisch bestimme Gruppen und ein Userpath hinterlegt ist, sowie den Anzeigenamen von User\*innen Emojis anzuhängen (um sie z.B. in Element visuell leicht unterscheidbar zu machen) braucht es einen Invitation-Flow mit einer Richtlinie in der Write-Stage.

 ![](https://wiki.local-it.org/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzJiZjkwM2M4LWEyNjItNDA0My1iYTQzLWE1ZWEzNDNmMmRjMC84MGVmNGY1YS0zMzZiLTRhYjktYTc5Mi1iNGM5MjY5ZjY3NDkvZ3JhZmlrLnBuZyIsInR5cGUiOiJhdHRhY2htZW50IiwiaWF0IjoxNzk0NjE3MTAwLCJleHAiOjE3OTQ3MDM1MDB9.5-ThGi3RM5HM67feVlzZVPf0j2cbrYpUwA0jv1k_cB4 " =1556x943")

In dieser “Expression Policy” braucht es folgenden Code:

```javascript
from authentik.core.models import Group

prompt = request.context.get("prompt_data", {}) or {}
name = prompt.get("name")
emoji = prompt.get("emoji")

# Gruppen aus 'groups' (Liste) oder 'group' (Einzelwert) auslesen
invite_groups = prompt.get("groups", [])
single_group = prompt.get("group")
path = prompt.get("path")

if single_group and not invite_groups:
    invite_groups = [single_group]
elif single_group and isinstance(invite_groups, list):
    if single_group not in invite_groups:
        invite_groups.append(single_group)

# 1. Emoji an Name anhängen
if name and emoji:
    name = str(name)
    if not name.endswith(emoji):
        prompt["name"] = f"{name} {emoji}"
        request.context["prompt_data"] = prompt
        if "flow_plan" in request.context and hasattr(request.context["flow_plan"], "context"):
            request.context["flow_plan"].context.setdefault("prompt_data", {}).update(prompt)

pending = request.context.get("pending_user")
if pending and getattr(pending, "name", None) and emoji:
    if not pending.name.endswith(emoji):
        pending.name = f"{pending.name} {emoji}"

# 2. Gruppen verarbeiten
if invite_groups:
    group_objects = []
    for g_name in invite_groups:
        target_group = Group.objects.filter(name=g_name).first()
        if target_group:
            group_objects.append(target_group)
            
    request.context["flow_plan"].context["groups"] = group_objects

# 3. User Path (path) verarbeiten
if path:
    request.context["flow_plan"].context["user_path"] = str(path)

return True
```


Und damit ist es nun möglich bei den Invitation-Links folgende Attribute zu setzen:

**Benutzerdefinierte Attribute:** Hier können [Gruppen](https://login.lambdaverse.de/if/admin/#/identity/groups) definiert werden, in die der die sich neu anmeldende Person automatisch sortiert wird (und auch die entsprechende Rechte bekommt), außerdem der Pfad für die [User\*innen-Übersicht](https://login.lambdaverse.de/if/admin/#/identity/users) (hat keine Auswirkungen auf die Rechtevergabe, dient nur der Übersicht), sowie ein **Emoji**, das dem Anzeigenamen angehängt werden soll – und damit die Person in Element erkennbar macht.

Und zwar so:

```javascript
path: ehrenamtliche
emoji: 🟦
group: vorstand
```

Es können alternativ auch mehrere Gruppen angegeben werden, z.B.

```javascript
path: ehrenamtliche
emoji: 🟦🟧
groups:
  - vorstand
  - redaktion
```

---

**Documents**

- [User:innen Guide](https://wiki.local-it.org/s/kollicloud-wiki/doc/userinnen-guide-zUit9qbRxm)
- [Selfhosting Guide](https://wiki.local-it.org/s/kollicloud-wiki/doc/selfhosting-guide-1xZJt8UIha)
- [Kollektivhosting](https://wiki.local-it.org/s/kollicloud-wiki/doc/kollektivhosting-9uzforQcz4)
- [FAQ zur KolliCloud](https://wiki.local-it.org/s/kollicloud-wiki/doc/faq-zur-kollicloud-1XlLVf5QpO)
- [Technik-Glossar](https://wiki.local-it.org/s/kollicloud-wiki/doc/technik-glossar-mqY0TUfkKy)