com.miserablemind.butter.domain.model.user.user_persistent_logins.impl.PersistentTokenRepositoryImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.miserablemind.butter.domain.model.user.user_persistent_logins.impl.PersistentTokenRepositoryImpl.java

Source

package com.miserablemind.butter.domain.model.user.user_persistent_logins.impl;

import com.miserablemind.butter.domain.model.user.user_persistent_logins.UserPersistentTokenDao;
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 java.util.Date;

/*
 * Miserable Mind
 * http://www.butter.miserablemind.com
 * The MIT License (MIT)
 */

/**
 * Implementation of Spring Security interface that is autowired to {@link com.miserablemind.butter.security.WebSecurityContext} to create "rememberMeServices" bean.
 *
 * @author <a href="http://www.miserablemind.com" target="_blank">miserablemind</a>
 */

@Service
public class PersistentTokenRepositoryImpl implements PersistentTokenRepository {

    @Autowired
    private UserPersistentTokenDao userPersistentTokenDao;

    /**
     * Inserts a token for Remember Me Service.
     *
     * @param token token to be inserted
     */
    @Override
    public void createNewToken(PersistentRememberMeToken token) {
        this.userPersistentTokenDao.insertRememberMeToken(token);
    }

    /**
     * Gets Remember Me token for {@code series}.
     *
     * @param seriesId the series id the token should be looked up for
     * @return remember me token
     */
    @Override
    public PersistentRememberMeToken getTokenForSeries(String seriesId) {
        return this.userPersistentTokenDao.getRememberMeTokenForSeries(seriesId);
    }

    /**
     * Deletes all Remember Me tokens for the user.
     * <p>It takes username as a parameter.
     * If the user was logged in using its e-mail rather than username, the value sent to this method should still be {@link com.miserablemind.butter.domain.model.user.user.AppUser#getUsername()}</p>
     *
     * @param username user name of a user whose token should be deleted.
     */
    @Override
    public void removeUserTokens(String username) {
        this.userPersistentTokenDao.deleteRememberMeToken(username);
    }

    /**
     * Updates Remember Me token for {@code series}.
     *
     * @param series     the series to update
     * @param tokenValue new token value
     * @param lastUsed   resets the time the token was last used
     */
    @Override
    public void updateToken(String series, String tokenValue, Date lastUsed) {
        this.userPersistentTokenDao.updateRememberMeToken(series, tokenValue, lastUsed);
    }

}