diff --git a/back/methods/vn-user/renew-token.js b/back/methods/vn-user/renew-token.js index ae5fa704e..6275214f1 100644 --- a/back/methods/vn-user/renew-token.js +++ b/back/methods/vn-user/renew-token.js @@ -2,6 +2,10 @@ module.exports = Self => { Self.remoteMethodCtx('renewToken', { description: 'Send email to the user', accepts: [], + returns: { + type: 'Object', + root: true + }, http: { path: `/renewToken`, verb: 'POST' @@ -12,7 +16,7 @@ module.exports = Self => { const models = Self.app.models; const userId = ctx.req.accessToken.userId; const created = ctx.req.accessToken.created; - // const tokenId = ctx.req.accessToken.id; + const tokenId = ctx.req.accessToken.id; const now = new Date(); const differenceMilliseconds = now - created; @@ -29,10 +33,8 @@ module.exports = Self => { return response; } - await models.AccessToken.destroyAll({userId: userId}); - // await models.AccessToken.destroyById(tokenId); - const accessToken = await models.AccessToken.create({userId: userId}); + await models.AccessToken.destroyById(tokenId); return {token: accessToken.id, created: accessToken.created}; }; diff --git a/front/core/services/auth.js b/front/core/services/auth.js index 17323fadf..6d3d7f062 100644 --- a/front/core/services/auth.js +++ b/front/core/services/auth.js @@ -30,11 +30,8 @@ export default class Auth { } }; this.$transitions.onStart(criteria, transition => { - this.getAccessTokenConfig(); - if (this.loggedIn) { - console.log('firstIf'); + if (this.loggedIn) return true; - } let redirectToLogin = () => { return transition.router.stateService.target('login', { @@ -43,43 +40,14 @@ export default class Auth { }; if (this.vnToken.token) { - console.log('secondIf'); - return this.loadAcls() .then(() => true) .catch(redirectToLogin); - } else { - console.log('else'); - + } else return redirectToLogin(); - } }); } - getAccessTokenConfig() { - this.$http.get('AccessTokenConfigs/findOne').then(json => { - window.localStorage.renewPeriod = json.data.renewPeriod; - window.localStorage.renewInterval = json.data.renewInterval; - - const intervalMilliseconds = json.data.renewInterval * 1000; - setInterval(this.checkTokenValidity.bind(this), intervalMilliseconds); - }); - } - - checkTokenValidity() { - const now = new Date(); - const differenceMilliseconds = now - new Date(this.vnTokenCreated.created); - const differenceSeconds = Math.floor(differenceMilliseconds / 1000); - - console.log(differenceSeconds, window.localStorage.renewPeriod); - if (differenceSeconds > window.localStorage.renewPeriod) { - this.$http.post('VnUsers/renewToken') - .then(() => { - console.log('fin'); - }); - } - } - login(user, password, remember) { if (!user) { let err = new UserError('Please enter your username'); diff --git a/front/salix/components/layout/index.js b/front/salix/components/layout/index.js index 48f50f404..315632201 100644 --- a/front/salix/components/layout/index.js +++ b/front/salix/components/layout/index.js @@ -3,13 +3,48 @@ import Component from 'core/lib/component'; import './style.scss'; export class Layout extends Component { - constructor($element, $, vnModules) { + constructor($element, $, vnModules, vnToken, vnTokenCreated) { super($element, $); this.modules = vnModules.get(); + Object.assign(this, { + vnToken, + vnTokenCreated + }); } $onInit() { this.getUserData(); + this.getAccessTokenConfig(); + } + + getAccessTokenConfig() { + this.$http.get('AccessTokenConfigs/findOne').then(json => { + window.localStorage.renewPeriod = json.data.renewPeriod; + window.localStorage.renewInterval = json.data.renewInterval; + + const intervalMilliseconds = json.data.renewInterval * 1000; + this.inservalId = setInterval(this.checkTokenValidity.bind(this), intervalMilliseconds); + }); + } + + checkTokenValidity() { + const now = new Date(); + const differenceMilliseconds = now - new Date(this.vnTokenCreated.created); + const differenceSeconds = Math.floor(differenceMilliseconds / 1000); + + if (differenceSeconds > window.localStorage.renewPeriod) { + this.$http.post('VnUsers/renewToken') + .then(json => { + console.log('fin renewToken'); + if (json.data.token) { + let remember = true; + if (window.sessionStorage.vnToken) remember = false; + + this.vnToken.set(json.data.token, remember); + this.vnTokenCreated.set(json.data.created, remember); + } + }); + } } getUserData() { @@ -30,8 +65,12 @@ export class Layout extends Component { refresh() { window.location.reload(); } + + $onDestroy() { + clearInterval(this.inservalId); + } } -Layout.$inject = ['$element', '$scope', 'vnModules']; +Layout.$inject = ['$element', '$scope', 'vnModules', 'vnToken', 'vnTokenCreated']; ngModule.vnComponent('vnLayout', { template: require('./index.html'),