User - OpenSlides/OpenSlides GitHub Wiki

User Schnittstelle für den Client

⚠️ Warnung

Die Schnittstelle existiert nur für den OpenSlides-Client. Eine Aufwärts- bzw. Abwärtskompatibilität wird nicht garantiert. Schnittstellen können bei Bedarf ohne Ankündigung geändert werden.

User abrufen

Name eines Nutzers

curl -k https://localhost:8000/system/autoupdate?single=true -d '[{"collection":"user","ids":[1],"fields":{"username":null,"first_name":null,"last_name":null}}]'

Username von allen Nutzern

[{
    "collection": "organization",
    "ids": [1],
    "fields": {
        "user_ids": {
            "type": "relation-list",
            "collection": "user",
            "fields": {
                "username": null
            }
        }
    }
}]

Username von allen Nutzern eines Meetings

Ein Nutzer gehört zu einem Meeting, wenn er in einer Gruppe des Meetings ist. Das folgende Request gibt zu einem Meeting alle Gruppen und von diesen Gruppen alle Nutzer zurück.

[{
    "collection": "meeting",
    "ids": [
        2
    ],
    "fields": {
        "meeting_user_ids": {
            "type": "relation-list",
            "collection": "meeting_user",
            "fields": {
                "user_id": {
                    "type": "relation",
                    "collection": "user",
                    "fields": {
                        "username": null 
                    }
                }
            }
        }
    }
}]

Name und external-id aller Gruppen eines Meetings

[{
    "collection": "meeting",
    "ids": [1],
    "fields": {
        "group_ids": {
            "type": "relation-list",
            "collection": "group",
            "fields": {
                "name": null,
                "external-id": null
            }
        }
    }
}]

Über die Keys des Rückgabeobjektes erhält man eine Zuordnung von Gruppen-ID zu Gruppenname. Diese Information ist für Schreiboperationen wichtig.

{"group/1/name":"Default","group/2/name":"Admin","group/3/name":"Staff","group/4/name":"Committees","group/5/name":"Delegates","meeting/1/group_ids":[1,2,3,4,5]}

Name aller Gruppen eines Users

[{
    "collection": "user",
    "ids": [
        1
    ],
    "fields": {
        "meeting_user_ids": {
            "type": "relation-list",
            "collection": "meeting_user",
            "fields": {
                "group_ids": {
                    "type": "relation-list",
                    "collection": "group",
                    "fields": {
                        "name": null
                    }
                }
            }
        }
    }
}]

User-ID über die SAML-ID

Ist die SAML-ID bekannt, kann die User-ID über den Presenter herausgefunden werden:

curl -k -H "content-type: application/json"  https://localhost:8000/system/presenter/handle_request -d  '[
    {
        "presenter": "search_for_id_by_external_id",
        "data": {
            "collection": "user",
            "external_id": "Max Mustermann"
        }
    }
]'

Gruppen-ID über external-ID

Eine Gruppe kann direkt nicht über die external-ID aufgerufen werden. Um die Gruppen-ID in einem bestimmten Meeting über die external-ID aufzurufen, müssen alle Gruppen eines Meetings abgerufen werden und das Ergebnis manuell gefiltert werden.

Daten schreiben

Anlegen von zwei anwesenden Nutzern in einem Meeting.

Es werden zwei Nutzer im Meeting 1 in der Gruppe Delegierte angelegt. Das die Gruppen-ID der Gruppe Delegierte die Nummer 5 ist, muss über den Autoupdate-Service herausgefunden werden.

[
    {
        "action": "user.create",
        "data": [
            {
                "username": "new-user1",
                "default_password": "sicher",
                "is_active": true,
                "is_present_in_meeting_ids": [1],
                "meeting_id": 1,
                "group_ids": [5]
            },
            {
                "username": "new-user2",
                "default_password": "sicher",
                "is_active": true,
                "is_present_in_meeting_ids": [1],
                "meeting_id": 1,
                "group_ids": [5]
            }
        ]
    }
]

Hinweis: Bei bestehenden Nutzern kann die An- oder Abwesenheit nur über die Aktion user.set_present gesetzt werden.

Ändern des Namens eines Nutzers

[
    {
        "action": "user.update",
        "data": [
            {
                "id": 1,
                "first_name": "Hans",
                "last_name": "Glück"
            }
        ]
    }
]

Löschen eines Nutzers

[
    {
        "action": "user.delete",
        "data": [
            {
                "id": 2
            }
        ]
    }
]
⚠️ **GitHub.com Fallback** ⚠️