Skip to content

Commit

Permalink
Merge pull request #1003 from parlemonde/feat/VIL-622
Browse files Browse the repository at this point in the history
feat(VIL-622): adding access rights to archives to admin, s-admin and…
  • Loading branch information
Allanrdeau authored Nov 19, 2024
2 parents 2f592ac + 26c1bc2 commit 95316ab
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 20 deletions.
21 changes: 12 additions & 9 deletions server/controllers/archive.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,18 @@ import { Controller } from './controller';
const archiveController = new Controller('/archives');

// get file
archiveController.get({ path: '/*', userType: UserType.ADMIN }, async (req: Request, res: Response, next: NextFunction) => {
const url = decodeURI(req.url);
const key = `archives${url}${url.split('/').length === 2 ? '/index.html' : url.indexOf('.') === -1 ? '.html' : ''}`;
try {
streamFile(key, req, res, next);
} catch {
next();
}
});
archiveController.get(
{ path: '/*', userType: [UserType.SUPER_ADMIN, UserType.ADMIN, UserType.MEDIATOR] },
async (req: Request, res: Response, next: NextFunction) => {
const url = decodeURI(req.url);
const key = `archives${url}${url.split('/').length === 2 ? '/index.html' : url.indexOf('.') === -1 ? '.html' : ''}`;
try {
streamFile(key, req, res, next);
} catch {
next();
}
},
);

/**
* Liste les dossiers dans un préfixe S3 spécifié.
Expand Down
2 changes: 1 addition & 1 deletion server/controllers/controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { diskStorage } from '../middlewares/multer';

type RouteOptions = {
path: string;
userType?: UserType;
userType?: UserType | UserType[];
};

fs.ensureDir(path.join(__dirname, '../fileUpload/videos')).catch();
Expand Down
22 changes: 18 additions & 4 deletions src/api/archive/archive.get.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,26 @@
import axios from 'axios';
import React from 'react';
import { useQuery } from 'react-query';

import { UserType } from '../../../types/user.type';
import { UserContext } from '../../contexts/userContext';

const BASE_URL = '/api/archives';

// Récupérer la liste des années déjà archivées
export const useListArchives = () => {
return useQuery(['archives'], async () => {
const { data } = await axios.get(`${BASE_URL}`);
return data;
});
const { user } = React.useContext(UserContext);

const hasAccess = user !== null && user.type in [UserType.ADMIN, UserType.SUPER_ADMIN, UserType.MEDIATOR];

return useQuery(
['archives'],
async () => {
const { data } = await axios.get(`${BASE_URL}`);
return data;
},
{
enabled: hasAccess,
},
);
};
2 changes: 1 addition & 1 deletion src/components/admin/NewAdminNavigation.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ export const NewAdminNavigation = () => {
const tabs: Tab[] = [
{ path: '/admin/newportal/create', label: 'Créer', Icon: CreerIcon, rights: [UserType.ADMIN, UserType.SUPER_ADMIN, UserType.MEDIATOR] },
{ path: '/admin/newportal/publier', label: 'Publier', Icon: PublierIcon, rights: [UserType.ADMIN, UserType.SUPER_ADMIN] },
{ path: '/admin/newportal/manage', label: 'Gérer', Icon: GererIcon, rights: [UserType.ADMIN, UserType.SUPER_ADMIN] },
{ path: '/admin/newportal/manage', label: 'Gérer', Icon: GererIcon, rights: [UserType.ADMIN, UserType.SUPER_ADMIN, UserType.MEDIATOR] },
{
path: '/admin/newportal/analyze',
label: 'Analyser',
Expand Down
4 changes: 2 additions & 2 deletions src/pages/admin/newportal/manage/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ type Link = {

const Gerer = () => {
const { user } = React.useContext(UserContext);
const hasAccess = user !== null && user.type in [UserType.ADMIN, UserType.SUPER_ADMIN];
const hasAccess = user !== null && user.type in [UserType.ADMIN, UserType.SUPER_ADMIN, UserType.MEDIATOR];

if (!hasAccess) {
return <h1>Vous n&apos;avez pas accès à cette page, vous devez être super admin.</h1>;
Expand All @@ -28,7 +28,7 @@ const Gerer = () => {
link: '/admin/newportal/manage/activities',
rights: [UserType.SUPER_ADMIN],
},
{ name: 'Paramétrer 1Village', link: '/admin/newportal/manage/settings', rights: [UserType.ADMIN, UserType.SUPER_ADMIN] },
{ name: 'Paramétrer 1Village', link: '/admin/newportal/manage/settings', rights: [UserType.ADMIN, UserType.SUPER_ADMIN, UserType.MEDIATOR] },
{ name: "Les droits d'accès", link: '/admin/newportal/manage/access', rights: [UserType.SUPER_ADMIN] },
];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { UserType } from 'types/user.type';

const Archive = () => {
const { user } = React.useContext(UserContext);
const hasAccess = user?.type === UserType.SUPER_ADMIN;
const hasAccess = user !== null && user.type in [UserType.ADMIN, UserType.SUPER_ADMIN, UserType.MEDIATOR];
const [archives, setArchives] = useState<string[]>([]);
const { enqueueSnackbar } = useSnackbar();

Expand Down
4 changes: 2 additions & 2 deletions src/pages/admin/newportal/manage/settings/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ type Link = {

const Gerer = () => {
const { user } = React.useContext(UserContext);
const hasAccess = user !== null && user.type in [UserType.ADMIN, UserType.SUPER_ADMIN];
const hasAccess = user !== null && user.type in [UserType.ADMIN, UserType.SUPER_ADMIN, UserType.MEDIATOR];

if (!hasAccess) {
return <h1>Vous n&apos;avez pas accès à cette page, vous devez être modérateur ou super admin.</h1>;
}

const links: Link[] = [
{ name: 'Archiver', link: '/admin/newportal/manage/settings/archive', rights: [UserType.SUPER_ADMIN] },
{ name: 'Archiver', link: '/admin/newportal/manage/settings/archive', rights: [UserType.SUPER_ADMIN, UserType.ADMIN, UserType.MEDIATOR] },
{ name: 'Présentation de Pélico', link: '/admin/newportal/manage/settings/pelico', rights: [UserType.ADMIN, UserType.SUPER_ADMIN] },
{ name: 'Paramétrer la home', link: '/admin/newportal/manage/settings/home', rights: [UserType.ADMIN, UserType.SUPER_ADMIN] },
{ name: 'Paramétrer les phases', link: '/admin/newportal/manage/settings/phases', rights: [UserType.ADMIN, UserType.SUPER_ADMIN] },
Expand Down

0 comments on commit 95316ab

Please sign in to comment.