implemented adding users, prepared sending reset links

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2024-08-05 23:52:55 +02:00
parent 4fc804ac84
commit f25814cae5
25 changed files with 357 additions and 57 deletions

View File

@@ -4,6 +4,7 @@ package de.srsoftware.oidc.api;
import de.srsoftware.oidc.api.data.User;
import java.util.List;
import java.util.Optional;
import java.util.Set;
public interface UserService {
/**
@@ -22,6 +23,7 @@ public interface UserService {
public Optional<User> forToken(String accessToken);
public UserService init(User defaultUser);
public List<User> list();
public Set<User> find(String key);
public Optional<User> load(String id);
public Optional<User> load(String username, String password);
public boolean passwordMatches(String password, String hashedPassword);

View File

@@ -1,4 +1,4 @@
/* © SRSoftware 2024 */
package de.srsoftware.oidc.api.data;
public enum Permission { MANAGE_CLIENTS }
public enum Permission { MANAGE_CLIENTS, MANAGE_USERS }

View File

@@ -2,6 +2,7 @@
package de.srsoftware.oidc.api.data;
import java.util.*;
import org.json.JSONObject;
public final class User {
public static final String EMAIL = "email";
@@ -23,8 +24,8 @@ public final class User {
this.uuid = uuid;
}
public User add(Permission permission) {
permissions.add(permission);
public User add(Permission... newPermissions) {
for (var permission : newPermissions) permissions.add(permission);
return this;
}
@@ -68,6 +69,21 @@ public final class User {
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);
}
public static Optional<User> of(JSONObject json, String userId) {
var user = new User(json.getString(USERNAME), json.getString(PASSWORD), json.getString(REALNAME), json.getString(EMAIL), userId);
var perms = json.has(PERMISSIONS) ? json.getJSONArray(PERMISSIONS) : Set.of();
for (Object perm : perms) {
try {
if (perm instanceof String s) perm = Permission.valueOf(s);
if (perm instanceof Permission p) user.add(p);
} catch (Exception e) {
e.printStackTrace();
}
}
return Optional.of(user);
}
public String realName() {
return realName;
}