Login sample
Authentification mecanism deeper
/*** * <h1>Session</h1> * * <h2>Description</h2> * <p>Login / logout windows</p> * * <h2>Features</h2> * <ol> * <li>Log in</li> * <li>Error message : login or password error</li> * </ol> * * <h2>Request parameters</h2> * <ol> * <li>name : user name</li> * <li>password : password (not requiert in this version)</li> * </ol> * <i><b>Http Method:"GET"</b></i> * </p> * * @copyright Copyright (c) 2009 ARM, Inc. * @author vicben01 * @version 1.0 */ public class SessionLoginItem implements NimbusBinding<Toolbox> { // Linked instance private Toolbox toolbox; // Current instance private static Window instance = null; public SessionLoginItem(final SessionManager session){ final Window window = new Window(); window.setAutoSize(true); window.setTitle("Login window"); window.setLeft(200); window.setTop(100); window.setAutoWidth(); window.setCanDragReposition(true); window.setCanDragResize(false); final DynamicForm form = new DynamicForm(); DataSource dataSource = new DataSource() { @Override protected void transformResponse(DSResponse response, DSRequest request, Object xmlData) { SC.logWarn("status>"+response.getStatus()); int status = Integer.parseInt((String) XMLTools.selectString(xmlData, "/response/status")); if(status == DSResponse.STATUS_TRANSPORT_ERROR) { SC.warn("Please, restart the server."); } if(status == DSResponse.STATUS_LOGIN_SUCCESS) { // set Session ID String username = request.getOldValues().getAttributeAsString("user"); //session.setUsername(username); //TODO: Add open id SC.logWarn("Register username = " + username ); // Set up toolbox getConnector().animateShow(AnimationEffect.FADE, null, 1000); getConnector().reload(username); window.animateHide(AnimationEffect.FADE, null, 1000); } if(status == DSResponse.STATUS_LOGIN_INCORRECT) { SC.logWarn("Login failure", "User does not exist !"); //window.animateShow(AnimationEffect.FADE, null, 600); response.setStatus(RPCResponse.STATUS_VALIDATION_ERROR); Object errors = XMLTools.selectNodes(xmlData, "/response/errors"); JavaScriptObject errorsJS = XMLTools.toJS(errors); response.setErrors(errorsJS); window.animateShow(AnimationEffect.FADE, null, 600); } if(status == DSResponse.STATUS_MAX_LOGIN_ATTEMPTS_EXCEEDED) { SC.say(NM.exExpectedTitle,NM.overload); } }; }; dataSource.setDataFormat(DSDataFormat.XML); dataSource.setDataURL("nimbus/login"); dataSource.setShowPrompt(true); DataSourceTextField userNameField = new DataSourceTextField("user", "Username", 50, true); DataSourcePasswordField passwordField = new DataSourcePasswordField("password", "Password", 30, true); passwordField.setRequired(false); dataSource.setFields(userNameField, passwordField); form.setDataSource(dataSource); form.setUseAllDataSourceFields(true); // Set default values form.setValue("user", "Samsung"); form.setValue("password", ""); /* PasswordItem passwordItem = new PasswordItem(); passwordItem.setName("password"); passwordItem.setRequired(false);*/ IButton btn = new IButton("Log in"); btn.setLeft(10); btn.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { if(form.validate()) { //XX: Front validation // Save form form.saveData(); } } }); VLayout layout = new VLayout(15); layout.addMember(form); HLayout bar = new HLayout(10); bar.setLayoutLeftMargin(20); bar.addMember(btn); layout.addMember(bar); window.addItem(layout); instance = window; } public Window getInstance() { return instance; } @Override public void setConnector(Toolbox canvas) { toolbox = canvas; } @Override public Toolbox getConnector(){ return toolbox; } }