38 lines
1.2 KiB
Java
38 lines
1.2 KiB
Java
package envoy.server.processors;
|
|
|
|
import java.io.IOException;
|
|
import java.util.logging.Level;
|
|
|
|
import envoy.event.*;
|
|
import envoy.util.EnvoyLog;
|
|
|
|
import envoy.server.data.PersistenceManager;
|
|
import envoy.server.net.ObjectWriteProxy;
|
|
import envoy.server.util.PasswordUtil;
|
|
|
|
/**
|
|
* @author Leon Hofmeister
|
|
* @since Envoy Server v0.2-beta
|
|
*/
|
|
public final class PasswordChangeRequestProcessor
|
|
implements ObjectProcessor<PasswordChangeRequest> {
|
|
|
|
@Override
|
|
public void process(PasswordChangeRequest event, long socketID,
|
|
ObjectWriteProxy writeProxy) throws IOException {
|
|
final var persistenceManager = PersistenceManager.getInstance();
|
|
final var user = persistenceManager.getUserByID(event.getID());
|
|
final var logger =
|
|
EnvoyLog.getLogger(PasswordChangeRequestProcessor.class);
|
|
final var correctAuthentication =
|
|
PasswordUtil.validate(event.getOldPassword(), user.getPasswordHash());
|
|
if (correctAuthentication) {
|
|
user.setPasswordHash(PasswordUtil.hash(event.get()));
|
|
logger.log(Level.INFO, user + " changed his password");
|
|
} else
|
|
logger.log(Level.INFO, user
|
|
+ " tried changing his password but provided insufficient authentication");
|
|
writeProxy.write(socketID, new PasswordChangeResult(correctAuthentication));
|
|
}
|
|
}
|