を使用して、非存在であるならば現在、私は私のsessions_controllerのためにこのコードを持っているユーザーの行を作成します:どのように私は1つのADレコードに
class SessionsController < ApplicationController
def new
end
def create
username = params[:nome]
password = params[:password]
name = username
if AuthenticateUser.new(username, password).call
user = User.create_with(nome: name).find_or_create_by(nome: user)
session[:user_id] = user.id
redirect_to '/'
else
flash[:error] = "Erro! \nNúmero de Empregado e/ou password incorrecto(a)"
redirect_to '/login'
end
end
def destroy
session[:user_id] = nil
redirect_to '/index/new'
end
end
私は何をしたいかどうかを確認することですLDAP
でログインしているユーザー(my previous questionのように)は、users
テーブルにフィールドがあり、そうでなければ自動的にユーザー名を作成して、それが自動的にuser_id
であり、Railsがフィールドを取得してLDAP
SQLSERVER DB
に入れると、自分のアカウントでログインするときに問題が発生します。エラー通知なしで '/'(ルート)にリダイレクトされます。そして私のdatabase
に新しい行を作成せずに、私はSqlServer Management Studio
を使用していますし、私のユーザーテーブルには、次のフィールドがあります。id NumeroEmpregado nome created_at updated_at
私はNumeroEmpregado
が自動的にLDAPにLDAP
(属性からある与えられるようにしたいtitle
)。私は後でそれを心配だろう、と私はnome
が形式で与えusername
になりたい:
<%= form_tag '/login' do %>
<div class="form-group">
<div class="text">
Número de Empregado: <br>
<%= text_field_tag :nome %><br>
Password: <br>
<%= password_field_tag :password %><br>
</div>
</div>
<%= submit_tag "Submit", class: "button" %>
<% end %>
- は、どのように私はこれを行うことができます/私のコード内のエラーは何ですか?その後
class AuthenticateUser def self.call(*args) new(*args).call end def initialize(username, password) @username = "#{username}@company.com" @password = password end def call search_title_if_valid_user end private def search_title_if_valid_user ldap = Net::LDAP.new( host: server_ip_address, port: 389, base: "DC=corp,DC=com", # change for your company values auth: { method: :simple, username: @username, password: @password } ) ldap.search(attributes: ["title"]) if ldap.bind end end
このようなあなたのコントローラでそれを使用します:
これを@Gerryのコードでどのように実装できますか? –
@AnroDeodoはい、あなたは、 'user.persisted? 'を使って、失敗した作成されたユーザーを捕まえられる良い方法です。追加の属性がモデルに必要とされている場合、 'たびに失敗します。 – Gerry
ここでの唯一の難点は、' User.find_or_create_by(ユーザ名ノームが)ということです。もしそうなら、 'create_with'が便利です。 – Gerry