Init
This commit is contained in:
35
src/main/java/de/w665/testing/service/TokenService.java
Normal file
35
src/main/java/de/w665/testing/service/TokenService.java
Normal file
@@ -0,0 +1,35 @@
|
||||
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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user