From 4b784719169e49bf537c9f2f1707cb109441987c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20FAMIBELLE-PRONZOLA?= Date: Tue, 2 Jul 2024 15:00:02 +0200 Subject: [PATCH] Disconnect unactive users --- components/konstitisyon/create/create-form.js | 1 + components/konstitisyon/list-comments.js | 8 ++++--- lib/directus.js | 23 ++++++++++++++++++- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/components/konstitisyon/create/create-form.js b/components/konstitisyon/create/create-form.js index 90d66c8..ba5ba88 100644 --- a/components/konstitisyon/create/create-form.js +++ b/components/konstitisyon/create/create-form.js @@ -82,6 +82,7 @@ export default function CreateForm({ } await handleSubmit({ + userId: session.user.userId, accessToken: session.user.accessToken, content: formattedContent, collection, diff --git a/components/konstitisyon/list-comments.js b/components/konstitisyon/list-comments.js index e0f2e00..d45f530 100644 --- a/components/konstitisyon/list-comments.js +++ b/components/konstitisyon/list-comments.js @@ -12,7 +12,7 @@ import Divider from '@mui/material/Divider' import Box from '@mui/material/Box' import {readItems, withToken} from '@directus/sdk' import LogoutCountdown from '../session/logout-countdown.js' -import {directusClient} from '@/lib/directus.js' +import {directusClient, handleUserStatus} from '@/lib/directus.js' import {formatDate} from '@/lib/format.js' const commentsPerPage = process.env.NEXT_PUBLIC_COMMENTS_PER_PAGE || 2 @@ -30,6 +30,8 @@ export default function ListComments({session, selectedTitre, isOpen, setIsOpen, useEffect(() => { async function fetchComments() { try { + await handleUserStatus(session.user.accessToken, session.user.userId) + const result = await directusClient.request(withToken( session.user.accessToken, readItems('commentaires', { @@ -73,7 +75,7 @@ export default function ListComments({session, selectedTitre, isOpen, setIsOpen, Commentaires - {selectedComments && selectedComments.length > 0 ? selectedComments.map(({id, date_created, text, user_created}) => ( + {selectedComments && selectedComments.length > 0 ? selectedComments.map(({id, date_created, contenu, user_created}) => ( - {text} + {contenu}
{formatDate(date_created, 'PPPPpp')} diff --git a/lib/directus.js b/lib/directus.js index 2dd0b33..ad9dacf 100644 --- a/lib/directus.js +++ b/lib/directus.js @@ -1,6 +1,8 @@ import { - createDirectus, rest, authentication, withToken, createItem + createDirectus, rest, authentication, withToken, createItem, + readUser } from '@directus/sdk' +import {signOut} from 'next-auth/react' import {hasRestrictedChar} from './format.js' const apiUrl = process.env.DIRECTUS_API_URL || process.env.NEXT_PUBLIC_DIRECTUS_API_URL @@ -9,7 +11,24 @@ export const directusClient = createDirectus(apiUrl) .with(authentication('cookie', {credentials: 'include', autoRefresh: true})) .with(rest()) +export async function handleUserStatus(accessToken, userId) { + const {status} = await directusClient.request( + withToken( + accessToken, + readUser(userId, { + fields: 'status' + }) + ) + ) + + if (status !== 'active') { + signOut() + throw new Error('Déconnexion') + } +} + export async function handleSubmit({ + userId, accessToken, content, collection, @@ -27,6 +46,8 @@ export async function handleSubmit({ return } + await handleUserStatus(accessToken, userId) + await directusClient.request( withToken( accessToken,