diff --git a/NodeApp/src/managers/SessionManager.ts b/NodeApp/src/managers/SessionManager.ts new file mode 100644 index 0000000000000000000000000000000000000000..573ba55d71285b27c1c5de2bd39d05712a6a9d9f --- /dev/null +++ b/NodeApp/src/managers/SessionManager.ts @@ -0,0 +1,47 @@ +import * as jwt from 'jsonwebtoken'; +import User from '../models/User'; +import LocalConfig from '../Config/LocalConfig/LocalConfig'; +import LocalConfigKeys from '../Config/LocalConfig/LocalConfigKeys'; + + +class SessionManager { + private _token: string | null = null; + + public profile: User = new User(); + + constructor() { } + + private static _instance: SessionManager; + + public static get instance(): SessionManager { + if ( !SessionManager._instance ) { + SessionManager._instance = new SessionManager(); + } + + return SessionManager._instance; + } + + get isLogged(): boolean { + return this._token !== null; + } + + get token(): string { + return this._token || ''; + } + + set token(token: string) { + this._token = token; + + const payload = jwt.decode(token); + + if ( payload && typeof payload === 'object' && payload.profile ) { + this.profile = User.createFromJson(payload.profile); + } + + LocalConfig.updateConfig(LocalConfigKeys.API_TOKEN, token); + } + +} + + +export default SessionManager.instance;