From 2d8448adf1cf94d713f856cf63f860f0998333d4 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer <paul-christian.volkmer@mni.thm.de> Date: Sat, 11 Aug 2012 10:41:42 +0200 Subject: [PATCH] Handle both principals: String and User In local environment the principal must be casted to User object but in production environment the username is represented as String in principal object. With this patch the application will try a cast to User object, if this fails, it will do a cast to String - which holds the OpenID identifier. --- .../java/de/thm/arsnova/LoginController.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/thm/arsnova/LoginController.java b/src/main/java/de/thm/arsnova/LoginController.java index 79dc64a97..ab971c36b 100644 --- a/src/main/java/de/thm/arsnova/LoginController.java +++ b/src/main/java/de/thm/arsnova/LoginController.java @@ -19,16 +19,23 @@ public class LoginController { return new ModelAndView("redirect:/#auth/checkCasLogin/" + user.getUsername()); } - @RequestMapping(method = RequestMethod.GET, value = "/openIdLogin") - public ModelAndView openIdLogin() { - return new ModelAndView("openidlogin"); - } - @RequestMapping(method = RequestMethod.GET, value = "/doOpenIdLogin") public ModelAndView doOpenIdLogin() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); - User user = (User) authentication.getPrincipal(); - String userHash = new ShaPasswordEncoder(256).encodePassword(user.getUsername(), ""); + + String userHash = null; + + try { + User user = (User) authentication.getPrincipal(); + userHash = new ShaPasswordEncoder(256).encodePassword(user.getUsername(), ""); + } catch (ClassCastException e) { + // Principal is of type String + userHash = new ShaPasswordEncoder(256).encodePassword( + (String)authentication.getPrincipal(), + "" + ); + } + return new ModelAndView("redirect:/#auth/checkCasLogin/" + userHash); } -- GitLab