36 lines
992 B
Java
36 lines
992 B
Java
package de.w665.testing.service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.security.SecureRandom;
|
|
import java.util.Base64;
|
|
import java.util.Map;
|
|
import java.util.Optional;
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
@Service
|
|
public class TokenService {
|
|
private final Map<String, String> tokenToUser = new ConcurrentHashMap<>();
|
|
private final SecureRandom random = new SecureRandom();
|
|
|
|
public String createTokenForUsername(String username) {
|
|
String token = generateToken();
|
|
tokenToUser.put(token, username);
|
|
return token;
|
|
}
|
|
|
|
public Optional<String> resolveUsername(String token) {
|
|
return Optional.ofNullable(tokenToUser.get(token));
|
|
}
|
|
|
|
public void invalidate(String token) {
|
|
tokenToUser.remove(token);
|
|
}
|
|
|
|
private String generateToken() {
|
|
byte[] bytes = new byte[32];
|
|
random.nextBytes(bytes);
|
|
return Base64.getUrlEncoder().withoutPadding().encodeToString(bytes);
|
|
}
|
|
}
|