Devo consentire agli utenti di caricare file con dati sensibili su un server, quindi invitare altri utenti autenticati ad accedere a file specifici.
Questa è la mia soluzione proposta:
Ogni utente avrà la propria cartella in cui carica i file e la cartella principale avrà un .htaccess con deny all
per bloccare l'accesso diretto. (Questo funziona già bene.)
Quindi, un utente invitato riceverà un ID invito SHA1 generato e l'url sarà qualcosa come download/[sha1]/file
e quindi posso usare il mio controller per verificare se questo invito esiste nel database per questo utente autenticato. Se lo fa, ottengo il file e in base all'estensione del file ho dato l'intestazione appropriata per il download del file.
es:
localhost/[whatever]/download/[some_hash]/test.txt
invitation_table
invite_id - unique ID
invite_token - sha1 which will be generated by his unique email concatenated with other data
invite_invited - logged user invite
invite_user - user who invited the user
Sulla base dell'hash, interrogo il db e ottengo i dati di invite_user e so in quale directory devo ottenere il file perché ci possono essere più file sul server con lo stesso nome in diverse directory.
È un buon approccio?