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;
	}
}

Requirement technologies