shadi
3 سال پیش توسط shadi مطرح شد
3 پاسخ

اعطای دسترسی به هر کاربر

درود وقت بخیر
من جداول زیر رو دارم برای بخش دسترسی ها :

users
permissions
roles
role_user
permission_user
permission_role

در پنل مدیریت permissions رو بدرستی میسازم. بعدش roles ها رو ایجاد میکنم و بدرستی بهشون permissions رو اعمال میکنم.
تمامی جداول واسط هم بخوبی کار میکنند. اما مشکل با جدول واسط permission_user هست .
من رو پنلم جوری کار کردم که وقتی بر روی ویرایش کاربر برم اونجا بتونم به کاربر یک یا چند role رو اعطا کنم ( دسترسی ها رو قبلا به role دادم و خود roleها دارای permissions هایی هستند ). من میخوام وقتی role رو به کاربر میدم به صورت خودکار به یوزر همان دسترسی ها اعطا بشه و جدول permission_user هم بر اساس role ها تکمیل بشه . اما در این مرحله به مشکل خوردم
این کنترلر من

    public function update(Request $request,User $user)
    {
        $data = $request->all();
        $user->update($data);
        if ($user) {
            $user->roles()->sync($data['roles']);
            $user->permissions()->sync($data['permissions']);
            return redirect()->action('Admin\UsersController@index')->with([
                'message' => 'User Successfully Updated',
                'messageTitle' => 'Update User'
            ]);
        }
    }

بدرستی role رو به کاربر میده و جدول role_user هم پر میشه بدرستی .اما permission به یوزر داده نمیشه
و خطای زیر رو میده

Undefined array key "permissions"

ممنون میشم دوستان بنده رو راهنمایی کنید اشکال کارم کجاست
با تشکر از وقتی که برای راهنمایی بنده استفاده میکنید


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
1

شما باید دسترسی های کاربر رو از طریق Role ها چک کنی و اینکه آیا رولی که کاربر داره، دسترسی های لازم رو داره یا نه؟
در کنار این میتونی یه سیستم Direct permissions هم داشته باشی. که یه سری پرمیشن های کاستوم رو به یک کاربر بدی

پس کاربر شما یا Role ی داره که شامل پرمیشن مد نظر هست
و یا اون پرمیشن رو به صورت مستقیم داره
در غیر اینصورت اجازه دسترسی نداره

اینکه بیای و تمام پرمیشن های هر Role رو مستقیما به کاربر بدی، لازم نیست.. چون میتونی با رابطه بین role و permission چکش کنی


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 3 سال پیش مطرح شد
1

سلام
مشکل شما این هست که permission را به Role می دهند نه User بهتره که بین user و permission رابطه ای وجود نداشته باشه. هر role یکسری permission میگیره و هر user یکسری Role دارد.
@shadi.ahmadians


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
1

شما باید دسترسی های کاربر رو از طریق Role ها چک کنی و اینکه آیا رولی که کاربر داره، دسترسی های لازم رو داره یا نه؟
در کنار این میتونی یه سیستم Direct permissions هم داشته باشی. که یه سری پرمیشن های کاستوم رو به یک کاربر بدی

پس کاربر شما یا Role ی داره که شامل پرمیشن مد نظر هست
و یا اون پرمیشن رو به صورت مستقیم داره
در غیر اینصورت اجازه دسترسی نداره

اینکه بیای و تمام پرمیشن های هر Role رو مستقیما به کاربر بدی، لازم نیست.. چون میتونی با رابطه بین role و permission چکش کنی


shadi
تخصص : برنامه نویس php
@shadi.ahmadians 3 سال پیش مطرح شد
0

ممنون دوستان خیلی لطف کردید .
با پاسخ های شما متوجه اشکال کارم شدم و برطرف شد
سپاس از توجه شما


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام