From 04b51273e3bb4bfa6ea891eaeb055fad715b0e43 Mon Sep 17 00:00:00 2001 From: hamed <15238-genius.ha@users.noreply.drupalcode.org> Date: Thu, 11 Jun 2026 12:27:35 +0330 Subject: [PATCH] feat: add test user creation script and documentation --- TEST_USERS.md | 74 ++++++++++++++++++++++++++++++++ create_test_users.php | 98 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 TEST_USERS.md create mode 100644 create_test_users.php diff --git a/TEST_USERS.md b/TEST_USERS.md new file mode 100644 index 00000000..ea29ff7c --- /dev/null +++ b/TEST_USERS.md @@ -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 +``` diff --git a/create_test_users.php b/create_test_users.php new file mode 100644 index 00000000..a1de91dd --- /dev/null +++ b/create_test_users.php @@ -0,0 +1,98 @@ +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";