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/:clientIdJWT—Get 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