improve: add production stage

This commit is contained in:
h z
2024-12-09 07:01:22 +00:00
parent 0e6fd8409a
commit ba69541a7b
29 changed files with 616 additions and 92 deletions

View File

@@ -1,6 +1,7 @@
import React, { createContext, useEffect, useMemo, useState } from "react";
// src/AuthProvider.js
import React, { createContext, useContext, useEffect, useMemo, useState } from "react";
import { UserManager } from "oidc-client-ts";
import config from "./config";
import { ConfigContext } from "./ConfigProvider";
export const AuthContext = createContext({
user: null,
@@ -10,11 +11,20 @@ export const AuthContext = createContext({
});
const AuthProvider = ({ children }) => {
const { config, isLoading, error } = useContext(ConfigContext);
const [user, setUser] = useState(null);
const [roles, setRoles] = useState([]);
const userManager = useMemo(() => new UserManager(config.OIDC_CONFIG), []);
const userManager = useMemo(() => {
if (config && config.OIDC_CONFIG) {
return new UserManager(config.OIDC_CONFIG);
}
return null;
}, [config]);
useEffect(() => {
if (isLoading || error || !userManager) return;
userManager.getUser()
.then((user) => {
if (user && !user.expired) {
@@ -62,19 +72,23 @@ const AuthProvider = ({ children }) => {
userManager.events.removeUserLoaded(onUserLoaded);
userManager.events.removeUserUnloaded(onUserUnloaded);
};
}, [userManager]);
}, [userManager, isLoading, error, config]);
const login = () => {
userManager
.signinRedirect()
.catch((err) => {
console.log(config);
console.log(err);
});
if (userManager) {
userManager
.signinRedirect()
.catch((err) => {
console.log(config);
console.log(err);
});
}
};
const logout = () => {
userManager.signoutRedirect();
if (userManager) {
userManager.signoutRedirect();
}
};
return (
@@ -84,4 +98,4 @@ const AuthProvider = ({ children }) => {
);
};
export default AuthProvider;
export default AuthProvider;