Implement multi tenancy

This commit is contained in:
Sara
2023-10-27 11:26:00 +02:00
committed by Mathieu Virbel
parent 6bd5247bab
commit 4a69bffc9c
37 changed files with 409 additions and 236 deletions

View File

@@ -0,0 +1,49 @@
"use client";
import { createContext, useContext, useEffect, useState } from "react";
type DomainContextType = {
features: {
requireLogin: boolean;
privacy: boolean;
browse: boolean;
};
apiUrl: string | null;
};
export const DomainContext = createContext<DomainContextType>({
features: {
requireLogin: false,
privacy: true,
browse: false,
},
apiUrl: null,
});
export const DomainContextProvider = ({ config, children }) => {
const [context, setContext] = useState<DomainContextType>();
useEffect(() => {
if (!config) return;
setContext({
features: {
requireLogin: !!config["features"]["requireLogin"],
privacy: !!config["features"]["privacy"],
browse: !!config["features"]["browse"],
},
apiUrl: config["api_url"],
});
}, [config]);
if (!context) return;
return (
<DomainContext.Provider value={context}>{children}</DomainContext.Provider>
);
};
export const featureEnabled = (
featureName: "requireLogin" | "privacy" | "browse",
) => {
const context = useContext(DomainContext);
return context.features[featureName] as boolean | undefined;
};