enable guest auth for local environment
This commit is contained in:
parent
88584afd31
commit
dbcc20911e
2 changed files with 58 additions and 36 deletions
|
@ -43,24 +43,34 @@ import { KubernetesClusterPickerExtension } from '@cnoe-io/plugin-scaffolder-act
|
|||
import { ThemeProvider } from '@material-ui/core/styles';
|
||||
import CssBaseline from '@material-ui/core/CssBaseline';
|
||||
import LightIcon from '@material-ui/icons/WbSunny';
|
||||
import {CNOEHomepage, cnoeLightTheme, cnoeDarkTheme} from '@internal/cnoe-ui-plugin'
|
||||
import {
|
||||
CNOEHomepage,
|
||||
cnoeLightTheme,
|
||||
cnoeDarkTheme,
|
||||
} from '@internal/cnoe-ui-plugin';
|
||||
import { configApiRef, useApi } from '@backstage/core-plugin-api';
|
||||
|
||||
const app = createApp({
|
||||
apis,
|
||||
components: {
|
||||
// SignInPage: (props) => <ProxiedSignInPage {...props} provider="oauth2Proxy" />,
|
||||
SignInPage: props => (
|
||||
<SignInPage
|
||||
{...props}
|
||||
auto
|
||||
provider={{
|
||||
id: 'keycloak-oidc',
|
||||
title: 'Keycloak',
|
||||
message: 'Sign in using Keycloak',
|
||||
apiRef: keycloakOIDCAuthApiRef,
|
||||
}}
|
||||
/>
|
||||
),
|
||||
SignInPage: props => {
|
||||
const configApi = useApi(configApiRef);
|
||||
if (configApi.getString('auth.environment') === 'local') {
|
||||
return <SignInPage {...props} auto providers={['guest']} />;
|
||||
}
|
||||
return (
|
||||
<SignInPage
|
||||
{...props}
|
||||
auto
|
||||
provider={{
|
||||
id: 'keycloak-oidc',
|
||||
title: 'Keycloak',
|
||||
message: 'Sign in using Keycloak',
|
||||
apiRef: keycloakOIDCAuthApiRef,
|
||||
}}
|
||||
/>
|
||||
);
|
||||
},
|
||||
},
|
||||
bindRoutes({ bind }) {
|
||||
bind(catalogPlugin.externalRoutes, {
|
||||
|
@ -100,13 +110,13 @@ const app = createApp({
|
|||
</ThemeProvider>
|
||||
),
|
||||
},
|
||||
]
|
||||
],
|
||||
});
|
||||
|
||||
const routes = (
|
||||
<FlatRoutes>
|
||||
<Route path="/" element={<Navigate to="home" />} />
|
||||
<Route path="/home" element={<CNOEHomepage/>} />
|
||||
<Route path="/home" element={<CNOEHomepage />} />
|
||||
<Route path="/catalog" element={<CatalogIndexPage />} />
|
||||
<Route
|
||||
path="/catalog/:namespace/:kind/:name"
|
||||
|
|
|
@ -14,7 +14,7 @@ import { JsonArray } from '@backstage/types';
|
|||
export default async function createPlugin(
|
||||
env: PluginEnvironment,
|
||||
): Promise<Router> {
|
||||
return await createRouter({
|
||||
const opts = {
|
||||
logger: env.logger,
|
||||
config: env.config,
|
||||
database: env.database,
|
||||
|
@ -22,24 +22,36 @@ export default async function createPlugin(
|
|||
tokenManager: env.tokenManager,
|
||||
providerFactories: {
|
||||
...defaultAuthProviderFactories,
|
||||
'keycloak-oidc': providers.oidc.create({
|
||||
signIn: {
|
||||
resolver(info, ctx) {
|
||||
const userRef = stringifyEntityRef({
|
||||
kind: 'User',
|
||||
name: info.result.userinfo.sub,
|
||||
namespace: DEFAULT_NAMESPACE,
|
||||
});
|
||||
return ctx.issueToken({
|
||||
claims: {
|
||||
sub: userRef,
|
||||
ent: [userRef],
|
||||
groups: (info.result.userinfo.groups as JsonArray) || [],
|
||||
},
|
||||
});
|
||||
},
|
||||
},
|
||||
}),
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const envName = env.config
|
||||
.getOptionalConfig('auth')
|
||||
?.getOptionalString('auth');
|
||||
if (envName === 'local') {
|
||||
return await createRouter(opts);
|
||||
}
|
||||
|
||||
const keycloakAuth = (opts.providerFactories['keycloak-oidc'] =
|
||||
providers.oidc.create({
|
||||
signIn: {
|
||||
resolver(info, ctx) {
|
||||
const userRef = stringifyEntityRef({
|
||||
kind: 'User',
|
||||
name: info.result.userinfo.sub,
|
||||
namespace: DEFAULT_NAMESPACE,
|
||||
});
|
||||
return ctx.issueToken({
|
||||
claims: {
|
||||
sub: userRef,
|
||||
ent: [userRef],
|
||||
groups: (info.result.userinfo.groups as JsonArray) || [],
|
||||
},
|
||||
});
|
||||
},
|
||||
},
|
||||
}));
|
||||
opts.providerFactories['keycloak-oidc'] = keycloakAuth;
|
||||
|
||||
return await createRouter(opts);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue