2012-05-08 23 views
8

Tôi muốn uỷ quyền cho tất cả người dùng chấp nhận điều khoản dịch vụ, nhiều như được mô tả ở đây:Thiết lập, yêu cầu người dùng chấp nhận điều khoản dịch vụ?

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

Tuy nhiên có 2 yêu cầu mà thực hiện phương pháp trên không phù hợp.

1) Người dùng không tự đăng ký, thay vào đó họ được tạo bởi quản trị viên hệ thống. Quản trị viên rõ ràng không thể chấp nhận các điều khoản và điều kiện thay mặt người dùng. Người dùng sẽ được nhắc chấp nhận các điều khoản và điều kiện trong lần đăng nhập đầu tiên của họ.

2) Nếu các điều khoản và điều kiện thay đổi sau khi thực tế. Người dùng cần phải chấp nhận lại các điều khoản mới về các lần đăng nhập tiếp theo.

Đây có vẻ như quy trình làm việc khá chuẩn. Liệu có nghĩ ra cách nào để thực hiện điều này?

Nếu không, tôi nghĩ rằng kiểm tra này sẽ cần phải được thực hiện trong một before_filter trên bộ điều khiển ứng dụng của tôi. (Cảm thấy xác thực trộn bẩn với logic ứng dụng ...)

Tôi có phải sử dụng điều này hay bất kỳ ai cũng có thể đề xuất một cách tốt hơn?

Cảm ơn

+2

Tôi nghĩ rằng phát minh/auth không có gì để làm với logic kinh doanh (điều khoản). Bạn sẽ phải làm một bộ lọc trước trong bộ điều khiển ứng dụng. Bạn không trộn auth với logic nghiệp vụ. Người dùng được xác thực nhưng không thể truy cập bất kỳ trang nào cho đến khi nó chấp nhận các điều khoản sử dụng – bcd

Trả lời

0

Bạn không thể về mặt lý thuyết chỉ vô hiệu di chuyển xa hơn trong ứng dụng của mình bằng JQuery?

Vô hiệu hóa nút "tiếp tục" hoặc "đăng nhập" biểu mẫu của bạn cho đến khi họ chọn hộp hoặc nhấn nút tiếp tục, sau đó bật nút đăng nhập của bạn khi họ có.

Nếu bạn cần lưu trữ thông tin đó, chỉ cần tạo cột trong cơ sở dữ liệu của bạn trên người dùng được đăng khi họ chọn hộp hoặc nhấn nút tiếp tục hoặc thậm chí bạn có thể sử dụng số lượng đăng nhập như một cách biết.

Nếu user.logs> 0 thì người dùng đã chấp nhận các điều khoản.
Nếu user.logs == 0 thì người dùng cần phải chấp nhận các điều khoản trước khi họ đăng nhập.

Tôi đoán theo câu hỏi của bạn có vẻ như buộc mọi thứ vào Devise âm thanh quá phức tạp.

Hy vọng điều này sẽ hữu ích.

2

đây không phải là một cái gì đó đưa ra sẽ xử lý và đưa ra không nên xử lý này bởi vì một TOS không liên quan đến xác thực.

Những việc bạn có thể làm là thực hiện một máy trạng thái nhưng điều đó có thể phức tạp hơn những gì bạn cần.

Cách đơn giản sẽ là thêm trường boolean được chấp nhận vào mô hình người dùng của bạn và gắn nó vào một before_filter, sau đó bạn sẽ đặt accept_tos thành false mỗi khi TOS được cập nhật.

Các vấn đề liên quan