我通过Devise进行LDAP身份验证,在我在数据库上创建用户之前(由于用户涉及业务规则而附加了其他信息),我想收集公司上的其他一些信息&# 39; s服务器。
我有一个user_query
操作,以便我可以显示以下模式:
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3>Find User by Email</h3>
</div>
<div class="modal-body">
<% flash.each do |name, msg| -%>
<%= content_tag :div, msg, class: name %>
<% end -%>
<%= form_tag('/users/new', method: :get, remote: true) do -%>
<%= text_field_tag 'user_email', nil, placeholder: 'Insert user email', class: 'form-control' %>
<%= submit_tag 'Get user information', remote: true, class: 'btn btn-default' %>
<% end -%>
</div>
</div>
</div>
它有一个文本框,用户输入电子邮件以查询服务器并检查该用户是否存在,如果存在,则重定向到new
用户操作,发送找到的用户信息,否则,我&# 39; d喜欢它显示错误,指出无法找到通知的用户电子邮件。
我在用户通知email
后创建的用于执行此验证的操作是authenticate_user_email
,如下所示:
def authenticate_user_email
respond_to do |format|
if authenticated_user = Devise::LDAP::Adapter.get_ldap_entry(params[:user_email])
format.html { redirect_to action: :new, authenticated_user: authenticated_user }
else
format.json { render json: 'User email not found', status: :not_found }
end
end
end
但是,我无法将authenticate_user_email
设置为after_action
user_query
,但我也不知道这是否是正确的做法,这就是为什么我问,设置此验证的正确方法是什么(请记住,每个操作都是在模态中呈现的)?
感谢。
答案 0 :(得分:0)
更改cmovg
方法中的if
条件
authenticate_user_email
到
authenticated_user = Devise::LDAP::Adapter.get_ldap_entry(params[:user_email])
另外,请查看Active Record Validation作为@lurker建议的