openid.patch

Jason Montojo, 2011-04-19 22:41

Download (5.75 KB)

View differences:

app/controllers/my_controller.rb (working copy)
174 174
    end
175 175
    render :nothing => true
176 176
  end
177
  
178
  def openid
179
  	if request.post?
180
      if Setting.openid? && using_open_id? && User.current != User.anonymous
181
      	url = url_for :action => 'openid'
182
      	current_user = User.current
183
        authenticate_with_open_id(params[:openid_url], :return_to => url) do |result, identity_url, registration|
184
          self.logged_user = current_user
185
	      if result.successful?
186
	      	current_user.identity_url = identity_url
187
	      	current_user.save
188
	      	redirect_to :action => 'account'
189
          end
190
        end
191
      end
192
    else
193
      render :action => 'openid'
194
    end
195
  end
196

  
177 197
end
app/controllers/account_controller.rb (working copy)
158 158

  
159 159
  
160 160
  def open_id_authenticate(openid_url)
161
    authenticate_with_open_id(openid_url, :required => [:nickname, :fullname, :email], :return_to => signin_url) do |result, identity_url, registration|
161
    authenticate_with_open_id(openid_url, :required => [:nickname, :fullname, :email, 'http://axschema.org/contact/email', 'http://axschema.org/namePerson/first', 'http://axschema.org/namePerson/last'], :return_to => signin_url) do |result, identity_url, registration|
162 162
      if result.successful?
163 163
        user = User.find_or_initialize_by_identity_url(identity_url)
164 164
        if user.new_record?
......
166 166
          redirect_to(home_url) && return unless Setting.self_registration?
167 167

  
168 168
          # Create on the fly
169
          user.login = registration['nickname'] unless registration['nickname'].nil?
170
          user.mail = registration['email'] unless registration['email'].nil?
169
          login = registration['nickname']
170
          login = registration['email'] unless !login.nil?
171
          login = registration['http://axschema.org/contact/email'][0] unless !login.nil?
172

  
173
          email = registration['email']
174
          email = registration['http://axschema.org/contact/email'][0] unless !email.nil?
175

  
176
          name = registration['fullname']
177

  
178
          user.login = login 
179
          user.mail = email
171 180
          user.firstname, user.lastname = registration['fullname'].split(' ') unless registration['fullname'].nil?
181
          user.firstname = registration['http://axschema.org/namePerson/first'][0] unless registration['http://axschema.org/namePerson/first'].nil?
182
          user.lastname = registration['http://axschema.org/namePerson/last'][0] unless registration['http://axschema.org/namePerson/last'].nil?
172 183
          user.random_password
173 184
          user.register
174 185

  
186
          logger.info user.inspect
175 187
          case Setting.self_registration
176 188
          when '1'
177 189
            register_by_email_activation(user) do
app/views/my/account.rhtml (working copy)
16 16
<p><%= f.text_field :lastname, :required => true %></p>
17 17
<p><%= f.text_field :mail, :required => true %></p>
18 18
<p><%= f.select :language, lang_options_for_select %></p>
19

  
19 20
<% if Setting.openid? %>
20
<p><%= f.text_field :identity_url  %></p>
21
<p><%= f.text_field :identity_url  %> (<%= link_to l(:button_update), {:action => 'openid'}, :method => :post %>)</p>
22

  
21 23
<% end %>
22 24

  
23 25
<% @user.custom_field_values.select(&:editable?).each do |value| %>
app/views/account/login.rhtml (working copy)
11 11
    <td align="right"><label for="password"><%=l(:field_password)%>:</label></td>
12 12
    <td align="left"><%= password_field_tag 'password', nil, :tabindex => '2' %></td>
13 13
</tr>
14
<% if Setting.openid? %>
15 14
<tr>
16
  <td align="right"><label for="openid_url"><%=l(:field_identity_url)%></label></td>
17
  <td align="left"><%= text_field_tag "openid_url", nil, :tabindex => '3' %></td>
18
</tr>
19
<% end %>
20
<tr>
21 15
    <td></td>
22 16
    <td align="left">
23 17
        <% if Setting.autologin? %>
......
38 32
</table>
39 33
<%= javascript_tag "Form.Element.focus('username');" %>
40 34
<% end %>
35

  
36
<% if Setting.openid? %>
37
	<%= render :partial => 'account/openid', :locals => { :controller => 'account', :action => 'login' } %>
38
<% end %>
39

  
41 40
</div>
41

  
42 42
<%= call_hook :view_account_login_bottom %>
config/locales/en.yml (working copy)
811 811
  label_issues_visibility_all: All issues
812 812
  label_issues_visibility_public: All non private issues
813 813
  label_issues_visibility_own: Issues created by or assigned to the user
814
  label_openid: OpenID Settings
814 815
  
815 816
  button_login: Login
816 817
  button_submit: Submit
......
932 933
  text_zoom_in: Zoom in
933 934
  text_zoom_out: Zoom out
934 935
  text_warn_on_leaving_unsaved: "The current page contains unsaved text that will be lost if you leave this page."
935
  
936
  text_openid_legend: Sign-in with OpenID
937
  text_openid_provider: "Please click your account provider:" 
938
  text_openid_noscript: "OpenID is service that allows you to log-on to many different websites using a single identity. Find out <a href='http://openid.net/what/'>more about OpenID</a> and <a href='http://openid.net/get/'>how to get an OpenID enabled account</a>."
939
        
936 940
  default_role_manager: Manager
937 941
  default_role_developer: Developer
938 942
  default_role_reporter: Reporter