]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-3137 Add exception handling
authorEvgeny Mandrikov <mandrikov@gmail.com>
Wed, 11 Jan 2012 07:37:51 +0000 (11:37 +0400)
committerEvgeny Mandrikov <mandrikov@gmail.com>
Wed, 11 Jan 2012 07:38:31 +0000 (11:38 +0400)
sonar-server/src/main/webapp/WEB-INF/lib/need_authentication.rb

index 8ad97b1ceb4bfc0deaecfb6072f7847adfefab4b..94e7d62223dcc7eadebe791bf3ec008a3b55914e 100644 (file)
@@ -49,9 +49,12 @@ class PluginRealm
 
   def authenticate?(login, password)
     return false if login.blank? || password.blank?
-    # TODO handle exceptions
-    if @java_authenticator.authenticate(login, password)
-      return true
+    begin
+      if @java_authenticator.authenticate(login, password)
+        return true
+      end
+    rescue Exception => e
+      Java::OrgSonarServerUi::JRubyFacade.new.logError("Error from external authenticator: #{e.message}")
     end
     # Fallback to password from Sonar Database
     user = User.find_by_login(login)
@@ -60,10 +63,16 @@ class PluginRealm
 
   def synchronize(user, password)
     if @java_users_provider
-      # TODO handle exceptions
-      details = @java_users_provider.doGetUserDetails(user.login)
-      user.update_attributes(:name => details.getName(), :email => details.getEmail(), :password => password, :password_confirmation => password)
-      user.save
+      begin
+        details = @java_users_provider.doGetUserDetails(user.login)
+      rescue Exception => e
+        Java::OrgSonarServerUi::JRubyFacade.new.logError("Error from external users provider: #{e.message}")
+      else
+        if details
+          user.update_attributes(:name => details.getName(), :email => details.getEmail(), :password => password, :password_confirmation => password)
+          user.save
+        end
+      end
     end
   end