bugfixes in token handling, added session duration property to user

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2024-08-11 00:08:05 +02:00
parent 674db5d843
commit 5057b54bef
9 changed files with 107 additions and 37 deletions

View File

@@ -37,6 +37,7 @@ public class Constants {
public static final String RESPONSE_TYPE = "response_type";
public static final String SCOPE = "scope";
public static final String SECRET = "secret";
public static final String SESSION_DURATION = "session_duration";
public static final String SMTP_USER = "smtp_user";
public static final String SMTP_PASSWORD = "smtp_pass";
public static final String SMTP_AUTH = "smtp_auth";

View File

@@ -13,8 +13,9 @@ public interface UserService {
* @param user
* @return
*/
public AccessToken accessToken(User user);
public UserService delete(User user);
public AccessToken accessToken(User user);
public Optional<User> consumeToken(String accessToken);
public UserService delete(User user);
/**
* return the user identified by its access token

View File

@@ -1,6 +1,9 @@
/* © SRSoftware 2024 */
package de.srsoftware.oidc.api.data;
import static de.srsoftware.oidc.api.Constants.SESSION_DURATION;
import java.time.Duration;
import java.util.*;
import org.json.JSONObject;
@@ -14,7 +17,8 @@ public final class User {
private final Set<Permission> permissions = new HashSet<>();
private String email, hashedPassword, realName, uuid, username;
private String email, hashedPassword, realName, uuid, username;
private Duration sessionDuration = Duration.ofMinutes(10);
public User(String username, String hashedPassword, String realName, String email, String uuid) {
this.username = username;
@@ -66,7 +70,9 @@ public final class User {
public Map<String, Object> map(boolean includePassword) {
return includePassword ? Map.of(USERNAME, username, REALNAME, realName, EMAIL, email, PERMISSIONS, permissions, UUID, uuid, PASSWORD, hashedPassword) : Map.of(USERNAME, username, REALNAME, realName, EMAIL, email, PERMISSIONS, permissions, UUID, uuid);
return includePassword //
? Map.of(USERNAME, username, REALNAME, realName, EMAIL, email, PERMISSIONS, permissions, UUID, uuid, SESSION_DURATION, sessionDuration.toMinutes(), PASSWORD, hashedPassword)
: Map.of(USERNAME, username, REALNAME, realName, EMAIL, email, PERMISSIONS, permissions, UUID, uuid, SESSION_DURATION, sessionDuration.toMinutes());
}
public static Optional<User> of(JSONObject json, String userId) {
@@ -81,6 +87,7 @@ public final class User {
e.printStackTrace();
}
}
if (json.has(SESSION_DURATION)) user.sessionDuration(Duration.ofMinutes(json.getInt(SESSION_DURATION)));
return Optional.of(user);
}
@@ -115,4 +122,12 @@ public final class User {
public String uuid() {
return uuid;
}
public void sessionDuration(Duration newVal) {
sessionDuration = newVal;
}
public Duration sessionDuration() {
return sessionDuration;
}
}