fix(auth): update refresh token behavior to be reusable within TTL and add tests for token functionality

This commit is contained in:
hamed
2026-06-28 21:57:42 +03:30
parent c2b47d6396
commit 8705b88270
5 changed files with 77 additions and 9 deletions
+3 -3
View File
@@ -220,13 +220,13 @@ Refresh expired JWT using refresh token.
}
```
> **چرخش (rotation):** هر refresh token **یک‌بارمصرف** است. با هر فراخوانی، توکن ارائه‌شده باطل می‌شود و یک جفت `access_token` + `refresh_token` تازه صادر می‌گردد. توکن قبلی دیگر کار نمی‌کند (`401`). کاربر **معلق** (`status != 1`) نمی‌تواند refresh کند.
> **قابل استفاده‌ی مجدد:** refresh token تا انقضای TTL خود معتبر است و در پاسخ **بدون تغییر** برگردانده می‌شود (یک‌بارمصرف/چرخشی **نیست** — سایت عمومی در هر render سمت‌سرور refresh می‌زند و نمی‌تواند توکن چرخش‌یافته را ذخیره کند). کاربر **معلق** (`status != 1`) نمی‌تواند refresh کند (`401`).
### Response `200`
```json
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
"refresh_token": "<توکن جدید — با قبلی فرق دارد>",
"refresh_token": "<همان توکن ارسالی — بدون تغییر>",
"token_type": "Bearer",
"expires_in": 900,
"refresh_token_expires_in": 2592000
@@ -236,7 +236,7 @@ Refresh expired JWT using refresh token.
### Errors
| Code | HTTP | Description |
|------|------|-------------|
| `ERR_AUTH_001` | 401 | Invalid/expired/already-rotated refresh token, or suspended user |
| `ERR_AUTH_001` | 401 | Invalid/expired refresh token, or suspended user (`status != 1`) |
---