سلام دوستان
وقتتون بخیر
من میخوام نقش های مختلفی توی وبسایتم تعریف کنم (سوپر ادمین ، نویسنده و کاربر معمولی)
بنظرتون برای احراز هویت بهتره برای هر کدوم یک جدول جدا تعریف کنیم (مثلا سوپر ادمین و نویسنده جدا گونه ذخیره شن)
یا یک جدول user داشته باشیم و کاربر با هر شناسه تشخیص داده بشه و لاگین کنه
حالا هر روشی که استاندارد تره ، هم از نظر طراحی دیتابیس ، هم از نظر نظم در سیستم و اینکه اگه روش دوم رو ترجیح میدین شناسه هارو معمولا چجوری تعریف میکنین
ممنون
@mohaligateway
@muhammad
@ali.bayat
@hesammousavi
@mrn
@Rp76
@juza66
@milad
@eniack
@AliValinejad
و ...
به این صورت هم کنترل کردم.
public function handle(Request $request, Closure $next, string $scope = '')
{
$scopes = json_decode(Auth::user()->role->scope);
if (!in_array($scope, $scopes))
abort(403);
return $next($request);
}
اینجوری هم صداش زدم
middleware(["role:ads.list"]);
براش یه تابع هم توی مدل user درست کردم
public function may($scope)
{
$scopes = json_decode($this->role->scope);
if (in_array($scope, $scopes))
return true;
return false;
}
من وظیفه های موجود رو جایی ذخیره نکردم
نقش developer همه رو داره و برای استفاده از این وظیفه ها و اتصالشون به نقش های دیگه هم این کار رو کردم
چون به صورت json ذخیره شده وظیفه ها به صورت ارایه میشه ازش استفاده و رندر گرفت ازش
Edited : @yasinTaghavi
سلام وقتتون بخیر!
من این کار رو کردم!
هر کاربر یه role_id داره که به جدول role وصل میشه و اونجا برای هر نقش scope هایی تعریف شده که میشه کاربر هارو باهاش محدود هم کرد به صورت dynamic
خیلی جالب بود برام ، ممنون از نظرت @Rp76
فقط میشه یکم درباره ی نحوه ارتباط جداول به role بیشتر توضیح بدی
سلام
من به عنوان یک برنامه نویس بسیار بی تجربه از روش زیر استفاده می کنم :
ثبت نام و ورود همه کاربران در یک صفحه انجام میشه (چه مدیر چه نویسنده و چه کاربر عادی) ،
در database برای همه کاربران یک ستون وجود داره به اسم Level و اگر 1 باشه نشون میده کاربر عای هست و اگر 2 باشه نشون میده نویسنده است و اگر 3 باشه نشون میده مدیر اصلی سایت هست .
به صورت پیش فرض همه کاربران که ثبت نام می کنند در این بخش 1 براشون قرار داده میشه .
بخش بعدی که من از اون کمتر استفاده می کنم اینکه برای هر کدوم یک جدول جداگانه باشه و id اون کاربر رو که قرار مدیر یا نویسنده بشه رو در اون جدول قرار بده
به نظر بنده تا اینجا بخش اول میتونه بهتر باشه از لحاظ راحتی دسترسی بهش و کافی است فقط یک بار اطلاعات را از جدول user خواند و نیاز نیست سه تا جدول را همزمان خواند و بررسی کرد ...
روش بعدی به نظر من میتونه امکانات بیشتری رو بهتون بده و اون اینه که یک جدول درست کنید و در موقع ثبت نام id یا username کاربر رو بگیرید و در اونجا مقادیر و دسترسی های مختلف رو مشخص کنید به عنوان مثال میخواهم فردی را در سایتم استخدام کنم که فقط بتونه نظرات کاربران رو بررسی و در صورت تخلف حذف کنه ، در اینجا میایم و قسمتی اضافه می کنیم در اون جدول برای مدیریت مطالب (با نام Check the comments مثلا) و اونجا اگر مقدار رو مساوی کنیم با true اون کاربر فقط به نظرات دسترسی داره ...
در نهایت روش سوم به خاطر امکانات بیشتر رو من بی تجربه توصیه می کنم ...
امیدوارم براتون مفید بوده باشه اگر چه از من سوال نپرسیدید ...
@yasinTaghavi
@alirezakefayati1386 بله بنده هم قصد داشتم به این شکل عمل کنم و امیدوارم به یه جمع بندی خوب برسم
نه من سوالم برای همه بود ، در هر صورت ممنون بابت پیشنهادت دوست من
روش بعدی به نظر من میتونه امکانات بیشتری رو بهتون بده و اون اینه که یک جدول درست کنید ،
و در موقع ثبت نام id یا username کاربر رو بگیرید و ثبت کنید
در اونجا دسترسی های مختلف رو کنترل و مشخص کنید
به عنوان مثال میخواهم فردی را در سایتم استخدام کنم که فقط بتونه نظرات کاربران رو بررسی و در صورت تخلف حذف کنه ، در اینجا میاییم و قسمتی اضافه می کنیم در اون جدول برای مدیریت مطالب (با نام Check the comments مثلا) و اونجا اگر مقدار رو مساوی کنیم با true اون کاربر فقط میتونه به نظرات دسترسی داره ...
در نهایت روش سوم به خاطر امکانات بیشتر رو من بی تجربه توصیه می کنم ...
این راه شاید اوکی باشه :
شما 3 تا جدول درست کنید users ,permission,role که رابطه چند به چند داشته باشند داخل permission مجوز هایی که یک نویسنده (مثل:نوشتن مقاله ،ویرایش مقاله) یا مسئول دیگه وارد کنیدو در جدول role نقش هایی مد نظرتون هست پیاده سازی کنید (مثل نویسنده و ادمین،و...)
اینطوری شما میتونید چندین نوع نقش با دسترسی های مختلف پیاده سازی کنی
به این صورت هم کنترل کردم.
public function handle(Request $request, Closure $next, string $scope = '')
{
$scopes = json_decode(Auth::user()->role->scope);
if (!in_array($scope, $scopes))
abort(403);
return $next($request);
}
اینجوری هم صداش زدم
middleware(["role:ads.list"]);
براش یه تابع هم توی مدل user درست کردم
public function may($scope)
{
$scopes = json_decode($this->role->scope);
if (in_array($scope, $scopes))
return true;
return false;
}
من وظیفه های موجود رو جایی ذخیره نکردم
نقش developer همه رو داره و برای استفاده از این وظیفه ها و اتصالشون به نقش های دیگه هم این کار رو کردم
چون به صورت json ذخیره شده وظیفه ها به صورت ارایه میشه ازش استفاده و رندر گرفت ازش
Edited : @yasinTaghavi
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟