Yeqa uye kokucuketse lokuyinhloko

Kutivakalisa & Timvumo

I-ChurchApps API isebentisa kutivakalisa lokusekelwe yi-JWT. Bantfu bangena kutfola token lekhipha buni bawo, buhlengwa belibandla, kanye netimvumo. Lelikhasi likhomba inchubo yekutivakalisa, sifanekiso semvumo, kanye nekusekelwa kwe-OAuth.

Inchubo Yekungena

Kungena Lokuvamile

POST /membership/users/login

Kutivakalisa: Ngeyeveleni

Yamukela lolunye lwaletinhlobo letintsatfu tefakazi:

InsimuIncazelo
email + passwordKungena lokuvamile nge-imeyili/liphasiwedi
jwtTivakalise kabusha nge-JWT lesele ikhona
authGuidUmkhondvo wekungena wekanyekanye (osetjentiswa ku-imeyili yekwemukela/yekusetjwa kabusha)

Imphendvulo:

{
"user": {
"id": "abc-123",
"firstName": "Jane",
"lastName": "Doe",
"email": "jane@example.com"
},
"churches": [
{
"church": { "id": "church-1", "name": "First Church", "subDomain": "firstchurch" },
"person": { "id": "person-1", "membershipStatus": "Member" },
"groups": [{ "id": "group-1", "name": "Choir", "leader": false }],
"apis": [
{
"keyName": "MembershipApi",
"permissions": [
{ "contentType": "People", "action": "View" },
{ "contentType": "People", "action": "Edit" }
]
}
]
}
],
"token": "<jwt-token>"
}

Insimu ye-token yi-JWT lekufanele itfunyelwe njenge-Authorization: Bearer <token> kuticelo letilandzelako.

Kucuketfwe Kwe-Token

I-JWT ikhipha:

  • id — I-ID yemsebentisi
  • churchId — Libandla lelikhethiwe njengamanje
  • personId — Umbhalo womuntfu welibandla lelikhethiwe
  • Luhla lwetimvumo ngayinye ye-API

Kukhetsa Libandla

Bantfu bangaba kulamabandla lamanyenti. Imphendvulo yekungena ifaka onkhe emabandla netimvumo tawo. Kushintja emabandla, i-client yakha i-JWT lensha lekhitwe kulelinye libandla kusuka kudatha yemphendvulo yekungena.

Kubhaliswa Kwemsebentisi

Bhalisa Umsebentisi Lomusha

POST /membership/users/register

Kutivakalisa: Ngeyeveleni

{
"email": "jane@example.com",
"firstName": "Jane",
"lastName": "Doe",
"appName": "B1 Admin",
"appUrl": "https://app.b1.church"
}

Yakha umsebentisi ngephasiwedi yesikhashana futsi itfumela i-imeyili yekwemukela lene-umkhondvo wekungena. Umsebentisi wekucala lobhaliswe ku-instance lensha unikwa ngekutentekela kufinyelela kwe-server admin.

Bhalisa Libandla Lelisha

POST /membership/churches/add

Kutivakalisa: JWT

Ngemuva kwekubhalisa umsebentisi, bita le-endpoint kwakha libandla nekuhlanganisa umsebentisi nalo.

Kuphatsa Liphasiwedi

InchuboUmkhondvoKutivakalisaIncazelo
POST/membership/users/forgotNgeyeveleniTfumela i-imeyili yekusetja liphasiwedi kabusha. Umtimba: { "userEmail": "...", "appName": "...", "appUrl": "..." }
POST/membership/users/setPasswordGuidNgeyeveleniSetja liphasiwedi lelisha kusetjentiswa i-auth GUID lesuka ku-imeyili yekusetja kabusha. Umtimba: { "authGuid": "...", "newPassword": "..." }
POST/membership/users/updatePasswordJWTShintja liphasiwedi lemsebentisi wanyalo. Umtimba: { "newPassword": "..." }

Sifanekiso Semvumo

Timvumo tihlelwe nge-module futsi tinikwe basebentisi ngema-role. Imvumo ngayinye inayo luhlobo lwekucuketfwe kanye nesento.

Luhla Lwetimvumo

Sigaba SekubonisaLuhlobo LwekucuketfweSentoIncazelo
AttendanceAttendanceCheckinNgenisa emalunga enkhonzweni
AttendanceEditHlela imibhalo yekubakhona
ServicesEditPhatsa ema-service nemasikhatsi awo
AttendanceViewBuka imibhalo yekubakhona
AttendanceView SummaryBuka sifingqo netincwadzi tekubakhona
DonationsDonationsEditAkha futsi uhlele imibhalo yeminikelo
SettingsEditHlela tilungiselelo teminikelo/tinkhokhelo
DonationsView SummaryBuka tincwadzi tesifingqo seminikelo
DonationsViewBuka imibhalo yeminikelo yakamunye
People and GroupsFormsAdminKuphatsa lokugcwele kwemafomu
FormsEditHlela ticazelo temafomu
PlansEditHlela ema-plan e-service
Group MembersEditEngeta/susa emalunga elicembu
GroupsEditAkha futsi uhlele emacembu
HouseholdsEditHlela kwabelwa emakhaya
PeopleEditHlela nome ngimuphi umbhalo womuntfu
PeopleEdit SelfHlela kuphela umbhalo wakho
RolesEditPhatsa ema-role kanye nekwabelwa kwabasebentisi
Group MembersViewBuka luhla lwemalunga elicembu
PeopleView MembersBuka emalunga kuphela (hhayi tivakashi)
PeopleViewBuka bonkhe bantfu
RolesViewBuka ema-role nekwabelwa
SettingsEditHlela tilungiselelo telibandla
ContentContentEditHlela emakhasi, tigaba, ema-element
SettingsEditHlela tilungiselelo tekucuketfwe
StreamingServicesEditPhatsa kuhlelwa kwe-service yekusakaza
ChatHostPhatsa/lawula ticgawu te-chat
MessagingTextingSendTfumela imilayeto ye-SMS

Indlela Timvumo Letihlolwa Ngayo

Ku-ema-controller, timvumo tihlolwa kusetjentiswa indlela le-au.checkAccess():

// Dzinga imvumo lekhetsekile
if (!au.checkAccess(Permissions.people.edit)) return this.json({}, 401);

// Nobe ngekhatsi kwe-actionWrapper — layela le-CRUD liyahlola ngekutentekela
crudSettings: {
permissions: {
view: Permissions.people.view,
edit: Permissions.people.edit
}
}

Server Admin

Imvumo ye-Server.Admin iniketa kufinyelela lokugcwele kuwo wonkhe emabandla. Loku kunikwa umsebentisi wekucala lobhaliswe futsi kunganiketwa labanye ngendlela ye-role ye-server admin.

OAuth 2.0

I-API isekela i-OAuth 2.0 kuhlanganiswa kwelucezu lwesitsatfu. Tinhlobo letimbili te-grant tiyatfolakala.

Inchubo Ye-Authorization Code

  1. Authorize: POST /membership/oauth/authorize (JWT iyadzingeka)

    • Umtimba: { "client_id": "...", "redirect_uri": "...", "response_type": "code", "scope": "...", "state": "..." }
    • Kubuya: { "code": "...", "state": "..." }
  2. Shintjanisa code ibe token: POST /membership/oauth/token (Ngeyeveleni)

    • Umtimba: { "grant_type": "authorization_code", "code": "...", "client_id": "...", "client_secret": "...", "redirect_uri": "..." }
    • Kubuya: { "access_token": "...", "token_type": "Bearer", "expires_in": 43200, "refresh_token": "...", "scope": "..." }
  3. Refresh token: POST /membership/oauth/token (Ngeyeveleni)

    • Umtimba: { "grant_type": "refresh_token", "refresh_token": "...", "client_id": "...", "client_secret": "..." }

Ema-Access token ayaphela ngemuva kwemahora langu-12.

Inchubo Ye-Device Code (RFC 8628)

Kuma-divayisi langenayo i-browser (ema-app e-TV, ema-kiosk):

  1. Cela device code: POST /membership/oauth/device/authorize (Ngeyeveleni)

    • Umtimba: { "client_id": "...", "scope": "..." }
    • Kubuya: { "device_code": "...", "user_code": "ABCD-1234", "verification_uri": "https://app.b1.church/device", "expires_in": 900, "interval": 5 }
  2. Umsebentisi ufaka code ku-verification URL bese uyavuma nobe uyala

  3. Polla kutfola token: POST /membership/oauth/token (Ngeyeveleni)

    • Umtimba: { "grant_type": "urn:ietf:params:oauth:grant-type:device_code", "device_code": "...", "client_id": "..." }
    • Ibuyisela authorization_pending kuze kuvunywe, bese ibuyisela i-access token

Kuphatsa I-OAuth Client

InchuboUmkhondvoKutivakalisaImvumoIncazelo
GET/membership/oauth/clientsJWTServer.AdminBala tonkhe ema-OAuth client
GET/membership/oauth/clients/:idJWTServer.AdminTfola client nge-ID
GET/membership/oauth/clients/clientId/:clientIdJWTTfola client nge-client ID (imfihlo iyafihlwa)
POST/membership/oauth/clientsJWTServer.AdminAkha nobe buyeketa client
DELETE/membership/oauth/clients/:idJWTServer.AdminSula client

Ema-Endpoint Ekuvuma Kwe-Device

InchuboUmkhondvoKutivakalisaIncazelo
GET/membership/oauth/device/pending/:userCodeJWTTfola imininingwane ye-device code lelindzele kwe-UI yekuvuma
POST/membership/oauth/device/approveJWTVuma kutivakalisa kwe-device. Umtimba: { "user_code": "...", "church_id": "..." }
POST/membership/oauth/device/denyJWTYala kutivakalisa kwe-device. Umtimba: { "user_code": "..." }

Ema-Endpoint Eveleni Kanye Naletivakalisiwe

I-API isebentisa ema-function lamabili e-wrapper lachaza tidzingo tekutivakalisa:

  • actionWrapper — Idzinga i-JWT lesebentako. Sitfo semsebentisi lotivakalisiwe (au) siyatfolakala ne-churchId, userId, kanye nekuhlolwa kwemvumo.
  • actionWrapperAnon — Akukho kutivakalisa lokudzingekako. Kusetjentiswa kukungena, kubhaliswa, kufuna kucuketfwe kwelibandla, kanye nabemukeli bewebhook.

Kuletafula tema-endpoint kulo lonkhe lombhalo, loku kukhonjiswa kutsi JWT kanye neNgeyeveleni ekholomeni yeKutivakalisa.

Emakhasi Lahlobene

  • Module Structure — Kuhlelwa kwema-controller, ema-repository, kanye nema-model
  • Local Setup — Kusebentisa i-API endzaweni yakho kutfutfuka