use of com.servoy.j2db.gui.LoginDialog in project servoy-client by Servoy.
the class J2DBClient method main.
/**
* Starting point
*/
@SuppressWarnings("nls")
public static void main(final String[] args) {
String userTimeZone = System.getProperty("user.timezone");
// Bug around java when downloading the first time (pack or gzip seems to alter the timezone and don't set it back)
if (userTimeZone != null && !userTimeZone.equals(TimeZone.getDefault().getID())) {
TimeZone timeZone = TimeZone.getTimeZone(userTimeZone);
if (userTimeZone.equals(timeZone.getID())) {
TimeZone.setDefault(timeZone);
}
}
String remoteRunnerClassName = System.getProperty("com.servoy.remote.checker");
if (remoteRunnerClassName != null) {
try {
Class<?> clazz = Class.forName(remoteRunnerClassName);
RemoteRunnerChecker.setInstance((IRemoteRunner) clazz.newInstance());
} catch (Throwable t) {
System.err.println("Error setting the remote runner check for " + remoteRunnerClassName);
}
}
boolean toggleTracing = false;
StartupArguments arguments = new StartupArguments(args);
Iterator<Entry<String, Object>> iterator = arguments.entrySet().iterator();
while (iterator.hasNext()) {
Entry<String, Object> arg = iterator.next();
if (arg.getKey().startsWith("system.property.")) {
System.setProperty(arg.getKey().substring(16), (String) arg.getValue());
}
if (arg.getKey().equals("tracing") && arg.getValue().equals("true")) {
toggleTracing = true;
}
}
if (toggleTracing)
Debug.toggleTracing();
if (Boolean.getBoolean("servoy.usejaas")) {
final boolean[] loginShown = new boolean[1];
System.setProperty("javax.security.auth.useSubjectCredsOnly", "true");
try {
Debug.log("creating context");
LoginContext lc = new LoginContext("ServoyClient", new CallbackHandler() {
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
Debug.log("handle call back");
String loginName = null;
String passwordString = null;
for (Callback callback : callbacks) {
if (callback instanceof TextOutputCallback) {
final TextOutputCallback textOutputCallback = (TextOutputCallback) callback;
switch(textOutputCallback.getMessageType()) {
case TextOutputCallback.INFORMATION:
Debug.log(textOutputCallback.getMessage());
break;
case TextOutputCallback.WARNING:
Debug.warn(textOutputCallback.getMessage());
break;
case TextOutputCallback.ERROR:
Debug.error(textOutputCallback.getMessage());
break;
default:
throw new IOException("Unsupported message type: " + textOutputCallback.getMessageType());
}
} else if (callback instanceof NameCallback) {
final NameCallback nameCallback = (NameCallback) callback;
if (loginName == null) {
LoginDialog ld = new LoginDialog((Frame) null, null, "Sign on", false, true);
Object[] credentials = ld.showDialog(null);
if (credentials != null && credentials.length == 2) {
loginName = (String) credentials[0];
passwordString = (String) credentials[1];
}
if (loginName == null) {
loginName = "";
passwordString = "";
}
loginShown[0] = true;
}
nameCallback.setName(loginName);
} else if (callback instanceof PasswordCallback) {
final PasswordCallback passwordCallback = (PasswordCallback) callback;
if (passwordString == null) {
LoginDialog ld = new LoginDialog((Frame) null, null, "Sign on", false, true);
Object[] credentials = ld.showDialog(null);
if (credentials != null && credentials.length == 2) {
loginName = (String) credentials[0];
passwordString = (String) credentials[1];
}
if (passwordString == null) {
loginName = "";
passwordString = "";
}
loginShown[0] = true;
}
passwordCallback.setPassword(passwordString.toCharArray());
} else {
throw new UnsupportedCallbackException(callback, "Unrecognized Callback");
}
}
}
});
Debug.log("context created");
boolean loggedIn = true;
try {
lc.login();
} catch (LoginException e) {
Debug.log("login failed", e);
loggedIn = false;
}
if (loggedIn) {
Subject.doAsPrivileged(lc.getSubject(), new PrivilegedExceptionAction<Void>() {
public Void run() throws Exception {
mainImpl(args);
return null;
}
}, null);
} else {
mainImpl(args);
}
} catch (Exception e) {
Debug.log("context creation failed", e);
if (loginShown[0]) {
JOptionPane.showMessageDialog(null, "Couldnt login", "Login failed", JOptionPane.ERROR_MESSAGE);
}
mainImpl(args);
}
} else {
mainImpl(args);
}
}
use of com.servoy.j2db.gui.LoginDialog in project servoy-client by Servoy.
the class DebugJ2DBClient method createLoginDialog.
@Override
protected LoginDialog createLoginDialog() {
// Override login dialog, add a 'use dummy login' checkbox
return new LoginDialog(frame, this, Messages.getString("servoy.logindialog.title"), false, false) {
/* do not show remember-me/dummy login check */
@Override
protected JCheckBox createRememberMeCheckbox() {
return new JCheckBox("Use dummy login (set in Preferences)", false);
}
@Override
public Object[] showDialog(String name) {
if (current == null) {
return null;
}
if (current.getMustAuthenticate()) {
return super.showDialog(name);
}
// will only get here when enhanced security is turned on and solution.mustAuthenticate = false
// Use the dummy auth to access the appserver, in real server access a login dialog would be shown
DeveloperPreferences developerPreferences = new DeveloperPreferences(Settings.getInstance());
boolean dummyAuth = developerPreferences.getUseDummyAuth();
if (!dummyAuth) {
Object[] loginResult = super.showDialog(name);
dummyAuth = loginResult != null && loginResult.length >= 3 && Boolean.TRUE.equals(loginResult[2]);
if (!dummyAuth) {
return loginResult;
}
developerPreferences.setUseDummyAuth(true);
}
// dummy authentication
try {
authenticate(new Credentials(getClientID(), null, null, IApplicationServer.DUMMY_LOGIN));
} catch (RepositoryException e) {
Debug.error(e);
}
// return null means user hit cancel, in case of dummy login, user id has changed
handleClientUserUidChanged(null, getClientInfo().getUserUid());
return null;
}
};
}
Aggregations