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?