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.*; import envoy.server.util.PasswordUtil; /** * @author Leon Hofmeister * @since Envoy Server v0.2-beta */ public final class PasswordChangeRequestProcessor implements ObjectProcessor { @Override public void process(PasswordChangeRequest event, long socketID, ObjectWriteProxy writeProxy) throws IOException { final var persistenceManager = PersistenceManager.getInstance(); final var user = persistenceManager .getUserByID(ConnectionManager.getInstance().getUserIDBySocketID(socketID)); 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)); } }