• Aktuell
    • Tags
    • Beliebt
    • Benutzer
    • Gruppen
    • Suche
    • Registrieren
    • Anmelden

    Gelöst Abfrage bzw. setzen der Permissions per API

    ChurchTools Schnittstellen
    5
    16
    847
    Lade mehr Beiträge
    • Älteste zuerst
    • Neuste zuerst
    • Meiste Stimmen
    Antworten
    • In einem neuen Thema antworten
    Anmelden zum Antworten
    Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
    • B
      bwl21 @BeMiGro
      zuletzt editiert von

      @bemigro schon klar, ich wollte hier keinen Sprachdiskussion anfangen. Man nimmt halt, was man kann ...

      Das Abfragen der Rechte kriege ich inzwischen hin. Ich habe als Minimum den Plan, diese Rechte in Git abzulegen, und so Änderungen verfolgen zu können bzw. frühere Zustände manuell wieder herstellen zu können.

      Es ist ja leider so, dass man mit wenigen Mausklicks die ganze Rechtestruktur verbügeln kann.

      MichaelGM 1 Antwort Letzte Antwort Antworten Zitieren 1
      • MichaelGM
        MichaelG @bwl21
        zuletzt editiert von

        @bwl21 könnte sowas sogar offiziell Teil von CT werden?

        Installation bei CT -> immer neueste Version

        B 1 Antwort Letzte Antwort Antworten Zitieren 0
        • B
          bwl21 @MichaelG
          zuletzt editiert von

          @michaelg Das liegt ja nicht in meiner Hand. Wenn ich aber einen brauchbaren Stand habe, werde ich das opensource veröffentlichen.

          Meine Spielwiese steht auf https://github.com/bwl21/CT-API-Tools

          1 Antwort Letzte Antwort Antworten Zitieren 2
          • MichaelGM
            MichaelG @jziegeler
            zuletzt editiert von

            @jziegeler vielleicht könntet ihr was in die Richtung überlegen. Die Rechtsverwaltung ist mächtig und fragil zugleich

            Installation bei CT -> immer neueste Version

            B 1 Antwort Letzte Antwort Antworten Zitieren 1
            • B
              bwl21 @MichaelG
              zuletzt editiert von

              @michaelg sagte in Abfrage bzw. setzen der Permissions per API:

              @jziegeler vielleicht könntet ihr was in die Richtung überlegen. Die Rechtsverwaltung ist mächtig und fragil zugleich

              Ich habe jetzt einen gewissen Stand erreicht. Wenn du möchtest, könnten wir das mal zusammen gegen eure Instanz laufen lassen. Dann hätte ich noch einen Testfall.

              Der Ansatz ist so, dass ein JSON -File rauskommt, welches man gut in GIT archiveren kann. Dieses File enthält auch Hinweise über gleichartige Rechteeinstellungen. Damit kann man eine gewissse Plausisbliblierung erreichen.

              Es ist ein 250 Zeilen PHP - Script.Letztlich wäre es mir am, dass CT das übernimmt und irgendwie in den API anbietet.

              B 1 Antwort Letzte Antwort Antworten Zitieren 0
              • B
                bwl21 @bwl21
                zuletzt editiert von

                @jzegler Jetzt habe ich einen Stand erreicht und würde gerne mal versuchen, die Berechtigungen zwischen Gruppen zu kopieren.

                Ich habe in den Developertools verfolgt, was passiert, wenn ich das über das UI machen. Es ist mir aber nicht klar, woher ich die nächste ID für den "GrupememberStatus" bekomme, wenn es noch keinen Eintrag gibt.

                Ich hätte gedacht, dass churchtauth func saveAuth die berechneet, wenn ein neuer Datensatz angelegt wird. Ich sehe aber dass die Webseite eine neue domain_id liefert.

                func: saveAuth
                domain_type: groupMemberstatus
                domain_id: 810
                data: [{"auth_id":"501"},{"auth_id":"502","daten_id":-1},{"auth_id":"599"},{"auth_id":"801"},{"auth_id":"899"}]
                browsertabId: 1418011307
                

                Die Frage ist wo hat die Applikation die nächste freie domain_id her?

                davidschillingD 1 Antwort Letzte Antwort Antworten Zitieren 0
                • davidschillingD
                  davidschilling ChurchToolsMitarbeiter @bwl21
                  zuletzt editiert von

                  @bwl21 domain_id ist in diesem Fall die Id des groupMemberstatus für den die Berechtigung bergeben wird.

                  B 1 Antwort Letzte Antwort Antworten Zitieren 0
                  • B
                    bwl21 @davidschilling
                    zuletzt editiert von bwl21

                    @davidschilling sagte in Abfrage bzw. setzen der Permissions per API:

                    domain_id ist in diesem Fall die Id des groupMemberstatus für den die Berechtigung bergeben wird.

                    meine Frage war, wenn groupMemberstatus noch keinen Eintrag für die Gruppe hat.
                    Gerade hab ich es nochmal probiert ... beim anlegen einer neuen Gruppe werden auch alle zugehörigen groupMemerstatus angelegt. Das klärt meine Frage.

                    Sehe ich es richtig, dass es keine Funktion gibt, welche den auth des Eintrags 1193 nach z.B 840 kopiert.

                    "1193": {
                        "id": "1193",
                        "group_id": "68",
                        "grouptype_memberstatus_id": "9",
                        "active_yn": "1",
                        "growpath_id": null,
                        "force_2fa": "0",
                        "read_chat": "1",
                        "write_chat": "1",
                        "auth": {
                            "304": {
                                "1": "1",
                                "3": "3",
                                "4": "4"
                            },
                            "502": {
                                "-1": "-1"
                            }
                        }
                    },
                    

                    in saveAuth sieht ja so aus, d.h. es ist flachgeklopft. Das würde man ja noch hinkriegen.

                    domain_id: 1193
                    data: [{"auth_id":"304","daten_id":"1"},{"auth_id":"304","daten_id":"3"},{"auth_id":"304","daten_id":"4"},{"auth_id":"502","daten_id":-1}]
                    

                    Mein Ziel ist es, die mächtige aber auch komplexe Berechtigungseinstellungen durch eine geeignete Strategie besser zu beherrschen.

                    Ich habe einen Report geschrieben und auf unsere Instanz losgelassen. Da sieht man schon, dass manche Ungereimtheiten in den Berechtigungen vorliegen. Momentan hat man ja kaum eine andere Möglichkeit, als rumzuprobieren und sobald es tut, die Einstellung zu belassen (selbst wenn man nicht weiß, warum es tut).

                    Momentan verfolge ich den Ansatz, allgemeine Berechtigungsvorlagen zu erstellen (als Gruppe ohne Mitglieder) und diese Vorlagen dann über das API in die jeweiligen Stellen zu kopieren. Ich bin noch am Forschen und experimentieren, da ich nicht sicher bin, ob der Ansatz zielführend ist.

                    Es wäre mir natürlich lieber, wenn ein solches Vorgehen in CT native unterstützt würde, z.b. über eine definierte Gruppenbeziehung (https://forum.church.tools/topic/7186/bedeutung-der-gruppenbeziehungen-definieren), oder wie auch immer, mit jeder Stelle verbinden, die Berechtigungen definieren kann ( also auch Gruppentypen, Status, Personen (aber das verwenden wir ja nicht). Das ganze muss man ja nicht zur Laufzeit machen. Das könnte auch ein Verwaltungsjob "Berechtigungen korrigieren" machen.

                    B 1 Antwort Letzte Antwort Antworten Zitieren 1
                    • B
                      bwl21 @bwl21
                      zuletzt editiert von

                      @davidschilling so nun habe ich mal etwas weiter gemacht und bleibe hängen:

                      Wenn ich im Browser Recht setze, dann sieht der Request so aus.

                      func: saveAuth
                      domain_type: groupMemberstatus
                      domain_id: 786
                      data: [{"auth_id":"1"},{"auth_id":"2"},{"auth_id":"3"},{"auth_id":"4"},{"auth_id":"5"},{"auth_id":"6"},{"auth_id":"7"}]
                      browsertabId: 1989686060
                      

                      Wenn ich das mit meinem Script mache, sieht der Request so aus:

                      {
                              "func": "saveAuth",
                              "domain_type": "groupMemberstatus",
                              "browsertabId": 14908869,
                              "domain_id": 786,
                              "data": [
                                  {
                                      "auth_id": "1"
                                  },
                                  {
                                      "auth_id": "2"
                                  },
                                  {
                                      "auth_id": "6"
                                  },
                                  {
                                      "auth_id": "7"
                                  },
                                  {
                                      "auth_id": "3"
                                  },
                                  {
                                      "auth_id": "4"
                                  },
                                  {
                                      "auth_id": "5"
                                  }
                              ]
                          }
                      

                      also praktisch gleich. Als Antwort kriege ich dann

                      {
                              "status": "error",
                              "message": "Ups ... da ist ein uns ein technischer Fehler unterlaufen lauter Nullen und Einsen 010111000 ... bitte lade die Seite neu, danke."
                          }
                      

                      und es wird nichts gesetzt.

                      Wenn ich die 'func' verändere kriege ich die Meldung, dass die Funktion nicht existiert. Der Aufruf kommt also wohl richtig an.

                      Das funktioniert weder mit noch ohne browsertabid.

                      Es läuft im gleichen User wie interaktiv im Browser.

                      Woran kann das noch liegen?

                      davidschillingD 1 Antwort Letzte Antwort Antworten Zitieren 0
                      • davidschillingD
                        davidschilling ChurchToolsMitarbeiter @bwl21
                        zuletzt editiert von

                        @bwl21 schau am besten mal in eurem ChurchTools Log nach ob dort ein Fehler sichtbar ist.

                        B 1 Antwort Letzte Antwort Antworten Zitieren 0
                        • B
                          bwl21 @davidschilling
                          zuletzt editiert von bwl21

                          @davidschilling sagte in Abfrage bzw. setzen der Permissions per API:

                          schau am besten mal in eurem ChurchTools Log nach ob dort ein Fehler sichtbar ist.

                          warum bin ich auf die Idee nicht selbst gekommen? Da stand die Lösung: Der will als data echt einen json-String sehen, der dann nochmal beim Senden nochmal mit http_build_query verpackt werden muss.

                          vielen Dank für den Hinweis.

                          1 Antwort Letzte Antwort Antworten Zitieren 0
                          • Erster Beitrag
                            Letzter Beitrag