
پیادهسازی پایه سایت سیستمی ماژولار و مدیریت دسترسی ترکیبی
- توسعه نرمافزار و آیتی
طراحی و پیادهسازی یک Base Project با Next.js (آخرین نسخه)، shadcn/ui و Tailwind که دارای:
سیستم احراز هویت دو مرحلهای با TOTP (Time-based One-Time Password) کاملاً سازگار با Google Authenticator و اپلیکیشنهای مشابه
مدل مدیریت دسترسی ترکیبی RBAC-ABAC (Role-Based + Attribute-Based Access Control) با استفاده از Casbin به طوری که: · بُعد RBAC: دسترسیها بر اساس نقش، دپارتمان و شغل کاربر تعریف میشود. · بُعد ABAC: دسترسیها بر اساس ویژگیهای پویای کاربر و محیط (مانند زمان و نوع درخواست) قابل تعریف است.
معماری ماژولار به طوری که داشبورد اصلی فقط سیستمهای قابل دسترس کاربر را نمایش دهد.
دسترسی داخلی هر سیستم (مشاهده، ویرایش، ایجاد، حذف)
صفحه پروفایل و ۴ سیستم نمونه (مالی، اداری، آموزش، فنی) با نمایش دو کامپوزیت ساده در هر صفحه برای تست دسترسی
· بخش ادمین دسترسیها برای تعریف سیستم، بخش، قابلیت و تخصیص به کاربر/نقش با قابلیت تعریف قوانین مبتنی بر ویژگی (ABAC)
- رعایت استانداردهای کدنویسی به همراه توضیحات کافی در کدها
- بکاند واقعی هر سیستم فعلاً نیاز نیست. از دادههای ساختگی یا localStorage برای شبیهسازی استفاده میشود.
تکنولوژیهای مورد انتظار فریمورک Next.js Shadcn/ui + Tailwind احراز هویت NextAuth با استراتژی TOTP مدیریت دسترسی Casbin (node-casbin) با مدل ترکیبی RBAC-ABAC زبان TypeScript استاندارد ESLint + Prettier، کامنتهای توضیحی (JSdoc، توضیح منطق دسترسیها)
ویژگیهای اصلی ۱- احراز هویت دو مرحلهای با TOTP
- کاربر ابتدا با یوزرنیم/رمز عبور احراز هویت میشود.
- در مرحله دوم، کد ۶ رقمی TOTP که تغییر میکند درخواست میشود.
- در صفحه تنظیمات امنیتی، کاربر میتواند: · یک Secret Key منحصربهفرد دوباره تولید کرده و QR Code قابل اسکن توسط Google Authenticator نمایش داده میشود. · کد تأیید را وارد کرده و در صورت صحت، TOTP برای حساب کاربر فعال میشود. · فقط ادمین میتواند ۲FA کاربر را غیرفعال کند.
- نشست کاربر در کوکی امن (HttpOnly, Secure, SameSite) ذخیره میشود.
سطوح دسترسی (قابلیت ABAC):
- دسترسی سطح دپارتمان و شغل (بُعد RBAC)۲. دسترسی شخصی: دسترسی مستقیم و ویژه (بُعد RBAC)۳. دسترسی مبتنی بر ویژگی (ABAC): قوانین پویا مانند: · کاربر فقط در ساعات کاری به سیستم دسترسی داشته باشد · کاربر فقط از IP مشخصی به سیستم دسترسی داشته باشد · کاربر فقط به دادههایی که خودش نوشته دسترسی داشته باشد.
تفکیک دسترسی: · دسترسی کلی به سیستم (System Access): تعیین میکند کاربر چه سیستمهایی را در داشبورد میبیند. · دسترسی داخلی هر سیستم (Internal Module Access): تعیین میکند کاربر درون یک سیستم خاص، چه بخشها و عملیاتی را میتواند انجام دهد (view, edit, delete, create, export).
۲. صفحه اصلی (داشبورد) · فقط سیستمهایی که کاربر دسترسی کلی دارد نمایش داده میشود (هر سیستم یک کارت). · کلیک روی کارت → رفتن به صفحه آن سیستم با اعمال دسترسیهای داخلی.
۳. صفحه پروفایل · نمایش اطلاعات کاربر (نام، ایمیل، دپارتمان، شغل) · تنظیمات امنیتی: تغییر کد TOTP + نمایش QR Code
۴. بخش مدیریت دسترسی (Admin Panel) · مدیریت سیستمها، بخشها، قابلیتها · مدیریت نقشها (هر نقش = دپارتمان + شغل) · تعریف قوانین ABAC: قوانین پویا بر اساس ویژگیها (زمان، مکان و ...) · انتساب دسترسیها به نقشها یا مستقیماً به کاربران · فعالسازی یا غیرفعالسازی TOTP · فقط کاربران ادمین به این بخش دسترسی دارند.
استانداردهای کدنویسی و مستندسازی کد · تمامی توابع و کامپوننتهای اصلی باید دارای توضیح هدف، ورودی و خروجی به زبان فارسی یا انگلیسی. · لاجیک دسترسیها باید با کامنت توضیح داده شود که از چه سطحی (RBAC: نقش/دپارتمان/شغل یا ABAC: ویژگیهای پویا) گرفته شده است. · استفاده از server components به صورت پیشفرض و فقط در صورت نیاز client component. · داشتن فایل README.md شامل: راهاندازی، ساخت کاربر ادمین اولیه، نحوه تعریف دسترسی جدید (RBAC و ABAC).
امنیت الزامی · استفاده از Next.js Middleware برای محافظت از مسیرها بر اساس دسترسی · ذخیره نشست در کوکی امن (HttpOnly, Secure, SameSite) · TOTP با استفاده از speakeasy و qrcode (الگوریتم استاندارد RFC 6238) · اعتبارسنجی ورودیها با Zod · رمزگذاری Secret Key TOTP برای هر کاربر
مهارتهای مورد نیاز
Node.js
برنامه نویسی تحت وب
ری اکت (React)
برنامه نویسی فرانت اند
سرویسهای مرتبط
فریلنسرهایی که در این پروژه پیشنهاد ارسال کردهاند
- WEwebdevpoya5(2) امتیاززمان تحویل: 14 روزارسال پیشنهاد در:
hadihashemi84.93(6) امتیاززمان تحویل: 1 روزارسال پیشنهاد در:
javadroid4.94(309) امتیاززمان تحویل: 20 روزارسال پیشنهاد در:
arshiyarezaie15(1) امتیاززمان تحویل: 25 روزارسال پیشنهاد در:- زمان تحویل: 20 روزارسال پیشنهاد در:
- زمان تحویل: 45 روزارسال پیشنهاد در:
- زمان تحویل: 21 روزارسال پیشنهاد در:


