preparing client service

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2024-07-21 01:14:07 +02:00
parent 993c59bfa6
commit 85853688a8
8 changed files with 98 additions and 19 deletions

View File

@@ -0,0 +1,6 @@
package de.srsoftware.oidc.api;
import java.util.Set;
public record Client(String id, Set<String> redirectUris) {
}

View File

@@ -0,0 +1,10 @@
package de.srsoftware.oidc.api;
import java.util.Optional;
public interface ClientService {
Optional<Client> getClient(String clientId);
ClientService add(Client client);
ClientService remove(Client client);
ClientService update(Client client);
}

View File

@@ -0,0 +1,7 @@
package de.srsoftware.oidc.api;
public enum Permission {
CREATE_CLIENT,
ALTER_CLIENT,
REMOVE_CLIENT
}

View File

@@ -1,15 +1,17 @@
/* © SRSoftware 2024 */
package de.srsoftware.oidc.api;
import java.util.Map;
import java.util.Objects;
import java.util.*;
public final class User {
public static final String EMAIL = "email";
public static final String PASSWORD = "password";
public static final String PERMISSIONS = "permissions";
public static final String REALNAME = "realname";
public static final String USERNAME = "username";
private final Set<Permission> permissions = new HashSet<>();
private String email, hashedPassword, realName, uuid, username;
public User(String username, String hashedPassword, String realName, String email, String uuid) {
@@ -20,6 +22,11 @@ public final class User {
this.uuid = uuid;
}
public User add(Permission permission) {
permissions.add(permission);
return this;
}
public String email() {
return email;
}
@@ -37,6 +44,10 @@ public final class User {
return Objects.equals(this.uuid, that.uuid);
}
public boolean hasPermission(Permission permission){
return permissions.contains(permission);
}
public String hashedPassword() {
return hashedPassword;
}
@@ -52,8 +63,10 @@ public final class User {
}
public Map<String, String> map(boolean includePassword) {
return includePassword ? Map.of(USERNAME, username, REALNAME, realName, PASSWORD, hashedPassword, EMAIL, email) : Map.of(USERNAME, username, REALNAME, realName, EMAIL, email);
public Map<String, Object> map(boolean includePassword) {
return includePassword
? Map.of(USERNAME, username, REALNAME, realName, EMAIL, email, PERMISSIONS, permissions, PASSWORD, hashedPassword)
: Map.of(USERNAME, username, REALNAME, realName, EMAIL, email, PERMISSIONS, permissions);
}
public String realName() {