implemented password reset link and sending via mail

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2024-08-09 02:03:01 +02:00
parent 31afced7f7
commit 95d47e3d63
12 changed files with 137 additions and 45 deletions

View File

@@ -37,7 +37,7 @@ public class FileStore implements AuthorizationService, ClientService, SessionSe
private final PasswordHasher<String> passwordHasher;
private Duration sessionDuration = Duration.of(10, ChronoUnit.MINUTES);
private Map<String, Client> clients = new HashMap<>();
private Map<String, User> accessTokens = new HashMap<>();
private Map<String, AccessToken> accessTokens = new HashMap<>();
private Map<String, Authorization> authCodes = new HashMap<>();
private Authenticator auth;
@@ -67,9 +67,9 @@ public class FileStore implements AuthorizationService, ClientService, SessionSe
/*** User Service Methods ***/
@Override
public String accessToken(User user) {
var token = uuid();
accessTokens.put(token, Objects.requireNonNull(user));
public AccessToken accessToken(User user) {
var token = new AccessToken(uuid(), Objects.requireNonNull(user), Instant.now().plus(1, ChronoUnit.HOURS));
accessTokens.put(token.id(), token);
return token;
}
@@ -80,8 +80,12 @@ public class FileStore implements AuthorizationService, ClientService, SessionSe
}
@Override
public Optional<User> forToken(String accessToken) {
return nullable(accessTokens.get(accessToken));
public Optional<User> forToken(String id) {
AccessToken token = accessTokens.get(id);
if (token == null) return empty();
if (token.valid()) return Optional.of(token.user());
accessTokens.remove(token.id());
return empty();
}
@Override