From c4ab5c97b2a4afc463245988c12af641aad67307 Mon Sep 17 00:00:00 2001 From: jeremy bayse Date: Thu, 16 Apr 2026 18:55:53 +0200 Subject: [PATCH] Admin: Super Admin can bypass the 7-day AI analysis restriction --- app/Http/Controllers/AIAnalysisController.php | 5 ++++- resources/js/Pages/Admin/Candidates/Show.vue | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/AIAnalysisController.php b/app/Http/Controllers/AIAnalysisController.php index c198331..a5cea22 100644 --- a/app/Http/Controllers/AIAnalysisController.php +++ b/app/Http/Controllers/AIAnalysisController.php @@ -23,7 +23,10 @@ class AIAnalysisController extends Controller } // Restriction: Une analyse tous les 7 jours maximum par candidat - if ($candidate->ai_analysis && isset($candidate->ai_analysis['analyzed_at'])) { + // Le super_admin peut outrepasser cette restriction via le paramètre 'force' + $shouldCheckRestriction = !($request->force && auth()->user()->isSuperAdmin()); + + if ($shouldCheckRestriction && $candidate->ai_analysis && isset($candidate->ai_analysis['analyzed_at'])) { $lastAnalysis = Carbon::parse($candidate->ai_analysis['analyzed_at']); if ($lastAnalysis->diffInDays(now()) < 7) { return response()->json([ diff --git a/resources/js/Pages/Admin/Candidates/Show.vue b/resources/js/Pages/Admin/Candidates/Show.vue index 7f9342a..5b19e56 100644 --- a/resources/js/Pages/Admin/Candidates/Show.vue +++ b/resources/js/Pages/Admin/Candidates/Show.vue @@ -248,6 +248,7 @@ watch( const aiAnalysis = ref(props.candidate.ai_analysis || null); const isAnalyzing = ref(false); const selectedProvider = ref(props.ai_config?.default || 'ollama'); +const forceAnalysis = ref(false); // Error Modal state const showErrorModal = ref(false); @@ -263,7 +264,8 @@ const runAI = async () => { isAnalyzing.value = true; try { const response = await axios.post(route('admin.candidates.analyze', props.candidate.id), { - provider: selectedProvider.value + provider: selectedProvider.value, + force: forceAnalysis.value }); aiAnalysis.value = response.data; } catch (error) { @@ -630,6 +632,19 @@ const runAI = async () => { + +
+ + +
+