Skip to content

Commit

Permalink
🛂(frontend) redirect to the OIDC when private doc
Browse files Browse the repository at this point in the history
We now redirect to the OIDC when a user is on
a private doc and is not authentified.
  • Loading branch information
AntoLC committed Sep 27, 2024
1 parent 413e0be commit 1e89eb1
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 2 deletions.
5 changes: 3 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@ and this project adheres to

## Fixed

- 🐛 (backend) gitlab oicd userinfo endpoint #232
- ♻️ (backend) getting list of document versions available for a user #258
- 🐛(backend) gitlab oicd userinfo endpoint #232
- 🛂(frontend) redirect to the OIDC when private doc and unauthentified #292
- ♻️(backend) getting list of document versions available for a user #258

## [1.4.0] - 2024-09-17

Expand Down
27 changes: 27 additions & 0 deletions src/frontend/apps/e2e/__tests__/app-impress/doc-visibility.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,4 +93,31 @@ test.describe('Doc Visibility: Not loggued', () => {

await expect(page.locator('h2').getByText(docTitle)).toBeVisible();
});

test('A private doc redirect to the OIDC when not authentified.', async ({
page,
browserName,
}) => {
test.slow();
await page.goto('/');
await keyCloakSignIn(page, browserName);

const [docTitle] = await createDoc(page, 'My private doc', browserName, 1);

await expect(page.locator('h2').getByText(docTitle)).toBeVisible();

const urlDoc = page.url();

await page
.getByRole('button', {
name: 'Logout',
})
.click();

await expect(page.getByRole('textbox', { name: 'password' })).toBeVisible();

await page.goto(urlDoc);

await expect(page.getByRole('textbox', { name: 'password' })).toBeVisible();
});
});
1 change: 1 addition & 0 deletions src/frontend/apps/impress/src/core/AppProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 1000 * 60 * 3,
retry: 1,
},
},
});
Expand Down
7 changes: 7 additions & 0 deletions src/frontend/apps/impress/src/pages/docs/[id]/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { useEffect, useState } from 'react';

import { Box, Text } from '@/components';
import { TextErrors } from '@/components/TextErrors';
import { useAuthStore } from '@/core/auth';
import { DocEditor } from '@/features/docs';
import { useDoc } from '@/features/docs/doc-management';
import { MainLayout } from '@/layouts';
Expand All @@ -31,6 +32,7 @@ interface DocProps {
}

const DocPage = ({ id }: DocProps) => {
const { authenticated, login } = useAuthStore();
const { data: docQuery, isError, error } = useDoc({ id });
const [doc, setDoc] = useState(docQuery);

Expand Down Expand Up @@ -58,6 +60,11 @@ const DocPage = ({ id }: DocProps) => {
return null;
}

if (error.status === 401 && !authenticated) {
login();
return null;
}

return (
<Box $margin="large">
<TextErrors
Expand Down

0 comments on commit 1e89eb1

Please sign in to comment.