Commit 141fa98c4ec2d9373513bfb9f17ee2a3d0113a2f

Authored by Arthur Esposte
1 parent ee712409

Fix ldap plugin hotspot behaviour

Showing 1 changed file with 20 additions and 6 deletions   Show diff stats
plugins/ldap/lib/ldap_plugin.rb
@@ -18,7 +18,8 @@ class LdapPlugin < Noosfero::Plugin @@ -18,7 +18,8 @@ class LdapPlugin < Noosfero::Plugin
18 # - login received by ldap 18 # - login received by ldap
19 # - params from current context 19 # - params from current context
20 # returns = updated person_data hash 20 # returns = updated person_data hash
21 - def ldap_plugin_set_profile_data(attrs, login, params) 21 + def ldap_plugin_set_profile_data(attrs, params)
  22 + [attrs, params]
22 end 23 end
23 24
24 # -> Custom ldap plugin hotspot to update user object 25 # -> Custom ldap plugin hotspot to update user object
@@ -55,19 +56,22 @@ class LdapPlugin < Noosfero::Plugin @@ -55,19 +56,22 @@ class LdapPlugin < Noosfero::Plugin
55 56
56 if attrs 57 if attrs
57 user.login = login 58 user.login = login
58 - user.email = attrs[:mail] 59 + user.email = get_email(attrs, login)
59 user.name = attrs[:fullname] 60 user.name = attrs[:fullname]
60 user.password = password 61 user.password = password
61 user.password_confirmation = password 62 user.password_confirmation = password
62 - person_data = plugins.dispatch(:ldap_plugin_set_profile_data, attrs, login, context.params)  
63 - user.person_data = person_data.blank? ? context.params[:profile_data] : person_data 63 + user.person_data = plugins.pipeline(:ldap_plugin_set_profile_data, attrs, context.params).last[:profile_data]
64 user.activated_at = Time.now.utc 64 user.activated_at = Time.now.utc
65 user.activation_code = nil 65 user.activation_code = nil
66 66
67 ldap = LdapAuthentication.new(context.environment.ldap_plugin_attributes) 67 ldap = LdapAuthentication.new(context.environment.ldap_plugin_attributes)
68 begin 68 begin
69 - user = nil unless user.save!  
70 - plugins.dispatch(:ldap_plugin_update_user, user, attrs) 69 + if user.save
  70 + user.activate
  71 + plugins.dispatch(:ldap_plugin_update_user, user, attrs)
  72 + else
  73 + user = nil
  74 + end
71 rescue 75 rescue
72 #User not saved 76 #User not saved
73 end 77 end
@@ -90,6 +94,16 @@ class LdapPlugin < Noosfero::Plugin @@ -90,6 +94,16 @@ class LdapPlugin < Noosfero::Plugin
90 user 94 user
91 end 95 end
92 96
  97 + def get_email(attrs, login)
  98 + return attrs[:mail] unless attrs[:mail].blank?
  99 +
  100 + if attrs[:fullname]
  101 + return attrs[:fullname].to_slug + "@ldap.user"
  102 + else
  103 + return login.to_slug + "@ldap.user"
  104 + end
  105 + end
  106 +
93 def login_extra_contents 107 def login_extra_contents
94 proc do 108 proc do
95 @person = Person.new(:environment => @environment) 109 @person = Person.new(:environment => @environment)