Commit 414a825e by Juho Juopperi

utility project stuff

1 parent 9c07914e
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<dependent-module archiveName="LanBortalBeansClient.jar" deploy-path="/lib" handle="module:/resource/LanBortalBeansClient/LanBortalBeansClient"> <dependent-module archiveName="LanBortalBeansClient.jar" deploy-path="/lib" handle="module:/resource/LanBortalBeansClient/LanBortalBeansClient">
<dependency-type>uses</dependency-type> <dependency-type>uses</dependency-type>
</dependent-module> </dependent-module>
<dependent-module archiveName="LanBortalUtilities.jar" deploy-path="/" handle="module:/resource/LanBortalUtilities/LanBortalUtilities"> <dependent-module archiveName="LanBortalUtilities.jar" deploy-path="/lib" handle="module:/resource/LanBortalUtilities/LanBortalUtilities">
<dependency-type>uses</dependency-type> <dependency-type>uses</dependency-type>
</dependent-module> </dependent-module>
</wb-module> </wb-module>
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
<name>LanBortalDatabase</name> <name>LanBortalDatabase</name>
<comment></comment> <comment></comment>
<projects> <projects>
<project>LanBortalUtilities</project>
</projects> </projects>
<buildSpec> <buildSpec>
<buildCommand> <buildCommand>
......
...@@ -20,8 +20,14 @@ import javax.persistence.OneToMany; ...@@ -20,8 +20,14 @@ import javax.persistence.OneToMany;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Temporal; import javax.persistence.Temporal;
import javax.persistence.TemporalType; import javax.persistence.TemporalType;
import javax.persistence.Transient;
import javax.persistence.Version; import javax.persistence.Version;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
/** /**
* *
*/ */
...@@ -159,6 +165,9 @@ public class User implements ModelInterface<Integer> { ...@@ -159,6 +165,9 @@ public class User implements ModelInterface<Integer> {
@OneToMany(mappedBy = "admin") @OneToMany(mappedBy = "admin")
private List<EventSettings> eventSettings; private List<EventSettings> eventSettings;
@Transient
private static final Logger logger = LoggerFactory.getLogger(User.class);
public User() { public User() {
} }
...@@ -200,10 +209,12 @@ public class User implements ModelInterface<Integer> { ...@@ -200,10 +209,12 @@ public class User implements ModelInterface<Integer> {
} }
public String getPassword() { public String getPassword() {
logger.warn("Directly reading raw User password");
return password; return password;
} }
public void setPassword(String password) { public void setPassword(String password) {
logger.warn("Directly settings raw User password");
this.password = password; this.password = password;
} }
...@@ -522,5 +533,12 @@ public class User implements ModelInterface<Integer> { ...@@ -522,5 +533,12 @@ public class User implements ModelInterface<Integer> {
this.eventSettings = eventSettings; this.eventSettings = eventSettings;
} }
public void resetPassword(String password) {
// XXX: Couldn't reference utility project
throw new NotImplementedException();
}
public boolean checkPassword(String password) {
throw new NotImplementedException();
}
} }
Manifest-Version: 1.0 Manifest-Version: 1.0
Class-Path: Class-Path: lib/slf4j-api-1.5.8.jar
...@@ -13,66 +13,68 @@ import sun.misc.BASE64Encoder; ...@@ -13,66 +13,68 @@ import sun.misc.BASE64Encoder;
public class PasswordFunctions { public class PasswordFunctions {
private static BASE64Decoder decoder = new BASE64Decoder(); private static BASE64Decoder decoder = new BASE64Decoder();
private static BASE64Encoder encoder = new BASE64Encoder(); private static BASE64Encoder encoder = new BASE64Encoder();
private static final Logger logger = LoggerFactory.getLogger(PasswordFunctions.class); private static final Logger logger = LoggerFactory
.getLogger(PasswordFunctions.class);
public static String getEncryptedPassword(String password) {
String salt = generateSalt(); public static String getEncryptedPassword(String password) {
String base64Str = shaWithSaltToBase64(password, salt); String salt = generateSalt();
String ssha = "{SSHA}" + base64Str; String base64Str = shaWithSaltToBase64(password, salt);
return ssha; String ssha = "{SSHA}" + base64Str;
} return ssha;
}
private static String shaWithSaltToBase64(String password, String salt) {
MessageDigest algo = null; private static String shaWithSaltToBase64(String password, String salt) {
try { MessageDigest algo = null;
algo = MessageDigest.getInstance("SHA"); try {
} catch (NoSuchAlgorithmException e) { algo = MessageDigest.getInstance("SHA");
logger.error("WTF!! digest function not found!!", e); } catch (NoSuchAlgorithmException e) {
return null; logger.error("WTF!! digest function not found!!", e);
} return null;
}
String hashed = new String(algo.digest((password + salt).getBytes()));
String both = hashed + salt; String hashed = new String(algo.digest((password + salt).getBytes()));
String base64Str = encoder.encode(both.getBytes()); String both = hashed + salt;
return base64Str; String base64Str = encoder.encode(both.getBytes());
} return base64Str;
}
public static boolean checkPlainPassword(String plainPassword, String saltedPassword) {
public static boolean checkPlainPassword(String plainPassword,
String oldBase64 = saltedPassword.substring("{SSHA}".length()); String saltedPassword) {
String decodedHashedAndSalt;
try { String oldBase64 = saltedPassword.substring("{SSHA}".length());
decodedHashedAndSalt = new String(decoder.decodeBuffer(oldBase64)); String decodedHashedAndSalt;
} catch (IOException e) { try {
logger.error("Something awful happened...", e); decodedHashedAndSalt = new String(decoder.decodeBuffer(oldBase64));
return false; } catch (IOException e) {
} logger.error("Something awful happened...", e);
return false;
String salt = decodedHashedAndSalt.substring( }
decodedHashedAndSalt.length() - getSaltLenght(),
decodedHashedAndSalt.length()); String salt = decodedHashedAndSalt.substring(decodedHashedAndSalt
.length()
String newBase64 = shaWithSaltToBase64(plainPassword, salt); - getSaltLenght(), decodedHashedAndSalt.length());
boolean theSame = oldBase64.equals(newBase64); String newBase64 = shaWithSaltToBase64(plainPassword, salt);
return theSame;
} boolean theSame = oldBase64.equals(newBase64);
return theSame;
private static int getSaltLenght() { }
return 8;
} private static int getSaltLenght() {
return 8;
private static String generateSalt() { }
Random random = new Random();
String lettahs = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; private static String generateSalt() {
StringBuilder sb = new StringBuilder(); Random random = new Random();
for (int i = 0; i < getSaltLenght(); i++) { String lettahs = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
int index = random.nextInt(lettahs.length()); StringBuilder sb = new StringBuilder();
sb.append(lettahs.charAt(index)); for (int i = 0; i < getSaltLenght(); i++) {
} int index = random.nextInt(lettahs.length());
return sb.toString(); sb.append(lettahs.charAt(index));
} }
return sb.toString();
}
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!