2012-05-08 2 views
8

내가 훨씬 여기에 설명 된 것처럼, 모든 사용자가 서비스 약관에 동의 함을 의무화 할 : 사용자가 서비스 약관에 동의하도록 요청하는 Devise?

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

그러나 위의 방법이 맞지 않을 수 있도록 2 가지 요구 사항이 있습니다.

1) 사용자는 자체 등록되지 않고 시스템 관리자 만 생성합니다. 관리자는 분명히 사용자 대신 이용 약관을 수락 할 수 없습니다. 사용자는 처음 로그인 할 때 이용 약관에 동의하라는 메시지를 표시해야합니다.

2) 사실 이후에 이용 약관이 변경되는 경우. 사용자는 이후 로그인시 새 약관을 다시 수락해야합니다.

이들은 꽤 표준 워크 플로처럼 보입니다. 이것을 달성하기 위해 어떤 방법을 제공합니까?

그렇지 않은 경우이 체크를 응용 프로그램 컨트롤러의 before_filter에 구현해야한다고 생각합니다. (애플리케이션 로직과의 인증 믹싱에 더러운 느낌이 들었다 ...)

나는 이것에 의지해야하며, 누구든지 더 좋은 방법을 제안 할 수 있을까?

감사

+2

내가 생각한/승인은 비즈니스 로직 (용어)과 아무 관련이 없다고 생각합니다. 애플리케이션 컨트롤러에서 필터를 수행해야합니다. 비즈니스 로직에 인증을 혼합하지 않습니다. 사용자는 인증되지만 사용 약관에 동의 할 때까지는 어떤 페이지에도 액세스 할 수 없습니다. – bcd

답변

0

당신은 이론적으로 만 jQuery를 사용하여 앱에서 더 이상 이동하지 해제 할 수 없습니다?

상자에 체크 표시를하거나 계속 버튼을 누르기 전까지는 양식을 "계속"또는 "로그인"버튼을 해제하고 로그인 버튼을 활성화하십시오.

해당 정보를 저장해야하는 경우 사용자에게 데이터베이스의 열을 만들어서 상자를 체크하거나 계속 단추를 누르면 올리거나 또는 로그인 횟수를 활용할 수도 있습니다 알기.

user.logs> 0 인 경우 사용자는 이미 약관에 동의했습니다. 가 로그인하기 전에
는 user.logs == 0은 사용자가 약관에 동의해야 합니다.

나는 당신의 질문이 고안 지나치게 복잡한 소리에 모든 것을 묶는 것 같아에 따라 같아요.

희망이 도움이됩니다.

2

이것은 사용자가 처리 할 수있는 것이 아니며 TOS가 인증과 관련이 없으므로이를 처리해서는 안됩니다.

당신이 할 수있는 것은 상태 머신을 구현하는 것과 비슷하지만 필요한 것보다 더 복잡 할 수 있습니다.

사용자 모델에 accepted_tos 부울 필드를 추가하고 before_filter에 묶으면 TOS가 업데이트 될 때마다 accepted_tos를 false로 설정하는 것이 간단한 방법입니다.

관련 문제