У меня была система для HR, которая содержит записи о персонале для разных уровней: «pegawai», «APR», «KTA», «PTK» в отделениях.
Я создал несколько ролей с разными разрешениямиуровни.разрешение основано на уровнях персонала и отделах.
- superadmin - может получить доступ ко всем записям
- отдел администрирования - может получить доступ к записи в своем отделе
- общий администратор - можетДоступ к записям для «pegawai», «APR», «KTA» только во всех отделах
- 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
Но это не работает .. данные по-прежнему могут отображаться без аутентификации роли ..