API Docs for: 0.0.2
Show:

File: ../api/src/view/user/controller.js

/**
 * Controller for the user login/registration module
 * @submodule User
 * @namespace chess.view.user
 * @class Controller
 * @extends controller.Controller
 */
chess.view.user.Controller = new Class({
    Extends:ludo.controller.Controller,
    singleton:true,
    type:'chess.view.user.Controller',
    components:{},
    applyTo: ['user'],

	ludoConfig:function (config) {
        this.parent(config);
        this.createWindows();
        this.validateSession();
    },

    addView:function (component) {
        this.components[component.submodule] = component;
        switch (component.submodule) {
            case 'settingsButton':
                component.addEvent('click', function(){
                    this.fireEvent('showProfile');
                }.bind(this));
                break;
            case 'registerWindow':
                component.addEvent('registerSuccess', this.login.bind(this));
                break;
            case 'loginWindow':
                component.addEvent('loginSuccess', this.login.bind(this));
                break;
            case 'loginButton':
                component.addEvent('click', function(){
                    this.fireEvent('showLogin');
                }.bind(this));
                break;
            case 'logoutButton':
                component.addEvent('click', this.logout.bind(this));
                break;
            case 'registerButton':
                component.addEvent('click', function(){
                    this.fireEvent('showRegister');
                }.bind(this));
                break;
        }
    },

    validateSession:function () {
        var token = this.getSessionToken();
        if (!token) {
            this.fireEvent('invalidSession');
            return;
        }

		var req = new ludo.remote.JSON({
            resource:'Session',
			listeners:{
				"success": function(request){
					var userDetails = request.getResponseData();
					this.fireEvent('validSession', userDetails.id);
     				this.fireEvent('userAccess', userDetails.user_access);
				}.bind(this),
				"failure": function(){
					this.fireEvent("invalidSession");
				}.bind(this)
			}
		});
        req.send('authenticate', undefined, token);
    },

    getSessionToken:function () {
        return Cookie.read(chess.COOKIE_NAME)
    },

    createWindows:function(){
        new chess.view.user.RegisterWindow();
        new chess.view.user.LoginWindow();
        new chess.view.user.ProfileWindow();
    },

    login:function(json){
        this.fireEvent('validSession', json.token);
        this.fireEvent('userAccess', json.user_access);
    },

    logout:function(){
        Cookie.dispose(chess.COOKIE_NAME);
        this.fireEvent('invalidSession');
    }
});