myexperiment-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myexperiment-hackers] [1989] trunk: removed frozen gem and updated open


From: noreply
Subject: [myexperiment-hackers] [1989] trunk: removed frozen gem and updated openid code to work with latest ruby-openid gem
Date: Wed, 19 Nov 2008 08:33:06 -0500 (EST)

Revision
1989
Author
dgc
Date
2008-11-19 08:33:03 -0500 (Wed, 19 Nov 2008)

Log Message

removed frozen gem and updated openid code to work with latest ruby-openid gem

Modified Paths

Removed Paths

Diff

Modified: trunk/app/controllers/session_controller.rb (1988 => 1989)


--- trunk/app/controllers/session_controller.rb	2008-11-19 13:28:28 UTC (rev 1988)
+++ trunk/app/controllers/session_controller.rb	2008-11-19 13:33:03 UTC (rev 1989)
@@ -5,6 +5,7 @@
 
 require 'uri'
 require 'openid'
+require 'openid/store/filesystem'
 
 class SessionController < ApplicationController
 
@@ -37,48 +38,42 @@
   
   # handle the openid server response
   def complete
-    response = consumer.complete(params)
-    
-    case response.status
-    when OpenID::SUCCESS
-      redirect_to_edit_user = false
-      
-      # create user object if one does not exist
-      unless @user = User.find(:first, :conditions => ["openid_url = ?", response.identity_url], :include => [ :contributions, :tags ])
-        @user = User.new(:openid_url => response.identity_url, :name => response.identity_url, :activated_at => Time.now, :last_seen_at => Time.now)
-        redirect_to_edit_user = @user.save
-      end
 
-      # storing both the openid_url and user id in the session for for quick
-      # access to both bits of information.  Change as needed.
-      self.current_user = @user
+    current_url = url_for(:action ="" 'complete', : false)
+    parameters = params.reject{|k,v|request.path_parameters[k]}
 
-      flash[:notice] = "Logged in as address@hidden"
-       
-      if redirect_to_edit_user == true
-        redirect_to url_for(:controller => 'users', :action ="" 'edit', :id => self.current_user)
-      else
-        successful_login(self.current_user)
-      end
-      
-      return
+    response = consumer.complete(parameters, current_url)
+    
+    if response.class == OpenID::Consumer::FailureResponse
 
-    when OpenID::FAILURE
       if response.identity_url
-        flash[:notice] = "Verification of #{CGI::escape(response.identity_url)} failed."
-
+        failed_login("Verification of \"#{response.identity_url}\" failed.")
       else
-        flash[:notice] = 'Verification failed.'
+        failed_login("Verification failed.")
       end
 
-    when OpenID::CANCEL
-      flash[:notice] = 'Verification cancelled.'
+      return
+    end
 
+    redirect_to_edit_user = false
+    
+    # create user object if one does not exist
+    unless @user = User.find(:first, :conditions => ["openid_url = ?", response.identity_url], :include => [ :contributions, :tags ])
+      @user = User.new(:openid_url => response.identity_url, :name => response.identity_url, :activated_at => Time.now, :last_seen_at => Time.now)
+      redirect_to_edit_user = @user.save
+    end
+
+    # storing both the openid_url and user id in the session for for quick
+    # access to both bits of information.  Change as needed.
+    self.current_user = @user
+
+    flash[:notice] = "Logged in as address@hidden"
+     
+    if redirect_to_edit_user == true
+      redirect_to url_for(:controller => 'users', :action ="" 'edit', :id => self.current_user)
     else
-      flash[:notice] = 'Unknown response from OpenID server.'
+      successful_login(self.current_user)
     end
-  
-    failed_login(flash[:notice])
   end
 
   protected
@@ -104,23 +99,16 @@
       begin
         if request.post?
           request = consumer.begin(openid_url)
+
+          return_to = url_for(:action="" 'complete')
+          trust_root = url_for(:controller=>'')
           
-          case request.status
-          when OpenID::SUCCESS
-            return_to = url_for(:action="" 'complete')
-            trust_root = url_for(:controller=>'')
-            
-            url = "" return_to)
-            redirect_to(url)
-            return
-            
-          when OpenID::FAILURE
-            escaped_url = CGI::escape(openid_url)
-            failed_login("Could not find OpenID server for #{escaped_url}")
-          else
-            failed_login("An unknown error occured. Please check your OpenID url.")
-          end
+          url = "" return_to)
+          redirect_to(url)
+          return
         end
+      rescue OpenID::DiscoveryFailure
+        failed_login("Couldn't locate the OpenID server.  Please check your OpenID URL.")
       rescue RuntimeError, Timeout::Error => e
         if e.class == Timeout::Error
           failed_login("Could not contact your OpenID server.")
@@ -154,7 +142,7 @@
     # create the OpenID store for storing associations and nonces,
     # putting it in your app's db directory
     store_dir = Pathname.new(RAILS_ROOT).join('db').join('openid-store')
-    store = OpenID::FilesystemStore.new(store_dir)
+    store = OpenID::Store::Filesystem.new(store_dir)
 
     return OpenID::Consumer.new(session, store)
   end

reply via email to

[Prev in Thread] Current Thread [Next in Thread]