deploy code

This commit is contained in:
NishantRajputRN
2026-05-19 18:08:06 +05:30
parent e886bddfd1
commit 44d3f015fe
45 changed files with 5072 additions and 0 deletions
+93
View File
@@ -0,0 +1,93 @@
import { AuthProvider } from 'react-oidc-context';
import { useEffect, useState } from 'react';
import { oidcConfig } from './config';
import {
getDiscoveryUrl,
getOidcAuthority,
getOidcClientId,
isPlaceholderConfig,
} from './env';
type Props = { children: React.ReactNode };
export function AuthShell({ children }: Props) {
const [ready, setReady] = useState(false);
const [error, setError] = useState<string | null>(null);
const authority = getOidcAuthority();
const clientId = getOidcClientId();
const discoveryUrl = getDiscoveryUrl();
useEffect(() => {
if (isPlaceholderConfig()) {
setError(
'OIDC is still using placeholder values in frontend/.env. ' +
'Point VITE_AUTHENTIK_URL at your running Authentik instance and set VITE_OIDC_CLIENT_ID from the provider.',
);
return;
}
let cancelled = false;
(async () => {
try {
const response = await fetch(discoveryUrl);
if (!response.ok) {
throw new Error(`HTTP ${response.status} from ${discoveryUrl}`);
}
if (!cancelled) {
setError(null);
setReady(true);
}
} catch (err) {
if (!cancelled) {
const message =
err instanceof Error ? err.message : 'Could not reach Authentik';
setError(
`Cannot reach Authentik OIDC discovery (${message}). ` +
'Start Authentik (see deploy/README.md) or fix VITE_AUTHENTIK_URL / VITE_OIDC_APP_SLUG in frontend/.env.',
);
}
}
})();
return () => {
cancelled = true;
};
}, [discoveryUrl]);
if (error) {
return (
<div className="app setup-error">
<h1>OIDC configuration</h1>
<p className="error">{error}</p>
<section className="card">
<h2>Current settings</h2>
<dl>
<dt>Issuer</dt>
<dd>{authority}</dd>
<dt>Client ID</dt>
<dd>{clientId}</dd>
<dt>Discovery</dt>
<dd>
<a href={discoveryUrl} target="_blank" rel="noreferrer">
{discoveryUrl}
</a>
</dd>
</dl>
</section>
<p className="hint">
After Authentik is running, create an OAuth2/OpenID provider (public,
redirect URI <code>http://localhost:5173</code>) and copy its slug and
client ID into <code>frontend/.env</code> and <code>backend/.env</code>.
</p>
</div>
);
}
if (!ready) {
return <div className="app">Connecting to Authentik</div>;
}
return <AuthProvider {...oidcConfig}>{children}</AuthProvider>;
}