Как аутентифицировать определенную роль для конкретной записи данных в laravel 5? - PullRequest
0 голосов
/ 26 ноября 2018

У меня была система для HR, которая содержит записи о персонале для разных уровней: «pegawai», «APR», «KTA», «PTK» в отделениях.

Я создал несколько ролей с разными разрешениямиуровни.разрешение основано на уровнях персонала и отделах.

  1. superadmin - может получить доступ ко всем записям
  2. отдел администрирования - может получить доступ к записи в своем отделе
  3. общий администратор - можетДоступ к записям для «pegawai», «APR», «KTA» только во всех отделах
  4. admin KTAK - доступ к записям только для «PTK».

Я создал разрешениедоступ с использованием этой функции контроллера:

 public function index()
{
    if (Auth::user()->hasPermissionTo('View Pegawai')) {
        if (Auth::user()->hasPermissionTo('View APR')) {
           if (Auth::user()->hasPermissionTo('View KTA')) {
                if (Auth::user()->hasPermissionTo('View PTK')) {
                   if (Auth::user()->hasPermissionTo('All Sections')) {



                        //superadmin akses
                        $itemregistrations = DB::table('itemregistrations')
                                            ->join('sections', 'itemregistrations.sectionid', '=', 'sections.sectionid')
                                            ->join('categories', 'itemregistrations.categoryid', '=', 'categories.categoryid')
                                            ->join('operasi', 'itemregistrations.operasiid', '=', 'operasi.operasiid')
                                            ->select('itemregistrations.ItemRegistrationID','itemregistrations.name', 'itemregistrations.Nobadan', 'sections.sectionname', 'categories.categoryname', 'operasi.operasiname')
                                            ->get();

                        return view('profil.index', compact('itemregistrations'));

                    }   //admin department akses
                        elseif (Auth::user()->hasPermissionTo('By Section')) {

                            $section = Auth::user()->section;

                            $itemregistrations = DB::table('itemregistrations')
                                                ->join('sections', 'itemregistrations.sectionid', '=', 'sections.sectionid')
                                                ->join('categories', 'itemregistrations.categoryid', '=', 'categories.categoryid')
                                                ->join('operasi', 'itemregistrations.operasiid', '=', 'operasi.operasiid')
                                                ->select('itemregistrations.*', 'sections.sectionname', 'categories.categoryname', 'operasi.operasiname')
                                                ->where('itemregistrations.sectionid', '=', $section)
                                                ->get();
                                           // dd($itemregistrations);  
                            return view('profil.index', compact('itemregistrations'));
                    }
                }
            //admin general akses    
            if (!Auth::user()->hasPermissionTo('View PTK')) 
                { 
                    $ids = [1,2,3];

                    $itemregistrations = DB::table('itemregistrations')
                                         ->join('sections', 'itemregistrations.sectionid', '=', 'sections.sectionid')
                                         ->join('categories', 'itemregistrations.categoryid', '=', 'categories.categoryid')
                                         ->join('operasi', 'itemregistrations.operasiid', '=', 'operasi.operasiid')
                                         ->select('itemregistrations.*', 'sections.sectionname', 'categories.categoryname', 'operasi.operasiname')
                                         ->whereIn('itemregistrations.categoryid', $ids)
                                         ->get();
                                    // dd($itemregistrations);
                    return view('profil.index', compact('itemregistrations'));
                }         
            }       
        }
    }//admin KTAK akses
    elseif (!Auth::user()->hasPermissionTo('View Pegawai')) {
        if (Auth::user()->hasPermissionTo('View PTK')) {

            $ids = [4];

            $itemregistrations = DB::table('itemregistrations')
                                 ->join('sections', 'itemregistrations.sectionid', '=', 'sections.sectionid')
                                 ->join('categories', 'itemregistrations.categoryid', '=', 'categories.categoryid')
                                 ->join('operasi', 'itemregistrations.operasiid', '=', 'operasi.operasiid')
                                 ->select('itemregistrations.*', 'sections.sectionname', 'categories.categoryname', 'operasi.operasiname')
                                 ->whereIn('itemregistrations.categoryid', $ids)
                                 ->get();

            return view('profil.index', compact('itemregistrations'));
        }
    }
}

Контроллер вернет страницу http://127.0.0.1:8000/profil. На этой странице отображение списка соответствует функции контроллера выше.На странице пользователь может нажать на имя и отобразить информацию о персонале.

Это маршрут для страницы

Route::group(['middleware' => ['web','auth']], function(){
 //profil utama
Route::resource('profil', 'Modul\ProfilController');

//view maklumat kakitangan
Route::get('/view_profil/{id}', 'Modul\ProfilController@show')->name('viewProfil');
}

Моя проблема со вторым маршрутом // view maklumat kakitangan Route :: get ('/ view_profil / {id}', 'Modul\ ProfilController @ show ') -> name (' viewProfil ');

Данные, отображаемые с этим URL, например:

http://127.0.0.1:8000/view_profil/3

Однако, когда я меняю идентификационный номер на оборотной стороне('3') с

http://127.0.0.1:8000/view_profil/7

На странице будут отображаться сведения о персонале с идентификатором 7. Предположительно, с ролью административного отдела он / она не может просматривать данные персонала, поскольку он из другого отдела.

Что я могу использовать для защиты данных в соответствии с ролью?Я использовал

 @if(Auth::check())
    //display data here....
  @endif
      @if(Auth::guest())
          <a href="/login" class="btn btn-info"> Anda tiada akses.</a>
      @endif 

Но это не работает .. данные по-прежнему могут отображаться без аутентификации роли ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...