How to store ldap data in ruby on rails application database?


#1

i have created a web app with rails4 and authentication system is
developed
with devise_ldap_authenticable gem. where i am using username for login
not
email. but i want to store email in my users table. My user model is

class User < ActiveRecord::Base

Include default devise modules. Others available are:

:confirmable, :lockable, :timeoutable and :omniauthable

#@attr_accessible :email, :password, :password_confirmation

not required for LDAP :recoverable, :registerable, :validatable

devise :ldap_authenticatable, :rememberable, :trackable

validates_uniqueness_of :email, :allow_blank => true

before_save :get_ldap_email

def get_ldap_email
self.email = Devise::LDAP::Adapter.get_ldap_param(self.username,
“mail”)
end
end

But in users table of email field its storing data like

email = ‘— !ruby/array:Net::BER::BerIdentifiedArray\ninternal:\n-
!ruby/string:Net::BER::BerIdentifiedString\n str: !binary |-\n
cy5naG9zaEBzYW1zdW5nLmNvbQ==\n ber_identifier: 4\nivars:\n
:@ber_identifier: 49\n’

log says, LDAP: Requested param mail has value [“removed_email_address@domain.invalid”]

How i will store this value to my users table. where im doing wrong?
please help me out.


#2

On 26 November 2013 11:07, sukanta ghosh removed_email_address@domain.invalid wrote:

devise :ldap_authenticatable, :rememberable, :trackable

But in users table of email field its storing data like

email = ‘— !ruby/array:Net::BER::BerIdentifiedArray\ninternal:\n-
!ruby/string:Net::BER::BerIdentifiedString\n str: !binary |-\n
cy5naG9zaEBzYW1zdW5nLmNvbQ==\n ber_identifier: 4\nivars:\n :@ber_identifier:
49\n’

I have not used that, but I suspect that get_ldap_param is not
returning what you expect. I suggest that you insert before the
self.email=… line something like
puts inspect Devise::LDAP::Adapter.get_ldap_param(self.username, “mail”)
which will show exactly what it returns, in the server window.

Colin


#3

Check this commit to the gitlab project …

https://github.com/gitlabhq/gitlabhq/commit/369dbaf39687f079dec40df20f3be367ca6c3ac7

On line #24 … your_string.to_s.force_encoding(“utf-8”)