*/
@Override
public User createObject(ResultSet resultSet) throws SQLException {
- return new LazyUser(resultSet.getString("USERS.ID")).setName(resultSet.getString("USERS.NAME")).setLevel(resultSet.getInt("USERS.LEVEL"));
+ return new LazyUser(resultSet.getString("USERS.ID")).setName(resultSet.getString("USERS.NAME")).setPasswordHash(resultSet.getString("USERS.PASSWORD")).setLevel(resultSet.getInt("USERS.LEVEL"));
}
}
package net.pterodactylus.demoscenemusic.data;
+import java.io.UnsupportedEncodingException;
import java.util.Collection;
+import net.pterodactylus.util.crypto.MessageDigestHasher;
+import net.pterodactylus.util.number.Hex;
import net.pterodactylus.util.object.Default;
/**
* {@inheritDoc}
*/
@Override
+ public User setPassword(String password) {
+ try {
+ getValue("password", String.class).set(Hex.toHex(MessageDigestHasher.getSHA512Hasher().hash(password.getBytes("UTF-8"))));
+ return this;
+ } catch (UnsupportedEncodingException uee1) {
+ throw new RuntimeException("VM does not support UTF-8.", uee1);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public User setPasswordHash(String passwordHash) {
+ getValue("password", String.class).set(passwordHash);
+ return this;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean verifyPassword(String password) {
+ try {
+ return getValue("password", String.class).get().equalsIgnoreCase(Hex.toHex(MessageDigestHasher.getSHA512Hasher().hash(password.getBytes("UTF-8"))));
+ } catch (UnsupportedEncodingException uee1) {
+ throw new RuntimeException("VM does not support UTF-8.", uee1);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public int getLevel() {
return Default.forNull(getValue("level", Integer.class).get(), 0);
}
public User setName(String name);
/**
+ * Sets the password of this user.
+ *
+ * @param password
+ * The new password of this user
+ * @return This user
+ */
+ public User setPassword(String password);
+
+ /**
+ * Sets the hash of the password of this user.
+ *
+ * @param passwordHash
+ * The hash of the user’s password
+ * @return This user
+ */
+ public User setPasswordHash(String passwordHash);
+
+ /**
+ * Verifies the given password.
+ *
+ * @param password
+ * The password to verify
+ * @return {@code true} if the given password matches the user’s password,
+ * {@code false} otherwise
+ */
+ public boolean verifyPassword(String password);
+
+ /**
* Returns the privilege level of this user. 0 is the level of a normal user
* without any special privileges.
*