A self hosted chat application with end-to-end encrypted messaging.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

48 lines
1.5 KiB

package org.ros.chatto.service;
import org.ros.chatto.model.UserToken;
import org.ros.chatto.repository.TokenRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Service
@Transactional
@Slf4j
@CacheConfig(cacheNames = "userTokenCache")
@RequiredArgsConstructor
public class UserTokenService {
private final TokenRepository tokenRepository;
@Transactional(readOnly = true)
@Cacheable(value = "userTokenCache", key = "#userName", unless = "#result == null")
public UserToken getTokenByUserName(String userName) {
return tokenRepository.findByUserName(userName);
}
@Transactional(readOnly = true)
@Cacheable(value = "userTokenCache", key = "#tokenString", unless = "#result == null")
public UserToken getTokenByTokenString(String tokenString) {
return tokenRepository.findByToken(tokenString);
}
public void saveToken(UserToken userToken) {
log.trace("Saving auth token");
tokenRepository.save(userToken);
}
public void deleteToken(String userName) {
log.trace("Deleting token for {}", userName);
tokenRepository.deleteByUserName(userName);
}
public void deleteToken(UserToken userToken) {
log.trace("Deleting token for {}", userToken);
tokenRepository.delete(userToken);
}
}