Al momento stiamo sviluppando un servizio (un'API REST) che viene richiamato dalla nostra applicazione principale. L'applicazione principale contiene una configurazione di utenti / permessi / ruoli che viene utilizzata per verificare se l'utente è in grado di completare le attività sull'applicazione. La relazione ruoli-utente è uno-a-molti.
L'API di terze parti ha vari punti finali. Ora è necessario implementare un sistema di tipi ruolo / permessi per gli endpoint. Ad esempio, il ruolo A potrebbe essere in grado di chiamare un endpoint di creazione / aggiornamento ma non distruggere.
La domanda si trova all'interno del quale i ruoli / permessi devono essere archiviati e verificati per il servizio API REST. Abbiamo già ruoli / permessi impostati nell'applicazione principale e l'aggiunta di ruoli specifici di finanza a questa configurazione sembra la scelta sbagliata. Significa anche che la logica non sarebbe contenuta nel servizio dell'API REST, quindi se dovessimo chiamare gli endpoint di altri servizi in un secondo momento, questo servizio richiederebbe anche l'impostazione di ruoli / permessi.
La domanda in generale è
Se le tabelle / log delle autorizzazioni / ruoli sono archiviate nel servizio API REST (il servizio API REST), sono quasi certo che questo è l'approccio corretto / migliore.
Come assegnare i ruoli / permessi dei servizi API agli utenti dell'applicazione principale. Forse richiede l'installazione di tabelle aggiuntive che contengono ruoli specifici del servizio (questo si sente ancora sporco perché avremmo due diversi posti in cui gli utenti si riferiscono ai ruoli)
Un'altra opzione è quella di avere una tabella roles_users sul servizio API REST che collega l'ID utente principale ai ruoli all'interno del servizio.
Altre considerazioni sono che l'applicazione principale dovrà controllare queste autorizzazioni quasi ogni caricamento della pagina per verificare se alcune informazioni di menu dovrebbero essere visualizzate - possiamo ovviamente memorizzare queste informazioni poiché non dovrebbe essere cambiato spesso.
Il framework è Laravel, ma non penso che questo sia rilevante per la domanda. Incluso nel caso in cui.