feat:FCM 에러 토큰 전체삭제 버튼 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
김보곤
2026-02-11 15:39:26 +09:00
parent 724813be18
commit 0a39e7d744
3 changed files with 35 additions and 0 deletions

View File

@@ -76,6 +76,24 @@ public function deleteToken(int $id): Response
->header('HX-Trigger', 'tokenDeleted');
}
/**
* 에러 토큰 전체 삭제
*/
public function deleteErrorTokens(Request $request): Response
{
$query = PushDeviceToken::withoutGlobalScopes()->whereNotNull('last_error');
if ($tenantId = $request->get('tenant_id')) {
$query->where('tenant_id', $tenantId);
}
$count = $query->count();
$query->delete();
return response('', 200)
->header('HX-Refresh', 'true');
}
/**
* FCM 테스트 발송 페이지
*/

View File

@@ -87,6 +87,22 @@ class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none foc
</form>
</div>
<!-- 에러 토큰 전체삭제 -->
@if($stats['has_error'] > 0)
<div class="flex items-center justify-between bg-red-50 border border-red-200 rounded-lg px-4 py-3 mb-4">
<span class="text-sm text-red-700">
에러 토큰 <strong>{{ $stats['has_error'] }}</strong> 있습니다.
</span>
<button
hx-delete="{{ route('fcm.tokens.deleteError') }}"
hx-confirm="에러 토큰 {{ $stats['has_error'] }}건을 모두 삭제하시겠습니까?"
class="bg-red-600 hover:bg-red-700 text-white text-sm px-4 py-1.5 rounded-lg transition font-medium"
>
에러 토큰 전체삭제
</button>
</div>
@endif
<!-- 테이블 -->
<div class="bg-white rounded-lg shadow-sm overflow-hidden">
<div id="table-container">

View File

@@ -672,6 +672,7 @@
Route::get('/tokens/stats', [FcmController::class, 'tokenStats'])->name('tokens.stats');
Route::post('/tokens/{id}/toggle', [FcmController::class, 'toggleToken'])->name('tokens.toggle');
Route::delete('/tokens/{id}', [FcmController::class, 'deleteToken'])->name('tokens.delete');
Route::delete('/tokens-error/bulk', [FcmController::class, 'deleteErrorTokens'])->name('tokens.deleteError');
// 테스트 발송
Route::get('/send', [FcmController::class, 'send'])->name('send');