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