Add optional expiration to personal API tokens. Users pick a duration (1/7/30/60/90 days or Never) at creation time. Expired tokens are rejected by Sanctum, pruned hourly by sanctum:prune-expired, and a team notification fires ~24h before expiry so owners can rotate before API calls start failing. - ApiTokens Livewire component stores expires_at from expiresInDays - Rework issued-tokens UI from card grid to table (matches other views) - New ApiTokenExpirationWarningJob scheduled hourly (idempotent via RateLimiter) - New ApiTokenExpiringNotification (email/discord/telegram/slack/pushover) - api_token_expiring added to alwaysSendEvents so users cannot silence expiry warnings from the per-event notification toggle UI - sanctum:prune-expired cadence moved from daily to hourly Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| api-token-expiring.blade.php | ||
| application-deployment-failed.blade.php | ||
| application-deployment-success.blade.php | ||
| application-status-changes.blade.php | ||
| backup-failed.blade.php | ||
| backup-success-with-s3-warning.blade.php | ||
| backup-success.blade.php | ||
| before-trial-conversion.blade.php | ||
| container-restarted.blade.php | ||
| container-stopped.blade.php | ||
| daily-backup.blade.php | ||
| docker-cleanup-failed.blade.php | ||
| docker-cleanup-success.blade.php | ||
| email-change-verification.blade.php | ||
| email-verification.blade.php | ||
| help.blade.php | ||
| hetzner-deletion-failed.blade.php | ||
| high-disk-usage.blade.php | ||
| invitation-link.blade.php | ||
| reset-password.blade.php | ||
| s3-connection-error.blade.php | ||
| scheduled-task-failed.blade.php | ||
| scheduled-task-success.blade.php | ||
| server-force-disabled.blade.php | ||
| server-force-enabled.blade.php | ||
| server-lost-connection.blade.php | ||
| server-patches-error.blade.php | ||
| server-patches.blade.php | ||
| server-revived.blade.php | ||
| ssl-certificate-renewed.blade.php | ||
| subscription-invoice-failed.blade.php | ||
| test.blade.php | ||
| traefik-version-outdated.blade.php | ||
| trial-ended.blade.php | ||
| trial-ends-soon.blade.php | ||
| updates.blade.php | ||