@muze-nl/metro-oidc 0.4.1 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/browser.js CHANGED
@@ -877,19 +877,22 @@
877
877
  localState = {
878
878
  get: () => localStorage.getItem("metro/state:" + site),
879
879
  set: (value) => localStorage.setItem("metro/state:" + site, value),
880
- has: () => localStorage.getItem("metro/state:" + site) !== null
880
+ has: () => localStorage.getItem("metro/state:" + site) !== null,
881
+ delete: () => localStorage.remoteItem("metro/state:" + site)
881
882
  };
882
883
  localTokens = {
883
884
  get: (name) => JSON.parse(localStorage.getItem(site + ":" + name)),
884
885
  set: (name, value) => localStorage.setItem(site + ":" + name, JSON.stringify(value)),
885
- has: (name) => localStorage.getItem(site + ":" + name) !== null
886
+ has: (name) => localStorage.getItem(site + ":" + name) !== null,
887
+ delete: (name) => localStorage.removeItem(site + ":" + name)
886
888
  };
887
889
  } else {
888
890
  let stateMap = /* @__PURE__ */ new Map();
889
891
  localState = {
890
892
  get: () => stateMap.get("metro/state:" + site),
891
893
  set: (value) => stateMap.set("metro/state:" + site, value),
892
- has: () => stateMap.has("metro/state:" + site)
894
+ has: () => stateMap.has("metro/state:" + site),
895
+ delete: () => stateMap.delete("metro/state:" + site)
893
896
  };
894
897
  localTokens = /* @__PURE__ */ new Map();
895
898
  }
@@ -981,8 +984,10 @@
981
984
  };
982
985
  async function oauth2authorized(req, next) {
983
986
  getTokensFromLocation();
984
- let accessToken = options.tokens.get("access_token");
985
- if (!accessToken) {
987
+ const accessToken = options.tokens.get("access_token");
988
+ const refreshToken = options.tokens.get("refresh_token");
989
+ const tokenIsExpired = isExpired(accessToken);
990
+ if (!accessToken || tokenIsExpired && !refreshToken) {
986
991
  try {
987
992
  let token = await fetchAccessToken();
988
993
  if (!token) {
@@ -992,9 +997,9 @@
992
997
  throw e;
993
998
  }
994
999
  return oauth2authorized(req, next);
995
- } else if (isExpired(accessToken)) {
1000
+ } else if (tokenIsExpired && refreshToken) {
996
1001
  try {
997
- let token = await fetchRefreshToken();
1002
+ let token = await refreshAccessToken();
998
1003
  if (!token) {
999
1004
  return response("false");
1000
1005
  }
@@ -1070,9 +1075,10 @@
1070
1075
  };
1071
1076
  options.tokens.set("refresh_token", token);
1072
1077
  }
1078
+ options.tokens.delete("authorization_code");
1073
1079
  return data;
1074
1080
  }
1075
- async function fetchRefreshToken() {
1081
+ async function refreshAccessToken() {
1076
1082
  let refreshTokenReq = getAccessTokenRequest("refresh_token");
1077
1083
  let response2 = await options.client.post(refreshTokenReq);
1078
1084
  if (!response2.ok) {
@@ -1124,6 +1130,7 @@
1124
1130
  search.client_secret = oauth2.client_secret;
1125
1131
  }
1126
1132
  if (oauth2.code_verifier) {
1133
+ options.tokens.set("code_verifier", oauth2.code_verifier);
1127
1134
  search.code_challenge = await generateCodeChallenge(oauth2.code_verifier);
1128
1135
  search.code_challenge_method = "S256";
1129
1136
  }
@@ -1148,19 +1155,20 @@
1148
1155
  grant_type: grant_type || oauth2.grant_type,
1149
1156
  client_id: oauth2.client_id
1150
1157
  };
1151
- if (oauth2.code_verifier) {
1152
- params2.code_verifier = oauth2.code_verifier;
1153
- }
1154
1158
  if (oauth2.client_secret) {
1155
1159
  params2.client_secret = oauth2.client_secret;
1156
1160
  }
1157
1161
  if (oauth2.scope) {
1158
1162
  params2.scope = oauth2.scope;
1159
1163
  }
1160
- switch (oauth2.grant_type) {
1164
+ switch (params2.grant_type) {
1161
1165
  case "authorization_code":
1162
1166
  params2.redirect_uri = oauth2.redirect_uri;
1163
1167
  params2.code = options.tokens.get("authorization_code");
1168
+ const code_verifier = options.tokens.get("code_verifier");
1169
+ if (code_verifier) {
1170
+ params2.code_verifier = code_verifier;
1171
+ }
1164
1172
  break;
1165
1173
  case "client_credentials":
1166
1174
  break;