Added logging and fixed some security concerns
This commit is contained in:
		@@ -71,7 +71,9 @@ public class Startup {
 | 
			
		||||
						new UserSearchProcessor(),
 | 
			
		||||
						new ContactOperationProcessor(),
 | 
			
		||||
						new IsTypingProcessor(),
 | 
			
		||||
						new NameChangeProcessor())));
 | 
			
		||||
						new NameChangeProcessor(),
 | 
			
		||||
						new ProfilePicChangeProcessor(),
 | 
			
		||||
						new PasswordChangeRequestProcessor())));
 | 
			
		||||
 | 
			
		||||
		// Initialize the current message ID
 | 
			
		||||
		final PersistenceManager persistenceManager = PersistenceManager.getInstance();
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,7 @@ import javax.persistence.*;
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@Entity
 | 
			
		||||
@Table(name = "contacts")
 | 
			
		||||
@Table(name = "contacts", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }) })
 | 
			
		||||
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
 | 
			
		||||
public abstract class Contact {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,14 @@
 | 
			
		||||
package envoy.server.processors;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.logging.Level;
 | 
			
		||||
 | 
			
		||||
import envoy.event.PasswordChangeRequest;
 | 
			
		||||
import envoy.event.PasswordChangeResult;
 | 
			
		||||
import envoy.server.data.PersistenceManager;
 | 
			
		||||
import envoy.server.net.ObjectWriteProxy;
 | 
			
		||||
import envoy.server.util.PasswordUtil;
 | 
			
		||||
import envoy.util.EnvoyLog;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Project: <strong>envoy-server-standalone</strong><br>
 | 
			
		||||
@@ -22,8 +24,12 @@ public class PasswordChangeRequestProcessor implements ObjectProcessor<PasswordC
 | 
			
		||||
	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()));
 | 
			
		||||
		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));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user