Hopp til hovedinnhold

Autentisering og tillatelser

ChurchApps API bruker JWT-basert autentisering. Brukere logger inn for å motta et token som koder identiteten, kirkemedlemskapet og tillatelsene deres. Denne siden dekker autentiseringsflyten, tillatelsesmodellen og OAuth-støtte.

Innloggingsflyt

Standard innlogging

POST /membership/users/login

Auth: Public

Aksepterer én av tre legitimasjonstyper:

FeltBeskrivelse
email + passwordStandard e-post/passord-innlogging
jwtRe-autentiser med et eksisterende JWT
authGuidEngangs-autentiseringslenke (brukes i velkomst-/tilbakestillingse-poster)

Respons:

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

token-feltet er et JWT som bør sendes som Authorization: Bearer <token> på etterfølgende forespørsler.

Tokeninnhold

JWT-et koder:

  • id — Bruker-ID
  • churchId — Nåværende valgt kirke
  • personId — Personoppføring for den valgte kirken
  • Tillatelses-lister per API

Kirkevalg

Brukere kan tilhøre flere kirker. Innloggingsresponsen inkluderer alle kirker med tillatelsene deres. For å bytte kirke genererer klienten et nytt JWT avgrenset til en annen kirke fra innloggingsresponsdataene.

Brukerregistrering

Registrer en ny bruker

POST /membership/users/register

Auth: Public

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

Oppretter en bruker med et midlertidig passord og sender en velkomst-e-post med en autentiseringslenke. Den første brukeren som registreres på en ny instans får automatisk serveradministratortilgang.

Registrer en ny kirke

POST /membership/churches/add

Auth: JWT

Etter å ha registrert en bruker, kall dette endepunktet for å opprette en kirke og tilknytte brukeren til den.

Passordadministrasjon

MethodPathAuthDescription
POST/membership/users/forgotPublicSend e-post for tilbakestilling av passord. Body: { "userEmail": "...", "appName": "...", "appUrl": "..." }
POST/membership/users/setPasswordGuidPublicAngi nytt passord ved hjelp av en auth-GUID fra en tilbakestillingse-post. Body: { "authGuid": "...", "newPassword": "..." }
POST/membership/users/updatePasswordJWTEndre gjeldende brukers passord. Body: { "newPassword": "..." }

Tillatelsesmodell

Tillatelser er organisert etter modul og tildelt brukere gjennom roller. Hver tillatelse har en innholdstype og en handling.

Tillatelsesreferanse

VisningsseksjonInnholdstypeHandlingBeskrivelse
AttendanceAttendanceCheckinSjekk inn medlemmer ved gudstjenester
AttendanceEditRediger oppmøteregistreringer
ServicesEditAdministrer gudstjenester og gudstjenestetider
AttendanceViewVis oppmøteregistreringer
AttendanceView SummaryVis oppmøteoppsummeringer og rapporter
DonationsDonationsEditOpprett og rediger gaveregistreringer
SettingsEditRediger gave-/betalingsinnstillinger
DonationsView SummaryVis gaveoppsummeringsrapporter
DonationsViewVis individuelle gaveregistreringer
People and GroupsFormsAdminFull skjemaadministrasjon
FormsEditRediger skjemadefinisjoner
PlansEditRediger tjenesteplaner
Group MembersEditLegg til/fjern gruppemedlemmer
GroupsEditOpprett og rediger grupper
HouseholdsEditRediger husstandstilordninger
PeopleEditRediger enhver personoppføring
PeopleEdit SelfRediger kun din egen personoppføring
RolesEditAdministrer roller og brukertilordninger
Group MembersViewVis gruppemedlemslister
PeopleView MembersVis kun medlemmer (ikke besøkende)
PeopleViewVis alle personer
RolesViewVis roller og tilordninger
SettingsEditRediger kirkeinnstillinger
ContentContentEditRediger sider, seksjoner, elementer
SettingsEditRediger innholdsinnstillinger
StreamingServicesEditAdministrer konfigurasjon for strømmingstjenester
ChatHostVært/moderer chat-økter
MessagingTextingSendSend SMS-tekstmeldinger

Hvordan tillatelser kontrolleres

I kontrollere sjekkes tillatelser ved hjelp av au.checkAccess()-metoden:

// Krev spesifikk tillatelse
if (!au.checkAccess(Permissions.people.edit)) return this.json({}, 401);

// Eller innenfor actionWrapper — CRUD-systemet sjekker automatisk
crudSettings: {
permissions: {
view: Permissions.people.view,
edit: Permissions.people.edit
}
}

Serveradministrator

Server.Admin-tillatelsen gir full tilgang på tvers av alle kirker. Denne tildeles den første registrerte brukeren og kan gis til andre gjennom serveradministratorrollen.

OAuth 2.0

API-et støtter OAuth 2.0 for tredjepartsintegrasjoner. To grant-typer er tilgjengelige.

Authorization Code-flyt

  1. Autoriser: POST /membership/oauth/authorize (JWT påkrevd)

    • Body: { "client_id": "...", "redirect_uri": "...", "response_type": "code", "scope": "...", "state": "..." }
    • Returnerer: { "code": "...", "state": "..." }
  2. Bytt kode mot token: POST /membership/oauth/token (Public)

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

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

Tilgangstokens utløper etter 12 timer.

Device Code-flyt (RFC 8628)

For enheter uten nettleser (TV-apper, kiosker):

  1. Forespør enhetskode: POST /membership/oauth/device/authorize (Public)

    • Body: { "client_id": "...", "scope": "..." }
    • Returnerer: { "device_code": "...", "user_code": "ABCD-1234", "verification_uri": "https://app.b1.church/device", "expires_in": 900, "interval": 5 }
  2. Brukeren skriver inn koden på verifiserings-URI-en og godkjenner eller avslår

  3. Poller etter token: POST /membership/oauth/token (Public)

    • Body: { "grant_type": "urn:ietf:params:oauth:grant-type:device_code", "device_code": "...", "client_id": "..." }
    • Returnerer authorization_pending til godkjent, deretter returneres tilgangstokenet

OAuth-klientadministrasjon

MethodPathAuthPermissionDescription
GET/membership/oauth/clientsJWTServer.AdminList alle OAuth-klienter
GET/membership/oauth/clients/:idJWTServer.AdminHent klient etter ID
GET/membership/oauth/clients/clientId/:clientIdJWTHent klient etter klient-ID (hemmelighet redigert bort)
POST/membership/oauth/clientsJWTServer.AdminOpprett eller oppdater en klient
DELETE/membership/oauth/clients/:idJWTServer.AdminSlett en klient

Enhetsgodkjenningsendepunkter

MethodPathAuthDescription
GET/membership/oauth/device/pending/:userCodeJWTHent ventende enhetskodeinfo for godkjennings-UI
POST/membership/oauth/device/approveJWTGodkjenn en enhetsautorisasjon. Body: { "user_code": "...", "church_id": "..." }
POST/membership/oauth/device/denyJWTAvslå en enhetsautorisasjon. Body: { "user_code": "..." }

Offentlige vs. autentiserte endepunkter

API-et bruker to wrapperfunksjoner som bestemmer autentiseringskrav:

  • actionWrapper — Krever et gyldig JWT. Det autentiserte brukerobjektet (au) er tilgjengelig med churchId, userId og tillatelseskontroller.
  • actionWrapperAnon — Ingen autentisering kreves. Brukes for innlogging, registrering, offentlige innholdsoppslag og webhook-mottakere.

I endepunkttabellene gjennom denne dokumentasjonen indikeres disse som henholdsvis JWT og Public i Auth-kolonnen.

Relaterte sider