From 1a5ef2decea81f733dbeb25c64cc0832a0517f84 Mon Sep 17 00:00:00 2001 From: Luke Taylor Date: Sat, 10 Nov 2007 15:56:07 +0000 Subject: [PATCH] SEC-588: Completed JdbcTokenRepositoryImpl and added extra update method to PersistentTokenRepository interface (additional files from failed commit). --- .../InMemoryTokenRepositoryImpl.java | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/springframework/security/ui/rememberme/InMemoryTokenRepositoryImpl.java b/core/src/main/java/org/springframework/security/ui/rememberme/InMemoryTokenRepositoryImpl.java index b3c199f43d..5b184d9e42 100644 --- a/core/src/main/java/org/springframework/security/ui/rememberme/InMemoryTokenRepositoryImpl.java +++ b/core/src/main/java/org/springframework/security/ui/rememberme/InMemoryTokenRepositoryImpl.java @@ -2,33 +2,45 @@ package org.springframework.security.ui.rememberme; import org.springframework.dao.DataIntegrityViolationException; +import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** + * Simple PersistentTokenRepository implementation backed by a Map. Intended for testing only. + * * @author Luke Taylor * @version $Id$ */ public class InMemoryTokenRepositoryImpl implements PersistentTokenRepository { private Map seriesTokens = new HashMap(); - public synchronized void saveToken(PersistentRememberMeToken token) { + public synchronized void createNewToken(PersistentRememberMeToken token) { PersistentRememberMeToken current = (PersistentRememberMeToken) seriesTokens.get(token.getSeries()); - if (current != null && !token.getUsername().equals(current.getUsername())) { - throw new DataIntegrityViolationException("Series Id already exists with different username"); + if (current != null) { + throw new DataIntegrityViolationException("Series Id '"+ token.getSeries() +"' already exists!"); } - // Store it, overwriting the existing one. seriesTokens.put(token.getSeries(), token); } + public synchronized void updateToken(String series, String tokenValue, Date lastUsed) { + PersistentRememberMeToken token = getTokenForSeries(series); + + PersistentRememberMeToken newToken = new PersistentRememberMeToken(token.getUsername(), series, tokenValue, + new Date()); + + // Store it, overwriting the existing one. + seriesTokens.put(series, newToken); + } + public synchronized PersistentRememberMeToken getTokenForSeries(String seriesId) { return (PersistentRememberMeToken) seriesTokens.get(seriesId); } - public synchronized void removeAllTokens(String username) { + public synchronized void removeUserTokens(String username) { Iterator series = seriesTokens.keySet().iterator(); while (series.hasNext()) {