2012-05-08 10 views
8

voglio mandato che tutti gli utenti accettano i termini di servizio, come gran parte è descritto qui:Devise, richiedendo all'utente di accettare termini di servizio?

Ruby on Rails/Devise - Bypassing custom validation option in model when resetting password

Tuttavia ci sono 2 i requisiti che rendono l'approccio di cui sopra va bene.

1) Gli utenti non vengono registrati automaticamente, ma vengono creati da un amministratore di sistema. Ovviamente l'amministratore non può accettare termini e condizioni per conto degli utenti. All'utente dovrebbe essere richiesto di accettare termini e condizioni al loro primo accesso.

2) Se i termini e le condizioni cambiano dopo il fatto. Gli utenti devono accettare di nuovo i nuovi termini negli accessi successivi.

Questi sembrano flussi di lavoro piuttosto standard. Devise fornire un modo per realizzare questo?

In caso contrario, penso che questo controllo dovrà essere implementato in un before_filter sul controller dell'applicazione. (Si sente l'autenticazione di miscelazione sporchi con la logica dell'applicazione ...)

Devo ricorrere a questo o qualcuno può suggerire un modo migliore?

Grazie

+2

Penso che ideato/auth non abbia nulla a che fare con la logica aziendale (termini). Dovrai fare un filtro precedente nel controller dell'applicazione. Non stai mescolando l'autenticazione con la logica aziendale. L'utente è autenticato ma non può accedere a nessuna pagina finché non accetterà i termini di utilizzo – bcd

risposta

0

Non potresti teoricamente basta disabilitare avvicinarsi sempre più nella vostra applicazione utilizzando jQuery?

Disattiva il modulo "continua" o "accedi" fino a quando non hanno selezionato una casella o premuto un pulsante Continua, quindi abilita il pulsante di accesso una volta che hanno.

Se è necessario archiviare tali informazioni, basta creare una colonna nel proprio database sull'utente che viene pubblicato anche quando si seleziona la casella o si preme il pulsante Continua, oppure si può anche utilizzare il numero di log in conteggi come metodo di sapere

Se user.log> 0, l'utente ha già accettato i termini.
Se user.logs == 0, l'utente deve accettare i termini prima di eseguire il login.

Immagino che secondo la tua domanda sembra che legare tutto in suoni Devise sia eccessivamente complesso.

Spero che questo aiuti.

2

questo non è qualcosa che il dispositivo dovrebbe gestire e ideare non dovrebbe gestire questo perché un TOS non riguarda l'autenticazione.

Quello che potresti fare è qualcosa come implementare una macchina a stati, ma potrebbe essere più complessa di quello che ti serve.

Il modo più semplice sarebbe quello di aggiungere un campo booleano accettato_tos al modello utente e legarlo in un filtro before_fore, quindi impostare accept_tos su false ogni volta che viene aggiornato il TOS.

Problemi correlati