You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcp-csc/app.js

75 lines
2.1 KiB

// Attach JWT token to every request, and cleanup framework default params
Ext.Ajax.on("beforerequest", function(con, options) {
con.setUseDefaultXhrHeader(false);
con.setWithCredentials(true);
if (options.params && localStorage.getItem('jwt')) {
delete options.params.page;
delete options.params.start;
delete options.params.limit;
this.setDefaultHeaders({
'Authorization': 'Bearer ' + localStorage.getItem('jwt')
});
}
});
// in case of 401 or 403, user is redirected to login screen
Ext.Ajax.on("requestexception", function(con, response) {
var httpStatus = response.status;
switch (httpStatus) {
case 401:
case 403:
if (response.request.url !== '/login_jwt/') {
NgcpCsc.getApplication().showLogin();
}
break;
}
});
Ext.application({
name: 'NgcpCsc',
extend: 'NgcpCsc.Application',
// Simply require all classes in the application. This is sufficient to ensure
// that all NgcpCsc classes will be included in the application build. If classes
// have specific requirements on each other, you may need to still require them
// explicitly.
//
requires: [
'NgcpCsc.*',
'Ext.window.Toast'
],
showLogin: function() {
var mainCmp = Ext.ComponentQuery.query('ngcp-main')[0];
if (mainCmp) {
mainCmp.destroy();
}
window.location.hash = '';
Ext.create({
xtype: 'ngcp-login'
});
localStorage.removeItem('jwt');
},
showMain: function() {
var me = this;
var winLogin = Ext.ComponentQuery.query('[name=loginWin]')[0];
var loginCont = Ext.ComponentQuery.query('[id=loginCont]')[0];
if (winLogin) {
winLogin.destroy();
}
if (loginCont) {
loginCont.destroy();
}
window.location.hash = '';
Ext.create({
xtype: 'ngcp-main'
});
Ext.Function.defer(function() {
me.redirectTo('inbox');
}, 100)
}
});