Naar hoofdinhoud gaan

Verificatie & Toestemmingen

De ChurchApps API maakt gebruik van JWT-gebaseerde verificatie. Gebruikers loggen in om een token te ontvangen dat hun identiteit, kerklidmaatschap en toestemmingen codeert. Deze pagina behandelt de auth-flow, het toestemmingsmodel en OAuth-ondersteuning.

Inlogflow

Standaardinloggen

POST /membership/users/login

Verwijzing: Openbaar

Accepteert één van drie referentietypen:

VeldBeschrijving
email + passwordStandaard e-mail/wachtwoordinloggen
jwtOpnieuw verifiëren met een bestaande JWT
authGuidEenmalige auth-link (gebruikt in welkoms- en reset-e-mails)

Antwoord:

{
"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>"
}

Het token veld is een JWT dat als Authorization: Bearer <token> in latere aanvragen moet worden verzonden.

Tokeninhoud

De JWT codeert:

  • id — Gebruikers-ID
  • churchId — Momenteel geselecteerde kerk
  • personId — Persoonverslag voor de geselecteerde kerk
  • Per-API-toestemmingsmatrixen

Kerkzelectie

Gebruikers kunnen tot meerdere kerken behoren. Het inlogantwoord bevat alle kerken met hun toestemmingen. Om van kerk te wisselen, genereert de client een nieuwe JWT gericht op een ander kerk vanuit de inlogantwoordgegevens.

Gebruikersregistratie

Een nieuwe gebruiker registreren

POST /membership/users/register

Verwijzing: Openbaar

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

Maakt een gebruiker aan met een tijdelijk wachtwoord en stuurt een welkoms-e-mail met een auth-link. De eerste gebruiker die op een nieuw instantie is geregistreerd, krijgt automatisch serverbeheerderraafdracht.

Een nieuwe kerk registreren

POST /membership/churches/add

Verwijzing: JWT

Na het registreren van een gebruiker, roep dit eindpunt aan om een kerk te maken en deze aan de gebruiker te koppelen.

Wachtwoordbeheer

MethodePadVerwijzingBeschrijving
POST/membership/users/forgotOpenbaarStuur een wachtwoord-reset-e-mail. Body: { "userEmail": "...", "appName": "...", "appUrl": "..." }
POST/membership/users/setPasswordGuidOpenbaarStel een nieuw wachtwoord in met een auth GUID uit een reset-e-mail. Body: { "authGuid": "...", "newPassword": "..." }
POST/membership/users/updatePasswordJWTWijzig het wachtwoord van de huidige gebruiker. Body: { "newPassword": "..." }

Toestemmingsmodel

Toestemmingen worden door modules georganiseerd en aan gebruikers toegewezen via rollen. Elke toestemming heeft een inhoudstype en een actie.

Toestemmingsverwijzing

WeergavepaginaInhoudstypeActieBeschrijving
AanwezigheidAttendanceCheckinLeden inchecken bij diensten
AttendanceEditAanwezigheidsverslagen bewerken
ServicesEditDiensten en servicetijden beheren
AttendanceViewAanwezigheidsverslagen bekijken
AttendanceView SummaryAanwezigheids samenvattingen en rapporten bekijken
DonatiesDonationsEditDonatie-verslagen maken en bewerken
SettingsEditGeven/betalingsinstellingen bewerken
DonationsView SummaryDonatie samenvattingsrapporten bekijken
DonationsViewIndividuele donatieverslagen bekijken
Mensen en groepenFormsAdminVolledige formbeheer
FormsEditFormdefinities bewerken
PlansEditServiceplanning bewerken
Group MembersEditGroepsleden toevoegen/verwijderen
GroupsEditGroepen maken en bewerken
HouseholdsEditHuishoudentoewijzingen bewerken
PeopleEditElk persoonverslag bewerken
PeopleEdit SelfAlleen je eigen persoonverslag bewerken
RolesEditRollen en gebruikerstoewijzingen beheren
Group MembersViewGroepsledenlijsten bekijken
PeopleView MembersAlleen leden bekijken (geen bezoekers)
PeopleViewAlle mensen bekijken
RolesViewRollen en toewijzingen bekijken
SettingsEditKerkinstellingen bewerken
InhoudContentEditPagina's, secties, elementen bewerken
SettingsEditInhoudinstellingen bewerken
StreamingServicesEditStreaming service-configuratie beheren
ChatHostChat-sessies hosten/modereren
BerichtenTextingSendSMS-tekstberichten verzenden

Hoe toestemmingen worden gecontroleerd

In controllers worden toestemmingen gecontroleerd met de au.checkAccess() methode:

// Vereisen specifieke toestemming
if (!au.checkAccess(Permissions.people.edit)) return this.json({}, 401);

// Of in actionWrapper -- het CRUD-systeem controleert automatisch
crudSettings: {
permissions: {
view: Permissions.people.view,
edit: Permissions.people.edit
}
}

Serverbeheerder

De Server.Admin toestemming verleent volledige toegang in alle kerken. Dit wordt toegewezen aan de eerste geregistreerde gebruiker en kan aan anderen worden verleend via de serverbeheerderrole.

OAuth 2.0

De API ondersteunt OAuth 2.0 voor integratie van derden. Twee subsidietypen zijn beschikbaar.

Autorisatiecodestroom

  1. Autoriseren: POST /membership/oauth/authorize (JWT vereist)

    • Body: { "client_id": "...", "redirect_uri": "...", "response_type": "code", "scope": "...", "state": "..." }
    • Retourneert: { "code": "...", "state": "..." }
  2. Code voor token uitwisselen: POST /membership/oauth/token (Openbaar)

    • Body: { "grant_type": "authorization_code", "code": "...", "client_id": "...", "client_secret": "...", "redirect_uri": "..." }
    • Retourneert: { "access_token": "...", "token_type": "Bearer", "expires_in": 43200, "refresh_token": "...", "scope": "..." }
  3. Token vernieuwen: POST /membership/oauth/token (Openbaar)

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

Toegangstokens verlopen na 12 uur.

Apparaatcodestroom (RFC 8628)

Voor apparaten zonder browser (TV-apps, kiosken):

  1. Apparaatcode aanvragen: POST /membership/oauth/device/authorize (Openbaar)

    • Body: { "client_id": "...", "scope": "..." }
    • Retourneert: { "device_code": "...", "user_code": "ABCD-1234", "verification_uri": "https://app.b1.church/device", "expires_in": 900, "interval": 5 }
  2. Gebruiker voert de code in op de verificatie-URI en keurt goed of weigert

  3. Poll voor token: POST /membership/oauth/token (Openbaar)

    • Body: { "grant_type": "urn:ietf:params:oauth:grant-type:device_code", "device_code": "...", "client_id": "..." }
    • Retourneert authorization_pending totdat goedgekeurd, dan retourneert het toegangstoken

OAuth Client Management

MethodePadVerwijzingToestemmingBeschrijving
GET/membership/oauth/clientsJWTServer.AdminLijst alle OAuth clients
GET/membership/oauth/clients/:idJWTServer.AdminGet client op ID
GET/membership/oauth/clients/clientId/:clientIdJWTGet client op client ID (geheim geredacteerd)
POST/membership/oauth/clientsJWTServer.AdminOAuth client maken of bijwerken
DELETE/membership/oauth/clients/:idJWTServer.AdminOAuth client verwijderen

Apparaat Goedkeuringseindpunten

MethodePadVerwijzingBeschrijving
GET/membership/oauth/device/pending/:userCodeJWTZoekopdracht apparaatcodeinformatie voor goedkeuringsuivoering
POST/membership/oauth/device/approveJWTApparaatautorisatie goedkeuren. Body: { "user_code": "...", "church_id": "..." }
POST/membership/oauth/device/denyJWTApparaatautorisatie weigeren. Body: { "user_code": "..." }

Openbare versus geverifieerde eindpunten

De API gebruikt twee wrapper-functies die verificatievereisten bepalen:

  • actionWrapper -- Vereist een geldige JWT. Het geverifieerde gebruikersobject (au) is beschikbaar met churchId, userId en toestemmingscontroles.
  • actionWrapperAnon -- Geen verificatie vereist. Gebruikt voor inloggen, registratie, openbare inhoudsaanzoeken en webhook-ontvangers.

In de eindpunttabellen in deze documentatie worden deze aangeduid als JWT en Openbaar in de Verificatie kolom.

Gerelateerde pagina's

  • Modulestructuur — Hoe controllers, opslagplaatsen en modellen zijn georganiseerd
  • Lokale setup — Voer de API lokaal uit voor ontwikkeling