Skip to content

Commit 04e20e8

Browse files
authored
AYS-354 | fix permission issue (#203)
1 parent 6becd93 commit 04e20e8

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

src/app/hocs/isAuth.tsx

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
'use client'
22

33
import { useRouter } from 'next/navigation'
4-
import { useEffect, useMemo } from 'react'
4+
import { useEffect, useMemo, useState } from 'react'
55
import { useAppSelector } from '@/store/hooks'
66
import { selectPermissions, selectToken } from '@/modules/auth/authSlice'
77
import { Permission } from '@/constants/permissions'
8+
import { LoadingSpinner } from '@/components/ui/loadingSpinner'
89

910
interface PrivateRouteProps {
1011
children: React.ReactNode
@@ -20,6 +21,8 @@ const PrivateRoute = ({ children, requiredPermissions }: PrivateRouteProps) => {
2021
[userPermissions],
2122
)
2223

24+
const [isAuthorized, setIsAuthorized] = useState<boolean>(false)
25+
2326
useEffect(() => {
2427
if (!token) {
2528
router.push('/login')
@@ -32,11 +35,22 @@ const PrivateRoute = ({ children, requiredPermissions }: PrivateRouteProps) => {
3235

3336
if (!hasPermission) {
3437
router.push('/not-found')
38+
return
3539
}
3640
}
41+
42+
setIsAuthorized(true)
3743
}, [token, router, memoizedPermissions, requiredPermissions])
3844

39-
return token && userPermissions?.length > 0 ? children : null
45+
if (!token || (requiredPermissions && !isAuthorized)) {
46+
return (
47+
<div className="flex items-center justify-center h-screen">
48+
<LoadingSpinner size={96} />
49+
</div>
50+
)
51+
}
52+
53+
return children
4054
}
4155

4256
export default PrivateRoute

0 commit comments

Comments
 (0)