feat: create default get cookie endpoint

Signed-off-by: Camila Belo <camilaibs@gmail.com>
This commit is contained in:
Camila Belo
2024-03-18 10:06:22 +01:00
committed by Patrik Oldsberg
parent a8c7b0da6a
commit 7b77befdfb
3 changed files with 10 additions and 8 deletions
@@ -84,6 +84,14 @@ export const httpRouterServiceFactory = createServiceFactory(
},
addAuthPolicy(policy: HttpRouterServiceAuthPolicy): void {
credentialsBarrier.addAuthPolicy(policy);
if (policy.allow === 'user-cookie') {
// Endpoint that sets the cookie for the user
// TODO: Extract this to a separate createCookieAuthRefreshMiddleware function
router.get('/.backstage/v1-cookie', async (_, res) => {
const { expiresAt } = await httpAuth.issueUserCookie(res);
res.json({ expiresAt: expiresAt.toISOString() });
});
}
},
};
},
@@ -31,13 +31,13 @@ import { ResponseError } from '@backstage/errors';
export function useCookieAuthRefresh(options: {
// The plugin id used for discovering the API origin
pluginId: string;
// The path used for calling the refresh cookie endpoint, default to '/cookie'
// The path used for calling the refresh cookie endpoint, default to '/.backstage/v1-cookie'
path?: string;
}):
| { status: 'loading' }
| { status: 'error'; error: Error; retry: () => void }
| { status: 'success'; data: { expiresAt: string } } {
const { pluginId, path = '/cookie' } = options ?? {};
const { pluginId, path = '/.backstage/v1-cookie' } = options ?? {};
const fetchApi = useApi(fetchApiRef);
const discoveryApi = useApi(discoveryApiRef);
@@ -322,12 +322,6 @@ export async function createRouter(
// Route middleware which serves files from the storage set in the publisher.
router.use('/static/docs', publisher.docsRouter());
// Endpoint that sets the cookie for the user
router.get('/cookie', async (_, res) => {
const { expiresAt } = await httpAuth.issueUserCookie(res);
res.json({ expiresAt: expiresAt.toISOString() });
});
return router;
}