Add password capability to user.
[demoscenemusic.git] / src / main / java / net / pterodactylus / demoscenemusic / data / DefaultUser.java
index f8fe1b6..6867ef3 100644 (file)
 
 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;
 
 /**
@@ -59,6 +62,40 @@ public class DefaultUser extends DefaultBase implements User {
         * {@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);
        }