Sto progettando un'applicazione in cui gli utenti si scambiano messaggi privati e possono inviare messaggi a qualsiasi   Entity    nel database (un   Entity    potrebbe non avere ancora un account utente, è un database professionale). Non sono sicuro di come progettare al meglio il database e l'API per consentire agli utenti non registrati di messaggistica. L'applicazione deve rimanere protetta e i dati sono accessibili solo a coloro che dispongono delle autorizzazioni corrette. 
 I messaggi inviati a persone senza account utente fungono da invito. La persona invitata dovrebbe essere in grado di visualizzare il messaggio, agire su di esso e completare la registrazione dell'utente dopo aver ricevuto un   InviteMessage   . 
In termini semplici, ho:
User
    misc user fields (email, pw, dateJoined)
Entity (large professional dataset):
   personalDetails... 
   user->User (may be null) 
UserMessage:
   sender->User 
   recipient->User
   dateCreated
   messageContent, other fields.....
InviteMessage:
   sender->User
   recipient->Entity
   expiringUrl
   inviteeEmail
   inviteePhone
 Ho intenzione di avvisare l'utente quando selezioni un   recipient    che non è ancora stato registrato, e informo che può inviare il messaggio come un invito fornendo un'e-mail, un telefono dove possiamo inviare l'invito. 
 Gli inviti avranno un URL univoco e univoco, ad es. %codice%. Una volta effettuato l'accesso, l'invitato visualizzerà il   uuid.uuid4()    e i dettagli sul completamento del suo profilo di registrazione. 
 Quando la registrazione è completa,   InviteMessage    dettagli su una nuova istanza di   InviteMessage    (per non perdere i loro dati), e assegnalo al   UserMessage    appena creato. 
La possibilità di interagire con e invitare persone che non hanno ancora account è una caratteristica chiave dell'applicazione, e sembra preferibile separare l'invito dai messaggi privati, app (più facile mantenere le funzionalità separate, meglio se modello dati modifiche).
- Si tratta di un progetto ragionevole e valido?
- Se no, cosa suggeriresti?
- Hai qualche miglioramento?
- Sono corretto per scegliere di creare un endpoint separato per la creazione di inviti tramite l'API?