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

260 views
Skip to first unread message

sukanta ghosh

unread,
Nov 26, 2013, 6:07:01 AM11/26/13
to rubyonra...@googlegroups.com
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 ["s.g...@example.com"]
How i will store this value to my users table. where im doing wrong? please help me out.

Colin Law

unread,
Nov 26, 2013, 5:22:48 PM11/26/13
to rubyonra...@googlegroups.com
On 26 November 2013 11:07, sukanta ghosh <amisuk...@gmail.com> wrote:
> 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'

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

dave

unread,
Jan 24, 2014, 4:59:04 PM1/24/14
to rubyonra...@googlegroups.com
Check this commit to the gitlab project ... 


On line #24 ... your_string.to_s.force_encoding("utf-8")
Reply all
Reply to author
Forward
0 new messages