• Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    Solved Abfrage bzw. setzen der Permissions per API

    ChurchTools Schnittstellen
    5
    16
    847
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      bwl21 @BeMiGro
      last edited by

      @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 Reply Last reply Reply Quote 1
      • MichaelGM
        MichaelG @bwl21
        last edited by

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

        Installation bei CT -> immer neueste Version

        B 1 Reply Last reply Reply Quote 0
        • B
          bwl21 @MichaelG
          last edited by

          @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 Reply Last reply Reply Quote 2
          • MichaelGM
            MichaelG @jziegeler
            last edited by

            @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 Reply Last reply Reply Quote 1
            • B
              bwl21 @MichaelG
              last edited by

              @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 Reply Last reply Reply Quote 0
              • B
                bwl21 @bwl21
                last edited by

                @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 Reply Last reply Reply Quote 0
                • davidschillingD
                  davidschilling ChurchToolsMitarbeiter @bwl21
                  last edited by

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

                  B 1 Reply Last reply Reply Quote 0
                  • B
                    bwl21 @davidschilling
                    last edited by 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 Reply Last reply Reply Quote 1
                    • B
                      bwl21 @bwl21
                      last edited by

                      @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 Reply Last reply Reply Quote 0
                      • davidschillingD
                        davidschilling ChurchToolsMitarbeiter @bwl21
                        last edited by

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

                        B 1 Reply Last reply Reply Quote 0
                        • B
                          bwl21 @davidschilling
                          last edited by 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 Reply Last reply Reply Quote 0
                          • First post
                            Last post