logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll
21/05/2025, by Ivan

JSON:API je u potpunosti zasnovan na entitetima. To znači da ne može da obrađuje poslovna pravila ili izvršava radnje koje ne mogu da se posmatraju kao "CRUD" operacije. Poslovna logika, kao što su registracija novog naloga, prijava korisnika ili zahtev za novu lozinku, nisu deo JSON:API-ja. Mnoge od ovih funkcionalnosti već su obezbeđene kroz Drupal core.

Nepotpuna lista čestih potreba i rešenja je prikazana ispod.

Zanimljive putanje:

  • /session/token
  • /user/register
  • /user/login
  • /user/login_status
  • /user/logout

Dobijanje session tokena

Dobij token

curl \
  --request GET http://drupal.d8/session/token

Token se vraća kao plain text (ne kao JSON) u telu odgovora.

Korišćenje tokena

Pored session tokena, prilikom prijave dobijate i csrf_token i logout_token. Biće vam potreban logout_token za odjavu korisnika iz sistema (vidi dole). csrf_token ili session token je potreban za izmenu podataka (POST, PATCH i DELETE zahtevi).

Registracija korisnika

JSON:API u core-u ne podržava registraciju novih korisnika, ali možete instalirati JSON:API User Resources modul da biste dodali JSON:API endpointove za korisnike, uključujući registraciju, resetovanje i promenu lozinke.

Alternativno, možete koristiti core REST modul. Da bi korisnici mogli da se registruju putem REST-a, morate omogućiti user_registration REST resurs (vidi REST UI primer ispod).

curl \
--header "Content-Type: application/json" \
--header "X-CSRF-Token: 57sTS-KS7UoYAWAPyzt0iJmo300CFct3jdKyWM-UiiQ" \
--request POST "https://drupal.d9/user/register?_format=json" \
--data '{"name": {"value": "thename123"}, "pass": {"value": "thepass"}, "mail": {"value": "someone@example.com"}}'

Koristite session token vrednost sa X-CSRF-Token header-om. Uspešan odgovor sadrži neke korisničke podatke, uključujući UUID novo-kreiranog korisnika:

{
   "uuid" : [ { "value" : "3e75b757-831e-4bf7-bbb6-25b8c50c7ac0" } ]
}

Obratite pažnju da odgovor nema "Set-Cookie" header, čak i ako je posetiocima dozvoljeno da sami kreiraju nalog. Dakle, ako nema potrebe za odobrenjem ili potvrdom, korisnika možete odmah prijaviti koristeći iste name i pass vrednosti.

Prijava korisnika

curl \
  --header "Content-type: application/json" \
  -c cookie.txt \
  --request POST "http://drupal.d8/user/login?_format=json" \
  --data '{"name":"admin", "pass":"admin"}'

-c cookie.txt govori curl-u da sačuva kolačić. Odgovor bi trebalo da izgleda ovako:

{
   "csrf_token" : "57sTS-KS7UoYAWAPyzt0iJmo300CFct3jdKyWM-UiiQ",
   "logout_token" : "zzRaD8ZgLT1TkG804mYpVVTyM-pgoDm4h9XZ9JHSoCw",
   "current_user" : {
      "roles" : [
         "authenticated",
         "administrator"
      ],
      "name" : "admin",
      "uid" : "1"
   }
}

Status korisnika

curl \
  --header "Content-type: application/json" \
  -b cookie.txt \
  --request GET "http://drupal.d8/user/login_status?_format=json"

-b cookie.txt govori curl-u da pošalje (ne sačuva) kolačić iz prethodnog zahteva. Ako ste prijavljeni, biće vraćeno 1 kao plain text; u suprotnom 0.

Odjava korisnika

curl \
  --header "Content-type: application/json" \
  -b cookie.txt \
  --request POST "http://drupal.d8/user/logout?_format=json&token=zzRaD8ZgLT1TkG804mYpVVTyM-pgoDm4h9XZ9JHSoCw"

Ovim će korisnik autentifikovan putem cookie.txt biti odjavljen. Koristite logout_token vrednost kao token query parametar.

Mehanizmi autentifikacije

Primer iznad je samo jedan od mnogih dostupnih mehanizama autentifikacije. Preporučuje se da istražite koji je najprikladniji za vaše potrebe.

Dostupan je i OAuth modul za Drupal: simple_oauth.

Reference

Za više informacija pogledajte sledeće promene:

Za autentifikaciju, takođe možete razmotriti korišćenje drugih protokola autentifikacije.

Ako odlučite da koristite "cookie" način sa vašom javascript aplikacijom na frontendu i Drupal-om na backendu, browser može automatski čuvati korisničke sesijske kolačiće. Samo nemojte zaboraviti da ako vaš JS app i Drupal sajt imaju različite domene, treba da dozvolite browserima čuvanje kolačića tako što ćete promeniti SameSite parametar na "None". Za to, izmenite services.yml fajl i dodajte sledeći parametar:

parameters:
  session.storage.options:
    cookie_samesite: None

REST UI

REST UI dodatni modul omogućava podešavanje resursa core REST modula. Evo kako možete omogućiti korisnicima registraciju putem ovog modula:

  1. Nakon instalacije i aktivacije REST UI modula idite na konfiguracionu stranicu na /admin/config/services/rest i omogućite "User registration" resurs. Izmenite resurs i omogućite POST metod, JSON format i Cookie provider (na primer). Prebacivanje granularnosti na "method" takođe vam omogućava da razdvojite formate i provajdere po metodu zahteva.
  2. Zatim, dodelite anonimnim korisnicima dozvolu "Access POST on User registration resource" na /admin/people/permissions/module/rest.
  3. Konačno, proverite da li je posetiocima dozvoljeno kreiranje naloga na /admin/config/people/accounts.

 

Tekst preuzet sa Drupal Dokumentacije.