# Szerepkör váltása sikeres előfizetés után

> A felhasználó szerepkörének átállítása fizetés után és lejáratkor, a tartalom megjelenítése csak előfizetőknek.

Ha a látogató előfizet, az előfizetés idejére hozzáfér a zárt tartalomhoz. Lejáratkor viszont a hozzáférés megmaradna, hacsak nem állítod vissza. A legegyszerűbb megoldás: az előfizetés eseményeire átállítod a felhasználó szerepkörét, a tartalmat pedig szerepkör szerinti láthatósági szabállyal jeleníted meg.

Követelmények:

- JetFormBuilder 2.1.0 vagy újabb, a PayPal Recurring Payments kiegészítő 1.1.0 vagy újabb.
- Elementor vagy a WordPress blokkszerkesztője.
- Egy kész, PayPal-előfizetéses űrlap.
- JetEngine (a Dynamic Visibility modulhoz).
- JetPopup (nem kötelező, csak Elementorral használható).

## 1. Az űrlap

1. Menj ide: **JetFormBuilder → Forms**, és nyisd meg az előfizetéses űrlapot.
2. Vegyél fel egy rejtett mezőt (**Hidden Field**), és a **Field Value** mezőben válaszd a **Current User ID** lehetőséget. A példában a mező neve `user_id`.
3. A **JetForm → Post Submit Actions** részen kattints a **New Action** gombra, válaszd az **Update User** műveletet, és kattints a ceruza ikonra.
4. A mezőtérképen a `user_id` mezőhöz válaszd a **User ID (will update this user)** lehetőséget, a többi mezőt rendeld a megfelelő felhasználói adatokhoz.
5. A **User Role** mezőben válaszd a **Subscriber** szerepkört. Így az a **Customer** szerepkörű felhasználó, aki elküldi az űrlapot és előfizet, előfizetővé válik.
6. A **Messages Settings** részben módosíthatod az űrlap beküldésekor megjelenő üzeneteket.
7. Kattints az **Update** gombra.

![Az Edit Update User ablak a mezőtérképpel és a szerepkör választóval](./kepek/halado-update-user.webp)

*Az Edit Update User ablak a mezőtérképpel és a szerepkör választóval* (https://minta-bolt.hu/wp-admin/post.php?post=7&action=edit)

A képen a mezőtérkép, a **USER ROLE** lista és az üzenetek beállításai látszanak.

### Események a szerepkör-váltáshoz

1. A **Update User** művelet alatt kattints az **Edit Conditions & Events** gombra.
2. Az **Events match** fülön válaszd a `GATEWAY.SUCCESS` eseményt. Ekkor a művelet csak azután fut le, hogy a látogató a fizetési rendszer oldalán sikeresen fizetett, vagyis az előfizetővé válás a fizetés után történik meg.
3. Kattints az **Update** gombra.

A lejárat kezeléséhez vegyél fel egy második **Update User** műveletet:

1. A mezőtérkép ugyanaz, mint az előzőnél, de a **User Role** most **Customer**. Kattints az **Update** gombra.
2. Az **Edit Conditions & Events** ablak **Events match** fülén add hozzá a `GATEWAY.SUBSCRIPTION.CANCELLED`, a `GATEWAY.SUBSCRIPTION.EXPIRED` és a `GATEWAY.SUBSCRIPTION.SUSPENDED` eseményt. Kattints az **Update** gombra.

A végén két **Update User** művelet van az űrlapon: az egyik előfizetővé teszi a felhasználót, a másik visszaállítja. Mentsd az űrlapot az **Update** gombbal.

## 2. Az oldal tartalma Elementorban

### Felugró ablak (nem kötelező)

Az űrlapot elhelyezheted közvetlenül az oldalon, vagy felugró ablakban. Ha a JetPopup aktív:

1. Menj ide: **JetPopup → Create New Popup**, adj címet, és kattints a **Publish**, majd az **Edit with Elementor** gombra.
2. Húzd be a **JetForm** widgetet, és válaszd ki az előbb frissített űrlapot. Kattints az **Update** gombra.

### Láthatósági szabályok (Dynamic Visibility)

1. Nyisd meg azt az oldalt, amelynek a tartalmát csak előfizetők láthatják.
2. Tegyél be egy két oszlopos szekciót. Az elsőbe egy kép vagy gomb kerül, amely jelzi, hogy a tartalom zárolt és elő kell fizetni. A másodikba kerül a tartalom (például videó, kép), amelyet az előfizetők látnak. Egymás fölé is teheted a widgeteket, középre igazítva.
3. Kattints az első oszlopra, nyisd meg az **Advanced** részt, azon belül a **Dynamic Visibility** fület, és kapcsold be a kapcsolót. A láthatóság típusa **Show element if condition met**, a feltétel **User Role is not**, a szerepkör **Subscriber**.
4. Ugyanennek az elemnek a **JetPopup** fülén csatold hozzá a felugró ablakot, és válaszd ki az indítót (például **Click on Widget**; gombnál **Click on Button**).
5. Ha nincs felugró ablakod, az űrlap widgetet közvetlenül az oszlopba is teheted, és arra is ráteheted a láthatósági szabályt.
6. A második oszlopnál ugyanígy kapcsold be a **Dynamic Visibility** kapcsolót, **Show element if condition met** típussal, de a feltétel itt **User Role is**, a szerepkör **Subscriber**. A két szabály hasonlónak látszik, de nem ugyanaz: az egyik csak a nem előfizetőknek, a másik csak az előfizetőknek mutat tartalmat.
7. Kattints a **Publish** (vagy **Update**) gombra.

## 3. Az oldal tartalma a blokkszerkesztőben

1. Hozz létre egy oldalt vagy nyiss meg egy meglévőt, és tedd rá a **JetForm** blokkot a PayPal-os űrlappal. A blokkra kattintva megjelenik a **Dynamic Visibility** ikon.
2. Kattints az ikonra, és kapcsold be a kapcsolót. A láthatóság típusa maradjon **Show element if condition met**, kattints az **Add new item** gombra, és válaszd a **User Role is not** feltételt, a **Subscriber** szerepkörrel.
3. Zárd be az ablakot, és lépj a csak előfizetőknek szóló tartalomhoz (például videó vagy kép blokk).
4. Itt is kattints a **Dynamic Visibility** ikonra, kapcsold be, a típus **Show element if condition met**, az **Add new item** gombbal vegyél fel egy **User Role is** feltételt **Subscriber** szerepkörrel.
5. Kattints a **Publish** (vagy **Update**) gombra.

Így a látogató a szerepköre szerint vagy az űrlapot, vagy a tartalmat látja.

## 4. Ellenőrzés

Az űrlap kipróbálásához jelentkezz be egy másik, **Customer** szerepkörű fiókkal. Ha a saját adminisztrátori fiókodból küldöd el az űrlapot, az adminisztrátori szerepkör is előfizetővé változhat.

1. Nyisd meg az űrlapot és a tartalmat tartalmazó oldalt. Customer szerepkörrel csak a zárolást jelző kép látszik a felugró ablakkal.
2. Kattints a képre, töltsd ki az űrlapot, és küldd el.
3. Jelentkezz be a PayPalba, és fizess elő. A fizetés után visszakerülsz az oldalra, ahol a Dynamic Visibility már a fizetős tartalmat mutatja: a szerepkör átváltott.
4. Adminisztrátorként a **Felhasználók** oldalon is látod, hogy a felhasználó **Subscriber** (előfizető) szerepkört kapott.
