use the cookie from the frontend w/ burnettk
This commit is contained in:
parent
e4f354e375
commit
a552ca6e7a
|
@ -39,6 +39,7 @@
|
|||
"bpmn-js": "^9.3.2",
|
||||
"bpmn-js-properties-panel": "^1.10.0",
|
||||
"bpmn-js-spiffworkflow": "sartography/bpmn-js-spiffworkflow#main",
|
||||
"cookie": "^0.5.0",
|
||||
"craco": "^0.0.3",
|
||||
"date-fns": "^2.28.0",
|
||||
"diagram-js": "^8.5.0",
|
||||
|
@ -66,6 +67,7 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@cypress/grep": "^3.1.0",
|
||||
"@types/cookie": "^0.5.1",
|
||||
"@typescript-eslint/eslint-plugin": "^5.30.5",
|
||||
"@typescript-eslint/parser": "^5.30.6",
|
||||
"cypress": "^12",
|
||||
|
@ -5654,6 +5656,12 @@
|
|||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/cookie": {
|
||||
"version": "0.5.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz",
|
||||
"integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/debug": {
|
||||
"version": "4.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz",
|
||||
|
@ -35330,6 +35338,12 @@
|
|||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/cookie": {
|
||||
"version": "0.5.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz",
|
||||
"integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/debug": {
|
||||
"version": "4.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz",
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
"bpmn-js": "^9.3.2",
|
||||
"bpmn-js-properties-panel": "^1.10.0",
|
||||
"bpmn-js-spiffworkflow": "sartography/bpmn-js-spiffworkflow#main",
|
||||
"cookie": "^0.5.0",
|
||||
"craco": "^0.0.3",
|
||||
"date-fns": "^2.28.0",
|
||||
"diagram-js": "^8.5.0",
|
||||
|
@ -102,6 +103,7 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@cypress/grep": "^3.1.0",
|
||||
"@types/cookie": "^0.5.1",
|
||||
"@typescript-eslint/eslint-plugin": "^5.30.5",
|
||||
"@typescript-eslint/parser": "^5.30.6",
|
||||
"cypress": "^12",
|
||||
|
|
|
@ -20,7 +20,7 @@ const doRender = () => {
|
|||
);
|
||||
};
|
||||
|
||||
UserService.getAuthTokenFromParams();
|
||||
UserService.loginIfNeeded();
|
||||
doRender();
|
||||
|
||||
// If you want to start measuring performance in your app, pass a function
|
||||
|
|
|
@ -42,7 +42,7 @@ export default function AuthenticationList() {
|
|||
row.id
|
||||
}?redirect_url=${redirectUrl}/${
|
||||
row.id
|
||||
}?token=${UserService.getAuthToken()}`}
|
||||
}?token=${UserService.getAccessToken()}`}
|
||||
>
|
||||
{row.id}
|
||||
</a>
|
||||
|
|
|
@ -72,7 +72,6 @@ export default function ProcessGroupList() {
|
|||
console.log('document.cookie', document.cookie);
|
||||
return (
|
||||
<>
|
||||
{document.cookie}
|
||||
<ProcessBreadcrumb hotCrumbs={[['Process Groups']]} />
|
||||
<Can I="POST" a={targetUris.processGroupListPath} ability={ability}>
|
||||
<Button kind="secondary" href="/admin/process-groups/new">
|
||||
|
|
|
@ -11,7 +11,7 @@ const HttpMethods = {
|
|||
const getBasicHeaders = (): object => {
|
||||
if (UserService.isLoggedIn()) {
|
||||
return {
|
||||
Authorization: `Bearer ${UserService.getAuthToken()}`,
|
||||
Authorization: `Bearer ${UserService.getAccessToken()}`,
|
||||
};
|
||||
}
|
||||
return {};
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import jwt from 'jwt-decode';
|
||||
import cookie from 'cookie';
|
||||
import { BACKEND_BASE_URL } from '../config';
|
||||
|
||||
// NOTE: this currently stores the jwt token in local storage
|
||||
|
@ -10,6 +11,14 @@ import { BACKEND_BASE_URL } from '../config';
|
|||
// Some explanation:
|
||||
// https://dev.to/nilanth/how-to-secure-jwt-in-a-single-page-application-cko
|
||||
|
||||
const getCookie = (key: string) => {
|
||||
const parsedCookies = cookie.parse(document.cookie);
|
||||
if (key in parsedCookies) {
|
||||
return parsedCookies[key];
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
// const getCurrentLocation = (queryParams: string = window.location.search) => {
|
||||
const getCurrentLocation = () => {
|
||||
const queryParamString = '';
|
||||
|
@ -24,24 +33,25 @@ const doLogin = () => {
|
|||
console.log('URL', url);
|
||||
window.location.href = url;
|
||||
};
|
||||
|
||||
// Use access_token for now since it seems to work but if we need the
|
||||
// id token then set that in a cookie in backend as well
|
||||
const getIdToken = () => {
|
||||
return localStorage.getItem('jwtIdToken');
|
||||
return getCookie('access_token');
|
||||
};
|
||||
|
||||
const doLogout = () => {
|
||||
const idToken = getIdToken();
|
||||
localStorage.removeItem('jwtAccessToken');
|
||||
localStorage.removeItem('jwtIdToken');
|
||||
const redirectUrl = `${window.location.origin}`;
|
||||
const url = `${BACKEND_BASE_URL}/logout?redirect_url=${redirectUrl}&id_token=${idToken}`;
|
||||
window.location.href = url;
|
||||
};
|
||||
|
||||
const getAuthToken = () => {
|
||||
return localStorage.getItem('jwtAccessToken');
|
||||
const getAccessToken = () => {
|
||||
return getCookie('access_token');
|
||||
};
|
||||
const isLoggedIn = () => {
|
||||
return !!getAuthToken();
|
||||
return !!getAccessToken();
|
||||
};
|
||||
|
||||
const getUserEmail = () => {
|
||||
|
@ -62,25 +72,8 @@ const getPreferredUsername = () => {
|
|||
return null;
|
||||
};
|
||||
|
||||
// FIXME: we could probably change this search to a hook
|
||||
// and then could use useSearchParams here instead
|
||||
const getAuthTokenFromParams = () => {
|
||||
const queryParams = new URLSearchParams(window.location.search);
|
||||
const accessToken = queryParams.get('access_token');
|
||||
const idToken = queryParams.get('id_token');
|
||||
|
||||
queryParams.delete('access_token');
|
||||
queryParams.delete('id_token');
|
||||
|
||||
if (accessToken) {
|
||||
localStorage.setItem('jwtAccessToken', accessToken);
|
||||
if (idToken) {
|
||||
localStorage.setItem('jwtIdToken', idToken);
|
||||
}
|
||||
// window.location.href = `${getCurrentLocation(queryParams.toString())}`;
|
||||
console.log('THE PALCE: ', `${getCurrentLocation()}`);
|
||||
window.location.href = `${getCurrentLocation()}`;
|
||||
} else if (!isLoggedIn()) {
|
||||
const loginIfNeeded = () => {
|
||||
if (!isLoggedIn()) {
|
||||
doLogin();
|
||||
}
|
||||
};
|
||||
|
@ -93,8 +86,8 @@ const UserService = {
|
|||
doLogin,
|
||||
doLogout,
|
||||
isLoggedIn,
|
||||
getAuthToken,
|
||||
getAuthTokenFromParams,
|
||||
getAccessToken,
|
||||
loginIfNeeded,
|
||||
getPreferredUsername,
|
||||
getUserEmail,
|
||||
hasRole,
|
||||
|
|
Loading…
Reference in New Issue