Я пытаюсь сделать так, чтобы devise_ldap_authenticatable создавал только одну запись на пользователя, учитывая имя пользователя при входе в систему. У меня возникла проблема: devise_ldap_authenticatable сохраняет то же имя пользователя, но с заглавной буквой. , Нашим пользователям становится неудобно иметь дубликаты пользовательских профилей. Я получаю завершенный 302 найденный только тогда, когда обе записи создаются с именами пользователей в верхнем и нижнем регистре. Как я могу создать только одну запись для каждого пользователя, несмотря на использование заглавных букв для имен пользователей Active Directory?
Если пользователь входит в систему с помощью dwilliams и Dwilliams, новый пользователь не должен создаваться и храниться в базе данных.
user.rb
class User < ApplicationRecord
devise :ldap_authenticatable...
before_save :ldap_before_save
validates :username, presence: true, uniqueness: {case_sensitive: true}
extend FriendlyId
friendly_id :username, use: :slugged
def ldap_before_save
self.email = Devise::LDAP::Adapter.get_ldap_param(self.username, "mail").try(:first)
self.name = Devise::LDAP::Adapter.get_ldap_param(self.username, "name").try(:first)
end
end
Журнал Rails
LDAP: LDAP search for login: sAMAccount=dwilliams
LDAP: search yielded 1 matches
LDAP: Requested param mail has value ["dwilliams@econ.com"]
LDAP: LDAP search login: sAMAccountName=dwilliams
LDAP: LDAP search yielded 1 matches
LDAP: Requested param has value ["David Williams"]
(0.4ms) COMMIT
Redirected to
Completed 302 Found
.....
LDAP: LDAP search for login: sAMAccount=Dwilliams
LDAP: search yielded 1 matches
LDAP: Authorizing user CN=David Williams, OU....
(0.4ms) BEGIN
User Update...
(1.5ms) COMMIT