Skip to content

Commit

Permalink
front: permission check depend on ressource
Browse files Browse the repository at this point in the history
  • Loading branch information
kmer2016 committed Jul 8, 2024
1 parent 34764ed commit 97322f8
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 15 deletions.
Original file line number Diff line number Diff line change
@@ -1,14 +1,24 @@
import useUserPermissionsCheck from '../hooks/useUserPermissionsCheck';

export type PermissionBasedContentProps = {
requiredPermissions: string[];
minimalPermission: string;
ressourceId: string;
ressourceType: string;
children: React.ReactNode;
};

const PermissionBasedContent = ({ requiredPermissions, children }: PermissionBasedContentProps) => {
const hasRequiredPermissions = useUserPermissionsCheck(requiredPermissions);
const PermissionBasedContent = ({
minimalPermission,
ressourceId,
ressourceType,
children,
}: PermissionBasedContentProps) => {
const hasMinimalPermission = useUserPermissionsCheck(
{ id: ressourceId, type: ressourceType },
minimalPermission
);

if (hasRequiredPermissions) {
if (hasMinimalPermission) {
return children;
}

Expand Down
7 changes: 2 additions & 5 deletions front/src/common/authorization/components/ProtectedRoute.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,16 @@ import React from 'react';

import { Navigate } from 'react-router-dom';

import useUserPermissionsCheck from '../hooks/useUserPermissionsCheck';
import useUserRoleCheck from '../hooks/useUserRoleCheck';

type ProtectedRouteProps = {
allowedRoles?: string[];
requiredPermissions?: string[];
children: React.ReactNode;
};
const ProtectedRoute = ({ allowedRoles, requiredPermissions, children }: ProtectedRouteProps) => {
const ProtectedRoute = ({ allowedRoles, children }: ProtectedRouteProps) => {
const isRoleAllowed = useUserRoleCheck(allowedRoles);
const hasRequiredPermissions = useUserPermissionsCheck(requiredPermissions);

if (!isRoleAllowed || !hasRequiredPermissions) {
if (!isRoleAllowed) {
return <Navigate to="/403" />;
}

Expand Down
13 changes: 7 additions & 6 deletions front/src/common/authorization/hooks/useUserPermissionsCheck.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
const useUserPermissionsCheck = (requiredPermissions: string[] = []) => {
if (requiredPermissions.length === 0) {
const useUserPermissionsCheck = (
_ressource: { id: string; type: string },
minimalPermission?: string
) => {
if (!minimalPermission) {
return true;
}

// TODO AUTH:
// - get user permissions when it is implemented
// - uncomment when user roles and permission are implemented
// const userPermissions: string[] = [];
// return requiredPermissions.every((permission) => userPermissions.includes(permission))
// - get user permissions on ressource when it is implemented
// - check if user has the minimal permission
return true;
};

Expand Down

0 comments on commit 97322f8

Please sign in to comment.