package games.strategy.engine.framework.startup.login;
import java.awt.Component;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import games.strategy.engine.ClientContext;
import games.strategy.net.IConnectionLogin;
import games.strategy.util.CountDownLatchHandler;
import games.strategy.util.EventThreadJOptionPane;
import games.strategy.util.MD5Crypt;
public class ClientLogin implements IConnectionLogin {
public static final String ENGINE_VERSION_PROPERTY = "Engine.Version";
public static final String JDK_VERSION_PROPERTY = "JDK.Version";
public static final String PASSWORD_PROPERTY = "Password";
private final Component m_parent;
public ClientLogin(final Component parent) {
m_parent = parent;
}
@Override
public Map<String, String> getProperties(final Map<String, String> challengProperties) {
final Map<String, String> rVal = new HashMap<>();
if (challengProperties.get(ClientLoginValidator.PASSWORD_REQUIRED_PROPERTY).equals(Boolean.TRUE.toString())) {
final JPasswordField passwordField = new JPasswordField();
passwordField.setColumns(15);
JOptionPane.showMessageDialog(JOptionPane.getFrameForComponent(m_parent), passwordField,
"Enter a password to join the game", JOptionPane.QUESTION_MESSAGE);
final String password = new String(passwordField.getPassword());
rVal.put(PASSWORD_PROPERTY, MD5Crypt.crypt(password, challengProperties.get(ClientLoginValidator.SALT_PROPERTY)));
}
rVal.put(ENGINE_VERSION_PROPERTY, ClientContext.engineVersion().toString());
rVal.put(JDK_VERSION_PROPERTY, System.getProperty("java.runtime.version"));
return rVal;
}
@Override
public void notifyFailedLogin(final String message) {
EventThreadJOptionPane.showMessageDialog(JOptionPane.getFrameForComponent(m_parent), message,
new CountDownLatchHandler(true));
}
}