feat: add test user creation script and documentation

This commit is contained in:
hamed
2026-06-11 12:27:35 +03:30
parent e7b90a6399
commit 04b51273e3
2 changed files with 172 additions and 0 deletions
+74
View File
@@ -0,0 +1,74 @@
# کاربران تستی
**پنل ادمین:** https://clinic-pro.ddev.site/admin
---
## ادمین
| فیلد | مقدار |
|------|-------|
| موبایل | `09120671713` |
| پسورد | `admin123` |
| نقش | `ROLE_ADMIN` |
---
## کاربران Multi-Context
### کاربر ۱ — دکتر در چند کلینیک
| فیلد | مقدار |
|------|-------|
| موبایل | `09100000011` |
| پسورد | `Test1234` |
| نقش | `ROLE_DOCTOR` |
| Contexts | مطب شخصی دکتر آرمان رضایی |
| | کلینیک جامع حضرت علی (عضو) |
| | بیمارستان ابن سینا (عضو) |
---
### کاربر ۲ — صاحب کلینیک
| فیلد | مقدار |
|------|-------|
| موبایل | `09100000022` |
| پسورد | `Test1234` |
| نقش | `ROLE_CLINIC` |
| Contexts | کلینیک تست پگاه |
| UUID کلینیک | `0730373f-7c0a-4610-8120-d58ecf4a9916` |
---
### کاربر ۳ — منشی
| فیلد | مقدار |
|------|-------|
| موبایل | `09100000033` |
| پسورد | `Test1234` |
| نقش | `ROLE_SECRETARY` |
| Contexts | مطب دکتر مهناز سلیمانی |
---
### کاربر ۴ — دکتر + صاحب کلینیک
| فیلد | مقدار |
|------|-------|
| موبایل | `09100000044` |
| پسورد | `Test1234` |
| نقش | `ROLE_DOCTOR` + `ROLE_CLINIC` |
| Contexts | مطب شخصی دکتر سامان علوی |
| | کلینیک تخصصی علوی |
| UUID کلینیک | `26a1ff95-32aa-4a96-b0fd-03e75e810be9` |
---
## ساخت مجدد
اگر دیتابیس ریست شد، اجرا کن:
```bash
ddev exec php create_test_users.php
```
+98
View File
@@ -0,0 +1,98 @@
<?php
require __DIR__ . '/vendor/autoload.php';
use App\Kernel;
use Symfony\Component\Dotenv\Dotenv;
(new Dotenv())->bootEnv(__DIR__ . '/.env');
$kernel = new Kernel($_SERVER['APP_ENV'], (bool)$_SERVER['APP_DEBUG']);
$kernel->boot();
$container = $kernel->getContainer();
$em = $container->get('doctrine')->getManager();
$doctorRepo = $em->getRepository(\App\Doctor\Entity\Doctor::class);
$clinicRepo = $em->getRepository(\App\Clinic\Entity\Clinic::class);
$plainPassword = 'Test1234';
$passwordHash = password_hash($plainPassword, PASSWORD_BCRYPT, ['cost' => 13]);
function makeUser(string $mobile, array $roles, $em, string $hash): \App\Auth\Entity\User {
$u = new \App\Auth\Entity\User($mobile);
$u->setRoles($roles);
$u->setPasswordHash($hash);
$em->persist($u);
return $u;
}
echo "=== ساخت کاربران تستی ===\n\n";
// ── ۱) دکتر در چند کلینیک ──────────────────────────────────────────
$u1 = makeUser('09100000011', ['ROLE_DOCTOR'], $em, $passwordHash);
$em->flush();
$d1 = new \App\Doctor\Entity\Doctor($u1, 'دکتر آرمان رضایی');
$d1->setDegree('specialist')->setInfo('متخصص قلب و عروق');
$em->persist($d1);
$em->flush();
$clinic1 = $clinicRepo->find(1);
$clinic2 = $clinicRepo->find(2);
if ($clinic1) $clinic1->getDoctors()->add($d1);
if ($clinic2) $clinic2->getDoctors()->add($d1);
$em->flush();
echo "✅ کاربر ۱: دکتر در چند کلینیک\n";
echo " موبایل: 09100000011 | پسورد: Test1234\n";
echo " نقش: ROLE_DOCTOR\n";
echo " contexts: مطب شخصی + " . ($clinic1?->getName() ?? 'کلینیک ۱') . " + " . ($clinic2?->getName() ?? 'کلینیک ۲') . "\n\n";
// ── ۲) صاحب کلینیک ─────────────────────────────────────────────────
$u2 = makeUser('09100000022', ['ROLE_CLINIC'], $em, $passwordHash);
$em->flush();
$c2 = new \App\Clinic\Entity\Clinic($u2);
$c2->setName('کلینیک تست پگاه');
$em->persist($c2);
$em->flush();
echo "✅ کاربر ۲: صاحب کلینیک\n";
echo " موبایل: 09100000022 | پسورد: Test1234\n";
echo " نقش: ROLE_CLINIC\n";
echo " contexts: کلینیک تست پگاه (uuid=" . $c2->getUuid() . ")\n\n";
// ── ۳) منشی ────────────────────────────────────────────────────────
$u3 = makeUser('09100000033', ['ROLE_SECRETARY'], $em, $passwordHash);
$em->flush();
$doctor182 = $doctorRepo->find(182);
if ($doctor182) {
$sec = new \App\Secretary\Entity\DoctorSecretary($doctor182, $u3);
$sec->setActive(true);
$em->persist($sec);
$em->flush();
echo "✅ کاربر ۳: منشی\n";
echo " موبایل: 09100000033 | پسورد: Test1234\n";
echo " نقش: ROLE_SECRETARY\n";
echo " contexts: مطب " . $doctor182->getName() . "\n\n";
} else {
echo "⚠️ دکتر ۱۸۲ یافت نشد\n\n";
}
// ── ۴) دکتر + صاحب کلینیک ──────────────────────────────────────────
$u4 = makeUser('09100000044', ['ROLE_DOCTOR', 'ROLE_CLINIC'], $em, $passwordHash);
$em->flush();
$d4 = new \App\Doctor\Entity\Doctor($u4, 'دکتر سامان علوی');
$d4->setDegree('specialist')->setInfo('متخصص ارتوپدی');
$em->persist($d4);
$c4 = new \App\Clinic\Entity\Clinic($u4);
$c4->setName('کلینیک تخصصی علوی');
$em->persist($c4);
$em->flush();
echo "✅ کاربر ۴: دکتر + صاحب کلینیک\n";
echo " موبایل: 09100000044 | پسورد: Test1234\n";
echo " نقش: ROLE_DOCTOR + ROLE_CLINIC\n";
echo " contexts: مطب شخصی دکتر سامان + کلینیک تخصصی علوی (uuid=" . $c4->getUuid() . ")\n\n";
echo "=== تمام ===\n";