در این تسک، شما یک سیستم احراز هویت مبتنی بر نقش (Role-Based Authentication) با استفاده از Next.js و TypeScript پیادهسازی خواهید کرد. API های مورد نیاز برای شما فراهم شدهاند و وظیفه شما پیادهسازی بخش frontend و مدیریت جریان احراز هویت است. این تسک برای ارزیابی مهارتهای شما در زمینه React، Next.js، TypeScript و پیادهسازی سیستمهای امنیتی طراحی شده است.
- پیادهسازی سیستم احراز هویت با نقشهای مختلف
- استفاده از TypeScript با تعریف مناسب type ها و interface ها
- محافظت از مسیرها بر اساس نقش کاربر
- حفظ وضعیت لاگین کاربر پس از رفرش صفحه
- پیادهسازی مناسب error handling و نمایش پیامهای خطا به کاربر
- طراحی UI مهم نیست، تمرکز بر منطق و کد است
- کاربران بتوانند با نام کاربری و رمز عبور وارد سیستم شوند
- پس از ورود، کاربر به داشبورد مناسب با نقش خود هدایت شود:
- کاربران با نقش
admin
به مسیر/admin-dashboard
- کاربران با نقش
user
به مسیر/user-dashboard
- کاربران با نقش
- وضعیت لاگین کاربر پس از رفرش صفحه حفظ شود
- کاربر بتواند از سیستم خارج شود
- کاربران فقط به صفحات متناسب با نقش خود دسترسی داشته باشند
- نمایش وضعیت لودینگ هنگام ارسال درخواستهای API
- Admin: دسترسی به
/admin-dashboard
و مشاهده لیست تمام کاربران - User: دسترسی به
/user-dashboard
و مشاهده اطلاعات حساب کاربری خود
موارد زیر الزامی نیستند، اما پیادهسازی آنها امتیاز مثبت محسوب میشود:
-
تستنویسی:
- نوشتن تستهای واحد (Unit Tests) برای کامپوننتها با استفاده از Jest و React Testing Library
-
طراحی UI/UX:
- طراحی رابط کاربری جذاب و ریسپانسیو
-
بهینهسازی کارایی:
- استفاده از تکنیکهای مدرن React برای بهینهسازی رندر
- کش کردن دادهها و درخواستهای API
- Next.js (App Router)
- TypeScript
- JWT
- انتخاب روش مدیریت state به عهده شماست (Context API، Redux، Zustand، ...)
پروژه شما بر اساس معیارهای زیر ارزیابی خواهد شد:
- کیفیت کد: استفاده درست از الگوهای طراحی، قابلیت خوانایی و نگهداری
- استفاده از TypeScript: تعریف درست تایپها و استفاده مناسب از TypeScript
- مدیریت state: انتخاب و پیادهسازی مناسب مدیریت وضعیت برنامه
- امنیت: پیادهسازی صحیح مکانیزمهای احراز هویت و محافظت از مسیرها
- مدیریت خطا: نحوه برخورد با خطاها و نمایش پیامهای مناسب به کاربر
- ساختار پروژه: سازماندهی مناسب کدها و فولدرها
API های زیر برای شما آماده شدهاند:
POST /api/auth/login
: ورود به سیستمPOST /api/auth/logout
: خروج از سیستمGET /api/auth/me
: دریافت اطلاعات کاربر فعلیGET /api/admin/users
: دریافت لیست کاربران (فقط برای admin)
نام کاربری | رمز عبور | نقش |
---|---|---|
admin | admin123 | admin |
user | user123 | user |
- برای پیادهسازی middleware و محافظت از مسیرها آزاد هستید
- UI و طراحی ظاهری در اولویتهای اصلی نیستند، اما یک رابط کاربری تمیز و کاربرپسند امتیاز مثبت محسوب میشود
برای تحویل پروژه، موارد زیر مورد انتظار است:
- کد کامل پروژه در یک مخزن گیت
- یک فایل README با توضیحات نحوه راهاندازی و استفاده از پروژه
- توضیح مختصری از معماری پروژه و تصمیمات فنی که گرفتهاید
- در صورت پیادهسازی موارد اختیاری، آنها را در README ذکر کنید
برای انجام این تسک، به موارد زیر نیاز دارید:
- Node.js (نسخه 16 یا بالاتر)
- npm یا pnpm یا yarn
- ایجاد پروژه Next.js با TypeScript:
npx create-next-app@latest my-auth-project --typescript
- نصب وابستگیهای مورد نیاز:
npm install jsonwebtoken
npm install -D @types/jsonwebtoken
- کپی کدهای API: فایلها را در پروژه خود کپی کنید (کدها در همین ریپو وجود دارند)
در صورت بروز هرگونه ابهام یا سوال درباره این تسک، میتوانید از طریق ایمیل با ما در ارتباط باشید.
موفق باشید!