feat: implement OTP login flow for non-staff accounts in QA driver
This commit is contained in:
@@ -478,6 +478,25 @@ node .claude/skills/redesign-page/driver.mjs inspect "https://clinic-pro.ddev.si
|
||||
- **`TEST_USERS.md` دروغ میگوید** (بالا). به آن استناد نکن.
|
||||
- **`CLAUDE.md` هم روی `/api/v1/categorys/{bundle}` منسوخ است** — آن مسیر حالا ۳۰۱ با
|
||||
`ERR_MOVED` میدهد و مسیر واقعی `/api/v1/provinces` است.
|
||||
- **کد OTP در محیط dev همیشه `12345` است** (`OtpService::sendCode` — در غیر dev کد تصادفی
|
||||
۵رقمی میسازد و SMS میکند). پس زنجیرهٔ کامل ورود بدون رمز اسکریپتپذیر است:
|
||||
`POST /api/v1/user/send-code` → `POST /api/v1/user/verify-code` با `code=12345` →
|
||||
`grant` → `POST /api/v1/user/otp-login`.
|
||||
- **`patient` و `unclaimed_doctor` با رمز وارد نمیشوند و این باگ نیست.**
|
||||
`PasswordAuthenticator::onAuthenticationSuccess` هر کاربری که `User::isStaff()` نباشد را
|
||||
با ۴۰۳ و `ERR_AUTH_006` رد میکند (staff = doctor/clinic/secretary/admin/representation/importer).
|
||||
این دو پرسونا فقط OTP-only هستند؛ درایور خودش به زنجیرهٔ OTP بالا fallback میکند.
|
||||
**گاردش را برای سبزشدن تست باز نکن.**
|
||||
- **`send-code` سقف ۵ درخواست در ساعت بهازای هر IP دارد** (`config/packages/rate_limiter.yaml`).
|
||||
یک جاروی کامل authz این سقف را میسوزاند و بعدش پرسوناهای OTP-only شکست میخورند
|
||||
(`ERR_RATE_LIMIT_001`). راهحل بدون دستزدن به محصول: توکن را مستقیم با کامند خود اپ بساز —
|
||||
```bash
|
||||
ddev exec 'php bin/console lexik:jwt:generate-token 09129000006 --user-class="App\\Auth\\Entity\\User"'
|
||||
```
|
||||
همان کلید و همان claimها؛ فقط محدودیت نرخ را دور میزند.
|
||||
- **برای جاروی ماتریس، درایور را در حلقه صدا نزن.** هر فراخوانی دوباره لاگین میکند
|
||||
(۱۶۸ مسیر × ۱۳ پرسونا ≈ ۲۲۰۰ لاگین) — هم چند ده دقیقه طول میکشد هم rate limit را میسوزاند.
|
||||
یکبار برای هر پرسونا توکن بگیر و همان را در همهٔ مسیرها استفاده کن.
|
||||
- **گواهی TLS ddev را Node قبول نمیکند.** درایور فقط برای هاستهای `*.ddev.site` /
|
||||
`localhost` `NODE_TLS_REJECT_UNAUTHORIZED=0` میگذارد و وارنینگ نویزیاش را خفه میکند.
|
||||
- **خطاهای صفحهٔ لاگین به حساب صفحهٔ تحت تست نوشته نشوند.** درایور بافر خطا را بعد از
|
||||
|
||||
Reference in New Issue
Block a user