Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
olá pessoal.
to criando um sistema de login com ajax aqui
funciona de boa.. mas se eu logar, deslogar e em seguida logar ou deslogar, logar e deslogar
na 3 ação nada a contece....
é assim o index inicia e chama a rota check q vai fazer a verificação se usuario online ou offline
se usuario online mostrar painel
se usuario offline mostrar formulario
é engraçado pq funciona na boa mas qd ele tenta monta ou o form ou o painel na segunda vez ele simplesmente não cria
abaixo tão meus arquivos
login - objeto login
loginBase - é extendido pelo login possui funções de ajax
loginController - e oq vai fazer o controle das ações
loginView - responsavel por monta a view
loginForm - cria form
loginPanel - cria painel
index.html
// Require dependencies
require([
"dojo/ready",
"dojo/dom",
"dojo/router",
"dojo/My/RedesSociais",
"dojo/My/Menu",
"dojo/My/About",
"dojo/My/Login/Login",
"dojo/My/Album/Album",
"dojo/My/Login/LoginController"
], function(ready, dom, router,
RedesSociais, Menu, About, Login, Album, LoginController){
ready(function(){
var redesSociais = new RedesSociais();
redesSociais.createThumbs();
var menu = new Menu({},'main_menu');
menu.startup();
var loginController = new LoginController();
loginController.checkLogin();
router.register("/", function(evt){
});
router.register("/check", function(evt){
var loginController = new LoginController();
loginController.checkLogin();
});
router.register("/logout", function(evt){
var loginController = new LoginController();
loginController.logout();
});
router.register("/album", function(evt){
var album = new Album();
album.findAll();
});
router.register("/sobre", function(evt){
var about = new About({},'content');
});
router.register("/membros", function(evt){
});
router.register("/contato", function(evt){
});
router.startup();
var hash = window.location.hash === '' ? "/check" : window.location.hash.replace("#","");
router.go(hash);
});
});
loginController
define([
"dojo/_base/declare",
"dojo/_base/lang",
"dojo/router",
"dojo/My/Login/Login",
"dojo/My/Login/LoginView"
], function(declare, lang,
router,
Login, LoginView
){
return declare(null, {
login:{},
constructor: function(){
},
logout:function(){
var login = new Login();
var xhr = login.logout();
xhr.then(function(){
router.go('/check');
});
},
checkLogin:function(){
var login = new Login();
var xhr = login.checkLogin();
xhr.then(function(data){
data = data.charAt(0) === "t";
//render view
var view = new LoginView();
if(data) view.createPanel();
else view.createForm();
router.go('/');
});
}
});
});
login
define([
"dojo/_base/declare",
"dojo/_base/lang",
"dojo/My/Login/LoginBase"
], function(declare, lang,
LoginBase return declare(LoginBase, {
constructor: function(/*Object*/ kwArgs, /*String::id*/ srcNodeRef){
lang.mixin(this, kwArgs);
//this.srcNodeRef = srcNodeRef === undefined ? this.srcNodeRef : srcNodeRef;
}
});
});
loginbase
define([
"../../_base/declare",
"dojo/_base/lang",
"dojo/_base/xhr",
"dojo/My/Error",
"dojo/My/Standby"
], function(declare, lang, xhr, Error, Standby){
return declare(null, {
constructor: function(/*Object*/ kwArgs){
lang.mixin(this, kwArgs);
},
generateStandBy:function(){
var standby = new Standby ('login_widget');
standby = standby.get();
return standby;
},
checkLogin:function(){
var standby = this.generateStandBy();
standby.show();
var request = xhr.get({
url: "/verificalogado",
handleAs: 'text',
error: function(err){
new Error(err);
},
handle:function(e){
standby.hide();
standby.destroy();
}
});
return request;
},
getForm:function(){
var standby = this.generateStandBy();
standby.show();
var request = xhr.get({
url: "/login",
error: function(err){
new Error(err);
},
handle:function(e){
standby.hide();
standby.destroy();
}
});
return request;
},
doLogin:function(form){
var standby = this.generateStandBy();
standby.show();
var request = xhr.post({
url: "/login_check",
form: form,
error: function(err){
new Error(err);
},
handle:function(e){
standby.hide();
standby.destroy();
}
});
return request;
},
logout:function(){
var standby = this.generateStandBy();
standby.show();
var request = xhr.get({
url: "/logout",
error: function(err){
new Error(err);
},
handle:function(e){
standby.hide();
standby.destroy();
}
});
return request;
}
});
});
loginView
define([
"dojo/_base/declare",
"dojo/_base/lang",
"dojo/router",
"dojo/dom",
"dojo/dom-construct",
"dojo/My/Login/Login",
"dojo/My/Login/LoginForm",
"dojo/My/Login/LoginPanel",
], function(declare, lang,
router,
dom, domConstruct,
Login, LoginForm, LoginPanel
){
return declare(null, {
srcNodeRef: 'login_widget',
constructor: function(/*Object*/ kwArgs, /*String::id*/ srcNodeRef){
lang.mixin(this, kwArgs);
this.srcNodeRef = srcNodeRef === undefined ? this.srcNodeRef : srcNodeRef;
},
getClearedContent:function(){
var content = dom.byId(this.srcNodeRef);
content.innerHTML = '';
return content;
},
createPanel: function(){
var content = this.getClearedContent();
var div = domConstruct.create('div',null,content);
div.setAttribute('id','dropDownButtonContainer');
var panel = new LoginPanel();
panel.startup();
},
createForm: function(){
var appendTo = this.getClearedContent();
var login = new Login();
var formHtml = login.getForm();
formHtml.then(function(data){
appendTo.innerHTML = data;
var formDojo = new LoginForm();
formDojo = formDojo.getContainer();
formDojo.startup();
formDojo.set('onSubmit',function(e){
dojo.stopEvent(e);
if(this.validate()){
var r = login.doLogin('login_form');
r.then(function(data){
if(data.error !== undefined){
alert(data.error);
}else {
router.go('/check');
this.destroy();
}
})
}
});
});
}
});
});
loginPanel
define([
"dojo/_base/declare",
"dojo/_base/lang",
"dojo/dom",
"dojo/router",
"dijit/form/DropDownButton",
"dijit/DropDownMenu",
"dijit/MenuItem"
], function(declare, lang, dom, router,DropDownButton, DropDownMenu, MenuItem){
return declare(null, {
srcNodeRef: 'login_widget',
constructor: function(/*Object*/ kwArgs){
lang.mixin(this, kwArgs);
},
startup: function(){
var menu = new DropDownMenu({ style: "display: none;"});
var menuItem1 = new MenuItem({
label: "Configuração",
onClick: function(){
router.go('/profile/edit');
}
});
menu.addChild(menuItem1);
var menuItem2 = new MenuItem({
label: "Sair",
onClick: function(){
router.go('/logout');
menu.destroy();
}
});
menu.addChild(menuItem2);
var button = new DropDownButton({
label: "Profile!",
name: "profile",
dropDown: menu,
id: "profile_dropdown_menu"
});
var append = dom.byId("dropDownButtonContainer");
console.debug(append);
append.appendChild(button.domNode);
}
});
});
loginform
define([
"dojo/_base/declare",
"dojo/_base/lang",
"dijit/form/Form",
"dijit/form/ValidationTextBox",
"dijit/form/Button"
], function(declare, lang,
Form, ValidationTextBox, Button){
return declare(null, {
loginForm: {},
constructor: function(){
this.loginForm = new Form({},'login_form');
var username = new ValidationTextBox({
name: '_username',
required: true,
placeHolder: 'Username / Email',
style: 'width: 150px;',
type: 'text'
},'username');
var password = new ValidationTextBox({
name: '_password',
required: true,
placeHolder: 'Password',
style: 'width: 150px;',
type: 'password'
},'password');
var submit = new Button({
label:'ok',
type:'submit'
},'_submit');
},
getContainer:function(){
return this.loginForm;
}
});
});Carregando comentários...