Vai al contenuto principale

Autenticazione e Permessi

L'API di ChurchApps utilizza l'autenticazione basata su JWT. Gli utenti effettuano il login per ricevere un token che codifica la loro identità, appartenenza alla chiesa e permessi. Questa pagina copre il flusso di autenticazione, il modello dei permessi e il supporto OAuth.

Flusso di Login

Login Standard

POST /membership/users/login

Auth: Public

Accetta uno dei tre tipi di credenziali:

CampoDescrizione
email + passwordLogin standard email/password
jwtRe-autenticazione con un JWT esistente
authGuidLink di autenticazione monouso (usato nelle email di benvenuto/reset)

Risposta:

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

Il campo token è un JWT che deve essere inviato come Authorization: Bearer <token> nelle richieste successive.

Contenuto del Token

Il JWT codifica:

  • id — ID Utente
  • churchId — Chiesa attualmente selezionata
  • personId — Record persona per la chiesa selezionata
  • Array di permessi per-API

Selezione della Chiesa

Gli utenti possono appartenere a più chiese. La risposta di login include tutte le chiese con i rispettivi permessi. Per cambiare chiesa, il client genera un nuovo JWT delimitato a una chiesa diversa dai dati della risposta di login.

Registrazione Utente

Registra un Nuovo Utente

POST /membership/users/register

Auth: Public

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

Crea un utente con una password temporanea e invia un'email di benvenuto con un link di autenticazione. Il primo utente registrato su una nuova istanza ottiene automaticamente l'accesso di amministratore del server.

Registra una Nuova Chiesa

POST /membership/churches/add

Auth: JWT

Dopo aver registrato un utente, chiama questo endpoint per creare una chiesa e associare l'utente ad essa.

Gestione Password

MetodoPercorsoAuthDescrizione
POST/membership/users/forgotPublicInvia un'email di reset password. Body: { "userEmail": "...", "appName": "...", "appUrl": "..." }
POST/membership/users/setPasswordGuidPublicImposta una nuova password usando un GUID di autenticazione da un'email di reset. Body: { "authGuid": "...", "newPassword": "..." }
POST/membership/users/updatePasswordJWTCambia la password dell'utente corrente. Body: { "newPassword": "..." }

Modello dei Permessi

I permessi sono organizzati per modulo e assegnati agli utenti tramite ruoli. Ogni permesso ha un tipo di contenuto e un'azione.

Riferimento Permessi

Sezione DisplayTipo ContenutoAzioneDescrizione
AttendanceAttendanceCheckinCheck-in dei membri ai servizi
AttendanceEditModifica registrazioni presenze
ServicesEditGestisci servizi e orari dei servizi
AttendanceViewVisualizza registrazioni presenze
AttendanceView SummaryVisualizza riepiloghi e report presenze
DonationsDonationsEditCrea e modifica registrazioni donazioni
SettingsEditModifica impostazioni donazioni/pagamenti
DonationsView SummaryVisualizza report riepilogo donazioni
DonationsViewVisualizza singole registrazioni donazioni
People and GroupsFormsAdminAmministrazione completa dei moduli
FormsEditModifica definizioni moduli
PlansEditModifica piani di servizio
Group MembersEditAggiungi/rimuovi membri del gruppo
GroupsEditCrea e modifica gruppi
HouseholdsEditModifica assegnazioni nuclei familiari
PeopleEditModifica qualsiasi record persona
PeopleEdit SelfModifica solo il proprio record persona
RolesEditGestisci ruoli e assegnazioni utente
Group MembersViewVisualizza liste membri del gruppo
PeopleView MembersVisualizza solo i membri (non i visitatori)
PeopleViewVisualizza tutte le persone
RolesViewVisualizza ruoli e assegnazioni
SettingsEditModifica impostazioni della chiesa
ContentContentEditModifica pagine, sezioni, elementi
SettingsEditModifica impostazioni contenuto
StreamingServicesEditGestisci configurazione servizi di streaming
ChatHostOspita/modera sessioni di chat
MessagingTextingSendInvia messaggi SMS

Come Vengono Controllati i Permessi

Nei controller, i permessi vengono controllati usando il metodo au.checkAccess():

// Richiedi permesso specifico
if (!au.checkAccess(Permissions.people.edit)) return this.json({}, 401);

// O all'interno di actionWrapper — il sistema CRUD controlla automaticamente
crudSettings: {
permissions: {
view: Permissions.people.view,
edit: Permissions.people.edit
}
}

Amministratore del Server

Il permesso Server.Admin garantisce l'accesso completo a tutte le chiese. Viene assegnato al primo utente registrato e può essere concesso ad altri tramite il ruolo di amministratore del server.

OAuth 2.0

L'API supporta OAuth 2.0 per integrazioni di terze parti. Sono disponibili due tipi di grant.

Flusso Authorization Code

  1. Autorizza: POST /membership/oauth/authorize (JWT richiesto)

    • Body: { "client_id": "...", "redirect_uri": "...", "response_type": "code", "scope": "...", "state": "..." }
    • Restituisce: { "code": "...", "state": "..." }
  2. Scambia codice per token: POST /membership/oauth/token (Public)

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

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

I token di accesso scadono dopo 12 ore.

Flusso Device Code (RFC 8628)

Per dispositivi senza browser (app TV, chioschi):

  1. Richiedi device code: POST /membership/oauth/device/authorize (Public)

    • Body: { "client_id": "...", "scope": "..." }
    • Restituisce: { "device_code": "...", "user_code": "ABCD-1234", "verification_uri": "https://app.b1.church/device", "expires_in": 900, "interval": 5 }
  2. L'utente inserisce il codice all'URI di verifica e approva o rifiuta

  3. Polling per token: POST /membership/oauth/token (Public)

    • Body: { "grant_type": "urn:ietf:params:oauth:grant-type:device_code", "device_code": "...", "client_id": "..." }
    • Restituisce authorization_pending fino all'approvazione, poi restituisce il token di accesso

Gestione Client OAuth

MetodoPercorsoAuthPermessoDescrizione
GET/membership/oauth/clientsJWTServer.AdminLista tutti i client OAuth
GET/membership/oauth/clients/:idJWTServer.AdminOttieni client per ID
GET/membership/oauth/clients/clientId/:clientIdJWTOttieni client per client ID (segreto redatto)
POST/membership/oauth/clientsJWTServer.AdminCrea o aggiorna un client
DELETE/membership/oauth/clients/:idJWTServer.AdminElimina un client

Endpoint Approvazione Dispositivo

MetodoPercorsoAuthDescrizione
GET/membership/oauth/device/pending/:userCodeJWTOttieni info device code in attesa per l'interfaccia di approvazione
POST/membership/oauth/device/approveJWTApprova un'autorizzazione dispositivo. Body: { "user_code": "...", "church_id": "..." }
POST/membership/oauth/device/denyJWTRifiuta un'autorizzazione dispositivo. Body: { "user_code": "..." }

Endpoint Pubblici vs Autenticati

L'API usa due funzioni wrapper che determinano i requisiti di autenticazione:

  • actionWrapper — Richiede un JWT valido. L'oggetto utente autenticato (au) è disponibile con churchId, userId e controlli dei permessi.
  • actionWrapperAnon — Nessuna autenticazione richiesta. Usato per login, registrazione, ricerche di contenuto pubblico e ricevitori di webhook.

Nelle tabelle degli endpoint in questa documentazione, questi sono indicati rispettivamente come JWT e Public nella colonna Auth.

Pagine Correlate