diff --git a/src/actions.js b/src/actions.js index a6263cc..c6eaab0 100644 --- a/src/actions.js +++ b/src/actions.js @@ -13,6 +13,7 @@ function constructUser(cognitoUser, session) { IdToken: session.getIdToken().getJwtToken(), AccessToken: session.getAccessToken().getJwtToken(), RefreshToken: session.getRefreshToken().getToken(), + RefreshTokenObj: session.getRefreshToken() }, attributes: {}, }; @@ -199,6 +200,29 @@ export default function actionsFactory(config) { }); }, + // Only for authenticated users + refreshSession ({ commit, state }) { + const refreshToken = state.user.tokens.RefreshTokenObj + + const cognitoUser = new CognitoUser({ + Pool: cognitoUserPool, + Username: state.user.username, + }); + + // Restore session without making an additional call to API + cognitoUser.signInUserSession = cognitoUser.getCognitoUserSession(state.user.tokens); + + return new Promise((resolve, reject) => cognitoUser.refreshSession(refreshToken, + (err, session) => { + if (!err) { + commit(types.AUTHENTICATE, constructUser(cognitoUser, session)); + resolve(); + return; + } + reject(err); + })); + }, + // Only for authenticated users updateAttributes({ commit, state }, payload) { return new Promise((resolve, reject) => {