diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e144f8d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+summerizer.py
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..684b75e
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:latest
+LABEL authors="hzhang"
+
+ENTRYPOINT ["top", "-b"]
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 0964988..e8afce5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,6 +9,7 @@
"version": "1.0.0",
"license": "ISC",
"dependencies": {
+ "oidc-client-ts": "^3.1.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-router-dom": "^7.0.1"
@@ -4521,6 +4522,14 @@
"node": ">=6"
}
},
+ "node_modules/jwt-decode": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz",
+ "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -4829,6 +4838,17 @@
"integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
"dev": true
},
+ "node_modules/oidc-client-ts": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/oidc-client-ts/-/oidc-client-ts-3.1.0.tgz",
+ "integrity": "sha512-IDopEXjiwjkmJLYZo6BTlvwOtnlSniWZkKZoXforC/oLZHC9wkIxd25Kwtmo5yKFMMVcsp3JY6bhcNJqdYk8+g==",
+ "dependencies": {
+ "jwt-decode": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/on-finished": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
diff --git a/package.json b/package.json
index db92e28..d26a0b7 100644
--- a/package.json
+++ b/package.json
@@ -12,6 +12,7 @@
"author": "",
"license": "ISC",
"dependencies": {
+ "oidc-client-ts": "^3.1.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-router-dom": "^7.0.1"
diff --git a/src/AuthProvider.js b/src/AuthProvider.js
new file mode 100644
index 0000000..668d852
--- /dev/null
+++ b/src/AuthProvider.js
@@ -0,0 +1,30 @@
+import React, { createContext, useEffect, useState } from "react";
+import { UserManager } from "oidc-client-ts";
+import {oidcConfig} from "./oicdConfig";
+
+
+export const AuthContext = createContext();
+
+const AuthProvider = ({ children }) => {
+ const [user, setUser] = useState(null);
+ const userManager = new UserManager(oidcConfig);
+
+ useEffect(() => {
+ userManager.getUser().then((user) => {
+ if (user && !user.expired) {
+ setUser(user);
+ }
+ });
+ }, [userManager]);
+
+ const login = () => userManager.signinRedirect();
+ const logout = () => userManager.signoutRedirect();
+
+ return (
+