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

    Resourcenbelegung via php curl_exec abfragen

    ChurchTools Schnittstellen
    4
    20
    1.1k
    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.
    • davidschillingD
      davidschilling ChurchToolsMitarbeiter
      last edited by davidschilling

      Was dir vermutlich fehlt ist das CSRF-Token. Das wird beim Aufruf der alten Api benötigt.
      Das sendet man als Header csrf-token mit.

      Das Token kannst du dir mit /api/csrftoken holen.

      Generell solltest du aber auch die Session Cookies die ChurchTools sendet nutzen und nur im Login Fall das Login-Token nutzen, sonst machst du mit jedem Api-Call eine neue Session auf.

      Hier gibt es noch ein paar mehr Details dazu: https://intern.church.tools/#WikiView/filterWikicategory_id:0/doc:API-CSRF/follow_redirect:true/

      B 2 Replies Last reply Reply Quote 0
      • B
        bwl21 @davidschilling
        last edited by

        @davidschilling vielen Dank. Ich muss mal schauen wie das mit den Cookies bei einem headless aufruf funktioniert. Ich probiere das aus und schreib hier über die Ergebnisse.

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

          @davidschilling sagte in Resourcenbelegung via php curl_exec abfragen:

          Das Token kannst du dir mit /api/csrftoken holen.
          Generell solltest du aber auch die Session Cookies die ChurchTools sendet nutzen und nur im Login Fall das Login-Token nutzen, sonst machst du mit jedem Api-Call

          Ich sehe noch nicht ganz, wie der login/logout-vorgang geht.

          Verstehe ich richtig, dass ich mich sozusagen mit

          • /api/csrftoken einlogge und dabei das login-token mitschicke
          • in allen folgenden Aufrufen das csrftoken im header und auch das beim ersten Aufruf empfangene Cookie mitschicke
          • Zum Beenden der Session ??? gibt es einen Call zum logout oder wird da einfach auf den timeout gewartet.
          1 Reply Last reply Reply Quote 0
          • hbuergerH
            hbuerger ChurchToolsMitarbeiter
            last edited by

            Nein der CSRF Token ist kein Login-Token, sondern ein Token, um Formulare zu verifizieren. Es geht hier um eine sogenannte Cross-Site Request Forgery Attacke (MDN - CSRF).

            Du musst diesen CSRF Token abfragen und mit den POSTs bei der alten API mitschicken. Das ist ein Sicherheits-Token. Informiere dich über CSRF, dazu gibt es viele Ressourcen im Internet.

            Wenn du von Einloggen sprichst müssen wir hier unterscheiden.

            1. Mit Benutzernamen + Passwort, dann verwende die /login Endpoints, um eine Session zu generieren
            2. Mit Login Token. Den kannst du (seit v.3.70) einfach als Authorization: Login <token> Header mitschicken. Dann wirst du automatisch "eingeloggt"

            ChurchTools Mitarbeiter – Trainer – Supporter – Academy

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

              This post is deleted!
              1 Reply Last reply Reply Quote 0
              • hbuergerH
                hbuerger ChurchToolsMitarbeiter
                last edited by hbuerger

                Guck mal hier https://intern.church.tools/?q=churchwiki#WikiView/filterWikicategory_id:0/doc:API-CSRF/follow_redirect:true/

                Und hier https://intern.church.tools/?q=churchwiki#WikiView/filterWikicategory_id:0/doc:API/follow_redirect:true/

                ChurchTools Mitarbeiter – Trainer – Supporter – Academy

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

                  @hbuerger sagte in Resourcenbelegung via php curl_exec abfragen:

                  Guck mal hier https://intern.church.tools/?q=churchwiki#WikiView/filterWikicategory_id:0/doc:API-CSRF/follow_redirect:true/

                  Und hier https://intern.church.tools/?q=churchwiki#WikiView/filterWikicategory_id:0/doc:API/follow_redirect:true/

                  Vielen Dank für die Links. Nun bin ich etwas weiter. https://github.com/fodinabor/CT-API-Tools hat mir geholfen. Das Teil von Vinyard Köln scheint mir professioneller und viel umfangreicher. Vor allem scheinen die Leute V1 und V2 wegzukapseln ...

                  Für mich ist es aber vielleicht zu komplex zumal ich das ja dann wieder in unser CMS integrieren muss. Da trau ich mich nicht so recht dran. Drum versuche ich erst mal die einfach-Variante.

                  Jetzt bin ich am nächsten Punkt: ich versuche nach https://api.church.tools/index.html die API - funktionen zu machen.

                  Zum Beispiel nach https://api.church.tools/function-getBookings.html

                  /**
                   * @param $domain
                   * @return mixed
                   */
                  function CT_getRessourceBookings($domain)
                  {
                      $url = $domain . 'churchresource/ajax';
                      $data = array('func' => 'getBookings', 'from' => "0", 'to' => "1");
                      $ret = CT_sendRequest($domain, $url, $data);
                      return $ret;
                  }
                  

                  CT liefert aber immer alle Buchungen und nicht nur die von heut und morgen, d.h. die parameter from und to greifen irgendwie nicht.

                  https://api.church.tools/index.html überhaupt richtig?

                  hbuergerH 1 Reply Last reply Reply Quote 0
                  • hbuergerH
                    hbuerger ChurchToolsMitarbeiter @bwl21
                    last edited by

                    @bwl21 Musste eben im Code nachgucken. Ja, da ist aktuell ein Bug drin. Die Parameter werden von der API nicht berücksichtig. Ich nehm, dass als Bug auf.

                    Akutell bleibt dir leider übrigt, die Einträge manuell zu filtern.

                    ChurchTools Mitarbeiter – Trainer – Supporter – Academy

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

                      @hbuerger vielen Dank, dann weiß ich bescheid. Das filtern ist kein problem. Wir wollen das alle 1-3 Stunden laufen lassen.

                      verstehe ich richtig, dass ich mit https://api.church.tools/index.html arbeiten kann.

                      hbuergerH 1 Reply Last reply Reply Quote 0
                      • hbuergerH
                        hbuerger ChurchToolsMitarbeiter @bwl21
                        last edited by

                        @bwl21 Nur damit wir nicht an einander vorbei reden.

                        https://api.church.tools/index.html ist "nur" die "Dokumentation" der alten AJAX API. Dort kannst du nachgucken, welche Funktionen mit welchen Parametern man theoretisch aufrufen kann.

                        Allerdings wurden die Dokumente meines Wissens nach schon lange nicht aktualisiert (auf der anderen Seite hat sich auch nicht viel daran geändert).

                        ChurchTools Mitarbeiter – Trainer – Supporter – Academy

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

                          @hbuerger ja, das habe ich verstanden. Ich versuche, möglichst mit dem V2 API zu arbeiten, wenn ich was unbedingt brauche, nehme ich das V1 Api und hoffe dass es tut:-)

                          1 Reply Last reply Reply Quote 1
                          • B
                            bwl21
                            last edited by

                            @hbuerger Ich komme in der Sache weiter ...

                            Die Parameter werden von der API nicht berücksichtig. Ich nehm, dass als Bug auf.

                            Damit kann ich leben. Eine andere Frage, ist, ob es auch die Möglichkeit gibt, Wiederholungstermine aufgelöst zu bekommen, sonst muss ich das alles nachrechnen.

                            hbuergerH 1 Reply Last reply Reply Quote 0
                            • hbuergerH
                              hbuerger ChurchToolsMitarbeiter @bwl21
                              last edited by

                              @bwl21 sagte in Resourcenbelegung via php curl_exec abfragen:

                              Wiederholungstermine aufgelöst zu bekommen, sonst muss ich das alles nachrechnen.

                              Nein, dass ist nicht möglich. Die Wiederholungen musst du aktuell selber berechnen. Liegt an der internen Datenhaltung.

                              ChurchTools Mitarbeiter – Trainer – Supporter – Academy

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

                                @hbuerger sagte in Resourcenbelegung via php curl_exec abfragen:

                                Nein, dass ist nicht möglich. Die Wiederholungen musst du aktuell selber berechnen. Liegt an der internen Datenhaltung.

                                Danke für die schnelle Antwort. Gibt es eine Dokumentation, wie das zu machen ist, vielleicht sogar eine Beispielfunktion (egal ob JS of PHP)? Oder muss ich das "reverse engineeren"?

                                Wie komme ich an die Masterdaten von ressource?: repeat_option_id, status_id

                                hbuergerH 1 Reply Last reply Reply Quote 0
                                • hbuergerH
                                  hbuerger ChurchToolsMitarbeiter @bwl21
                                  last edited by

                                  Ich mach es kurz:

                                  1. MasterData

                                  func = getMasterData Gibt alle Stammdaten im Modul zurück (Auch alte AJAX API)

                                  2. Wiederholung

                                  Hier mal eine Buchung wie sie die API zurück gibt und wie es im Frontend aussieht

                                  Bildschirmfoto 2021-03-09 um 09.27.36.png

                                  {
                                      "status": "success",
                                      "data": {
                                          "124": {
                                              "id": "124",
                                              "cc_cal_id": null,
                                              "resource_id": "5",
                                              "person_id": "1",
                                              "startdate": "2021-03-08 12:00:00",
                                              "enddate": "2021-03-08 13:00:00",
                                              "repeat_id": "1", 
                                              "repeat_frequence": "1",
                                              "repeat_until": "2021-03-12 00:00:00",
                                              "repeat_option_id": null,
                                              "status_id": "2",
                                              "text": "Serie",
                                              "location": "",
                                              "note": "",
                                              "show_in_churchcal_yn": "0",
                                              "modified_date": "2021-03-09 09:25:45",
                                              "create_date": "2021-03-09 09:25:45",
                                              "person_name": "Hans-Helge Bürger ö ä Ä",
                                              "station_id": "0",
                                              "bezeichnung": "Raum 01",
                                              "version": "0",
                                              "exceptions": {
                                                  "10": {
                                                      "id": "10",
                                                      "booking_id": "124",
                                                      "except_date_start": "2021-03-10 00:00:00",
                                                      "except_date_end": "2021-03-10 00:00:00",
                                                      "userid": "",
                                                      "modified_date": "2021-03-09 09:25:46",
                                                      "modified_pid": "1"
                                                  }
                                              }
                                          }
                                      }
                                  }
                                  
                                  • startdate und enddate definieren, Startzeit und Endzeit des Termins. Also Anfang vom Meeting und Ende vom Meeting
                                  • repeat_id Welche art der Wiederholung (Täglich, wächentlich ...)
                                  • repeat_frequence Wie oft die Wiederholung stattfindet
                                  • repeat_until Bis wann soll wiederholt werden
                                  • exceptions Object mit den Ausnahmen, wann diese Wiederholung nicht stattfindet

                                  ChurchTools Mitarbeiter – Trainer – Supporter – Academy

                                  1 Reply Last reply Reply Quote 0
                                  • jziegelerJ
                                    jziegeler ChurchToolsMitarbeiter
                                    last edited by

                                    Kurzes Update: der Bug im Filter wird in der Version 3.71 (vermutlich ab 22.03.) gefixt sein

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post