implemented adding users, prepared sending reset links
Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* © SRSoftware 2024 */
|
||||
package de.srsoftware.oidc.api.data;
|
||||
|
||||
public enum Permission { MANAGE_CLIENTS }
|
||||
public enum Permission { MANAGE_CLIENTS, MANAGE_USERS }
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user