Update of 
/var/cvs/contributions/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community
In directory 
james.mmbase.org:/tmp/cvs-serv32203/community/src/java/com/finalist/cmsc/services/community

Modified Files:
      Tag: b1_4
        CommunityServiceImpl.java 
Log Message:
CMSC-617 Personal Pages module
Backport to 1.4


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community
See also: http://www.mmbase.org/jira/browse/CMSC-617


Index: CommunityServiceImpl.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/CommunityServiceImpl.java,v
retrieving revision 1.7
retrieving revision 1.7.2.1
diff -u -b -r1.7 -r1.7.2.1
--- CommunityServiceImpl.java   30 Jan 2008 14:07:39 -0000      1.7
+++ CommunityServiceImpl.java   25 Feb 2008 16:26:16 -0000      1.7.2.1
@@ -9,22 +9,24 @@
 */
 package com.finalist.cmsc.services.community;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
-import javax.portlet.ActionRequest;
-import javax.portlet.ActionResponse;
 import javax.servlet.ServletConfig;
 
 import org.acegisecurity.Authentication;
 import org.acegisecurity.AuthenticationException;
 import org.acegisecurity.AuthenticationManager;
+import org.acegisecurity.GrantedAuthority;
 import org.acegisecurity.context.SecurityContext;
 import org.acegisecurity.context.SecurityContextHolder;
 import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;
+import org.acegisecurity.userdetails.User;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.beans.factory.annotation.Autowire;
+import org.springframework.beans.factory.annotation.Required;
 import org.springframework.context.ApplicationContext;
 import org.springframework.web.context.support.WebApplicationContextUtils;
 
@@ -38,10 +40,6 @@
  */
 public class CommunityServiceImpl extends CommunityService {
 
-       public static final String ACEGI_SECURITY_FORM_USERNAME_KEY = 
"j_username";
-       public static final String ACEGI_SECURITY_FORM_PASSWORD_KEY = 
"j_password";
-       public static final String ACEGI_SECURITY_LAST_USERNAME_KEY = 
"ACEGI_SECURITY_LAST_USERNAME";
-       
        private static Log log = LogFactory.getLog(CommunityServiceImpl.class);
     
        private AuthenticationManager authenticationManager;
@@ -49,44 +47,76 @@
     
     @Override
        protected void init(ServletConfig config, Properties properties) throws 
Exception {
+       /* Some Spring magic. Sets the AuthenticationManager and 
PreferenceService */
        ApplicationContext ac = 
WebApplicationContextUtils.getWebApplicationContext(config.getServletContext());
        ac.getAutowireCapableBeanFactory().autowireBeanProperties(this, 
Autowire.BY_NAME.value(), false);
        }
 
-       public boolean loginUser(ActionRequest request, ActionResponse 
response) {
-        String userName = 
request.getParameter(ACEGI_SECURITY_FORM_USERNAME_KEY);
-        String password = 
request.getParameter(ACEGI_SECURITY_FORM_PASSWORD_KEY);
-        
-        if (userName == null) {
-            userName = "";
-        }
-        if (password == null) {
-            password = "";
-        }
+       @Override
+       public void login(String userName, String password) {
         UsernamePasswordAuthenticationToken authRequest = new 
UsernamePasswordAuthenticationToken(userName, password);
-        // Place the last username attempted into PortletSession for views
-        
request.getPortletSession().setAttribute(ACEGI_SECURITY_LAST_USERNAME_KEY, 
userName);
-
-        boolean loginSuccesfull = false;
         try {
             Authentication authentication = 
authenticationManager.authenticate(authRequest);
-            loginSuccesfull = authentication.isAuthenticated();
+                       
SecurityContextHolder.getContext().setAuthentication(authentication);
         } catch (AuthenticationException ae) {
-            log.info("Authentication attempt failed for user " + userName);
+               SecurityContextHolder.clearContext();
+               log.info(String.format("Authentication attempt failed for user 
%s", userName), ae);
         }
-        return loginSuccesfull;
     }
 
+       @Override
+       public void logout() {
+       SecurityContextHolder.clearContext();
+    }
 
-    public boolean logoutUser(ActionRequest request, ActionResponse response) {
-        SecurityContext securityContext = SecurityContextHolder.getContext();
-        Authentication authentication = securityContext.getAuthentication();
-        authentication.setAuthenticated(false);
+       @Override
+       public boolean isAuthenticated() {
+       SecurityContext context = SecurityContextHolder.getContext();
+       Authentication authentication = context.getAuthentication();
+        return (authentication != null) && authentication.isAuthenticated();
+    }
+
+       @Override
+       public String getAuthenticatedUser() {
+               User principal = getPrincipal();
+               return principal != null ? principal.getUsername() : null;
+       }
+
+       @Override
+       public List<String> getAuthorities() {
+               List<String> authorities = new ArrayList<String>();
+               User principal = getPrincipal();
+               if (principal != null) {
+                       GrantedAuthority[] grantedAuthorities = 
principal.getAuthorities();
+                       for (int i = 0; i < grantedAuthorities.length; i++) {
+                               
authorities.add(grantedAuthorities[i].getAuthority());
+                       }
+               }
+               return authorities;
+       }
+
+       @Override
+       public boolean hasAuthority(String authority) {
+               User principal = getPrincipal();
+               if (principal != null) {
+                       GrantedAuthority[] grantedAuthorities = 
principal.getAuthorities();
+                       for (int i = 0; i < grantedAuthorities.length; i++) {
+                               if 
(grantedAuthorities[i].getAuthority().equals(authority)) {
         return true;
     }
+                       }
+               }
+               return false;
+       }
+
+       private User getPrincipal() {
+       SecurityContext context = SecurityContextHolder.getContext();
+       Authentication authentication = context.getAuthentication();
+       return authentication != null ? (User)authentication.getPrincipal() : 
null;
+    }
 
-    public Map<Long, Map<String, String>> getPreferencesByModule(String 
userId) {
-       return preferenceService.getPreferencesByModule(userId);
+       public Map<Long, Map<String, String>> getPreferencesByModule(String 
module) {
+       return preferenceService.getPreferencesByModule(module);
     }
 
     public Map<String, Map<String, String>> getPreferencesByUserId(String 
userId) {
@@ -146,4 +176,14 @@
                        preferenceService.deletePreference(module, userId, key, 
value);
                }
        }
+
+       @Required
+       public void setAuthenticationManager(AuthenticationManager 
authenticationManager) {
+               this.authenticationManager = authenticationManager;
+       }
+
+       @Required
+       public void setPreferenceService(PreferenceService preferenceService) {
+               this.preferenceService = preferenceService;
+       }
 }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to