Files
qchat/src/main/java/de/w665/testing/service/TokenService.java
Maximilian Walz adb8ef9c83 Init
2025-09-16 23:05:31 +02:00

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);
}
}