سلام
سوال من درمورد دیتابیس یک چت روم هست.
سوال اول من درمورد گروه و کانال هست
اینکه هر کدوم باید یک جدول جدا داشته باشند یا هر دو داخل یک جدول ذخیره کنیم و با فیلدی (به عنوان مثال type
) گروه و کانال ها مشخص کنیم ؟
سوال دوم در مورد اجازه دسترسی برای هر کاربر توی گروه و کانال هست.
یک کاربر در یک گروهی مدیر گروه هستش و در گروه دیگر یک کابر معمولی یعنی اجازه دسترسی هر کاربر نسبت به هر گروه متفاوت هستش
ساختار دیتابیس این قسمت چجوریه ؟ روابط بین جدول role
و group
باید به چه شکلی پیاده سازی بشه
برای اینکه هر نقش تو گروه های مختلف قابلیت های خاص خودش رو داشته باشه باید فیلد دسترسی ها رو به جدول گروه ها اضافه کنی. میتونی مثل همون چیزی که گفتم اینبار هم به شکل JSON ذخیره کنی
میتونی مثلا یه فیلد JSON به اسم role access تو table گروه ها اضافه کنی و به صورت پیشفرض مقدارش رو به این شکل تنظیم کنی(کد های زیر JSON هستن):
[
{
"name": "admin",
"access": {
"ban-moderators": true,
"ban-users": true,
"edit-channel": true
}
},
{
"name": "moderator",
"access": {
"ban-moderators": false,
"ban-users": true,
"edit-channel": true
}
}
]
و پنل ادمین گروه رو طوری تنظیم کنی که وقتی طرف(ادمین چنل یا گروه) ثبت تغییرات رو زد(همون submit) این فیلد JSON تو دیتابیس تغییر کنه طبق چیزی که کاربر تو پنل تنظیم کرده. میتونی تو پنل ادمین از checkbox استفاده کنی
درمورد سوال اول فرقی نداره اما اگه هردوشون تو یه جدول باشن میشه گفت صرفه جویی میشه(از لحاظ تعداد جدول ها و کد نویسی)
در مورد سوال دوم باید بین ID نقشی که تو جدول کاربر وجود داره و آیدی خود نقش که تو جدول نقش ها هست یه ارتباط برقرار کنی.
میتونی برای تایین سطح دسترسی تو جدول نقش ها یه فیلد اضافه کنی که مربوط به سطح دسترسی هست. میتونی به شکل JSON ذخیره کنی
@asp.gosk
سلام یه خورده گیج شدم برای پاسخ دوم!
اینطوری که شما گفتید بازم نقش کاربر نسبت به گروهی که داره داینامیک نیست
برای اینکه هر نقش تو گروه های مختلف قابلیت های خاص خودش رو داشته باشه باید فیلد دسترسی ها رو به جدول گروه ها اضافه کنی. میتونی مثل همون چیزی که گفتم اینبار هم به شکل JSON ذخیره کنی
میتونی مثلا یه فیلد JSON به اسم role access تو table گروه ها اضافه کنی و به صورت پیشفرض مقدارش رو به این شکل تنظیم کنی(کد های زیر JSON هستن):
[
{
"name": "admin",
"access": {
"ban-moderators": true,
"ban-users": true,
"edit-channel": true
}
},
{
"name": "moderator",
"access": {
"ban-moderators": false,
"ban-users": true,
"edit-channel": true
}
}
]
و پنل ادمین گروه رو طوری تنظیم کنی که وقتی طرف(ادمین چنل یا گروه) ثبت تغییرات رو زد(همون submit) این فیلد JSON تو دیتابیس تغییر کنه طبق چیزی که کاربر تو پنل تنظیم کرده. میتونی تو پنل ادمین از checkbox استفاده کنی
چیزی که من برداشت کردم اینکه در جدول واسط بین کاربران و گروه ها (رابطه این دو جدول چند به چند هستش ) یک فیلد pivot اضافه کنم و تو اون مشخص کنم که کاربر چه نقشی داره ( یک دیتای json از نام کاربر و نقش ان ذخیره کنم )
خیلی ممنون از وقتی که گذاشتید ❤️
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟