com.sshdemo.common.security.web.authentication.rememberme.JPAPersistentTokenRepository.java Source code

Java tutorial

Introduction

Here is the source code for com.sshdemo.common.security.web.authentication.rememberme.JPAPersistentTokenRepository.java

Source

/**
 * Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved.
 * EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 * http://www.ewcms.com
 */

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.sshdemo.common.security.web.authentication.rememberme;

import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.web.authentication.rememberme.PersistentRememberMeToken;
import org.springframework.security.web.authentication.rememberme.PersistentTokenRepository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.sshdemo.common.security.web.authentication.rememberme.dao.RememberMeTokenDAO;
import com.sshdemo.common.security.web.authentication.rememberme.model.RememberMeToken;

/**
 *
 * @author wangwei
 */
@Service
public class JPAPersistentTokenRepository implements PersistentTokenRepository {

    @Autowired
    private RememberMeTokenDAO rememberMeTokenDAO;

    public void setRememberMeTokenDAO(RememberMeTokenDAO rememberMeTokenDAO) {
        this.rememberMeTokenDAO = rememberMeTokenDAO;
    }

    @Override
    @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
    public void createNewToken(PersistentRememberMeToken token) {

        IPPersistentRememberMeToken rememberMeToken = (IPPersistentRememberMeToken) token;
        RememberMeToken model = new RememberMeToken();

        model.setId(token.getSeries());
        model.setIpAddress(rememberMeToken.getIpAddress());
        model.setToken(token.getTokenValue());
        model.setUsername(token.getUsername());
        model.setLastUsed(new Date());

        rememberMeTokenDAO.persist(model);
    }

    @Override
    @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
    public void updateToken(String series, String tokenValue, Date lastUsed) {

        RememberMeToken model = rememberMeTokenDAO.get(series);
        model.setToken(tokenValue);
        model.setLastUsed(lastUsed);
        rememberMeTokenDAO.persist(model);
    }

    @Override
    public PersistentRememberMeToken getTokenForSeries(String seriesId) {
        RememberMeToken model = rememberMeTokenDAO.get(seriesId);
        if (model == null) {
            return null;
        }
        return new IPPersistentRememberMeToken(model.getUsername(), model.getId(), model.getToken(),
                model.getLastUsed(), model.getIpAddress());
    }

    @Override
    @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
    public void removeUserTokens(String username) {
        this.rememberMeTokenDAO.removeUserTokens(username);
    }
}