You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
2.3 KiB
103 lines
2.3 KiB
/* © SRSoftware 2024 */ |
|
package de.srsoftware.oidc.api; |
|
|
|
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) { |
|
this.username = username; |
|
this.realName = realName; |
|
this.email = email; |
|
this.hashedPassword = hashedPassword; |
|
this.uuid = uuid; |
|
} |
|
|
|
public User add(Permission permission) { |
|
permissions.add(permission); |
|
return this; |
|
} |
|
|
|
public String email() { |
|
return email; |
|
} |
|
|
|
public User email(String newVal) { |
|
email = newVal; |
|
return this; |
|
} |
|
|
|
@Override |
|
public boolean equals(Object obj) { |
|
if (obj == this) return true; |
|
if (obj == null || obj.getClass() != this.getClass()) return false; |
|
var that = (User)obj; |
|
return Objects.equals(this.uuid, that.uuid); |
|
} |
|
|
|
public boolean hasPermission(Permission permission){ |
|
return permissions.contains(permission); |
|
} |
|
|
|
public String hashedPassword() { |
|
return hashedPassword; |
|
} |
|
|
|
public User hashedPassword(String newValue) { |
|
hashedPassword = newValue; |
|
return this; |
|
} |
|
|
|
@Override |
|
public int hashCode() { |
|
return Objects.hash(username, realName, email, hashedPassword, uuid); |
|
} |
|
|
|
|
|
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() { |
|
return realName; |
|
} |
|
|
|
public User realName(String newValue) { |
|
realName = newValue; |
|
return this; |
|
} |
|
|
|
@Override |
|
public String toString() { |
|
return "User[" |
|
+ "username=" + username + ", " |
|
+ "realName=" + realName + ", " |
|
+ "email=" + email + ", " |
|
+ "uuid=" + uuid + ']'; |
|
} |
|
|
|
public String username() { |
|
return username; |
|
} |
|
|
|
public User username(String newVal) { |
|
username = newVal; |
|
return this; |
|
} |
|
|
|
|
|
public String uuid() { |
|
return uuid; |
|
} |
|
}
|
|
|