Lager-v3/app/Http/Controllers/User/RoleController.php

1002 lines
34 KiB
PHP

<?php
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use App\Models\Brand;
use App\Models\Permission;
use App\Models\Role;
use App\Models\User;
use Illuminate\Auth\Access\Response;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class RoleController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
*/
public function index(Request $request)
{
Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'roles_viewAny'))
? Response::allow()
: Response::deny('you are not the chosen one');
$search_types = [];
array_push($search_types,array("value" => "name", "name" => "name"));
$PerPagination = $request->input('p') ?? 10;
$search_term = $request->input('search_term');
$search_type = $request->input('search_type');
$search_compare = $request->input('search_compare');
if($search_term != ""){
switch ($search_type){
case "name":
switch($search_compare){
case("="):
$roles = Role::where(function ($query) use ($search_term){
$query->where('name','=',$search_term);
})->paginate($PerPagination);
break;
default:
$roles = Role::where(function ($query) use ($search_term){
$query->where('name','like','%' . $search_term . '%');
})->paginate($PerPagination);
break;
}
break;
}
}
else{
$roles = Role::paginate($PerPagination);
}
return view('roles.index')
->with('search_types',$search_types)
->with('data',$roles)
->with('data_name','role')
->with('data_names','roles')
;
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
*/
public function deleted(Request $request)
{
Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'roles_viewAny_deleted'))
? Response::allow()
: Response::deny('you are not the chosen one');
$search_types = [];
array_push($search_types,array("value" => "name", "name" => "name"));
$PerPagination = $request->input('p');
$search_term = $request->input('search_term');
$search_type = $request->input('search_type');
$search_compare = $request->input('search_compare');
if($search_term != ""){
switch ($search_type){
case "name":
switch($search_compare){
case("="):
$roles = Role::onlyTrashed()->where(function ($query) use ($search_term){
$query->where('name','=',$search_term);
})->paginate($PerPagination);
break;
default:
$roles = Role::onlyTrashed()->where(function ($query) use ($search_term){
$query->where('name','like','%' . $search_term . '%');
})->paginate($PerPagination);
break;
}
break;
}
}
else{
$roles = Role::onlyTrashed()->paginate($PerPagination);
}
return view('roles.deleted')
->with('search_types',$search_types)
->with('data',$roles)
->with('data_name','role')
->with('data_names','roles')
;
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
*/
public function create()
{
Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'roles_create'))
? Response::allow()
: Response::deny('you are not the chosen one');
return view('roles.create')
;
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
public function store(Request $request)
{
Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'roles_create'))
? Response::allow()
: Response::deny('you are not the chosen one');
$role = new Role();
$role->name = $request->name;
$role->save();
return redirect()->route('roles.index');
}
/**
* Display the specified resource.
*
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
*/
public function show($role)
{
Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'roles_view'))
? Response::allow()
: Response::deny('you are not the chosen one');
$object = Role::withTrashed()->where('id','=',$role)->first();
return view('roles.show')
->with('data',$object)
->with('data_name','role')
;
}
/**
* Show the form for editing the specified resource.
*
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
*/
public function edit($role)
{
Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'roles_edit'))
? Response::allow()
: Response::deny('you are not the chosen one');
$object = Role::withTrashed()->where('id','=',$role)->first();
$permissions = $object->permissions()->get()->pluck('name')->toArray();
return view('roles.edit')
->with('data',$object)
->with('permissions',$permissions)
->with('data_name','role')
;
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Role $role
* @return \Illuminate\Http\RedirectResponse
*/
public function update(Request $request, $role)
{
Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'roles_edit'))
? Response::allow()
: Response::deny('you are not the chosen one');
$object = Role::withTrashed()->where('id','=',$role)->first();
$object->name = $request->name;
$object->save();
if(Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'roles_edit')))
{
$permissionIds = [];
if (!empty($request['home_page'])){
array_push($permissionIds,
Permission::firstWhere('name','=','home_page')->id
);
}
if (!empty($request['brands_viewAny'])){
array_push($permissionIds,
Permission::firstWhere('name','=','brands_viewAny')->id
);
}
if (!empty($request['brands_viewAny_deleted'])){
array_push($permissionIds,
Permission::firstWhere('name','=','brands_viewAny_deleted')->id
);
}
if (!empty($request['brands_view'])){
array_push($permissionIds,
Permission::firstWhere('name','=','brands_view')->id
);
}
if (!empty($request['brands_create'])){
array_push($permissionIds,
Permission::firstWhere('name','=','brands_create')->id
);
}
if (!empty($request['brands_edit'])){
array_push($permissionIds,
Permission::firstWhere('name','=','brands_edit')->id
);
}
if (!empty($request['brands_delete'])){
array_push($permissionIds,
Permission::firstWhere('name','=','brands_delete')->id
);
}
if (!empty($request['brands_delete_force'])){
array_push($permissionIds,
Permission::firstWhere('name','=','brands_delete_force')->id
);
}
if (!empty($request['brands_restore'])){
array_push($permissionIds,
Permission::firstWhere('name','=','brands_restore')->id
);
}
if (!empty($request['models_viewAny'])){
array_push($permissionIds,
Permission::firstWhere('name','=','models_viewAny')->id
);
}
if (!empty($request['models_viewAny_deleted'])){
array_push($permissionIds,
Permission::firstWhere('name','=','models_viewAny_deleted')->id
);
}
if (!empty($request['models_view'])){
array_push($permissionIds,
Permission::firstWhere('name','=','models_view')->id
);
}
if (!empty($request['models_create'])){
array_push($permissionIds,
Permission::firstWhere('name','=','models_create')->id
);
}
if (!empty($request['models_edit'])){
array_push($permissionIds,
Permission::firstWhere('name','=','models_edit')->id
);
}
if (!empty($request['models_delete'])){
array_push($permissionIds,
Permission::firstWhere('name','=','models_delete')->id
);
}
if (!empty($request['models_delete_force'])){
array_push($permissionIds,
Permission::firstWhere('name','=','models_delete_force')->id
);
}
if (!empty($request['models_restore'])){
array_push($permissionIds,
Permission::firstWhere('name','=','models_restore')->id
);
}
if (!empty($request['products_viewAny'])){
array_push($permissionIds,
Permission::firstWhere('name','=','products_viewAny')->id
);
}
if (!empty($request['products_viewAny_deleted'])){
array_push($permissionIds,
Permission::firstWhere('name','=','products_viewAny_deleted')->id
);
}
if (!empty($request['products_view'])){
array_push($permissionIds,
Permission::firstWhere('name','=','products_view')->id
);
}
if (!empty($request['products_create'])){
array_push($permissionIds,
Permission::firstWhere('name','=','products_create')->id
);
}
if (!empty($request['products_edit'])){
array_push($permissionIds,
Permission::firstWhere('name','=','products_edit')->id
);
}
if (!empty($request['products_delete'])){
array_push($permissionIds,
Permission::firstWhere('name','=','products_delete')->id
);
}
if (!empty($request['products_delete_force'])){
array_push($permissionIds,
Permission::firstWhere('name','=','products_delete_force')->id
);
}
if (!empty($request['products_restore'])){
array_push($permissionIds,
Permission::firstWhere('name','=','products_restore')->id
);
}
if (!empty($request['products_amount_add'])){
array_push($permissionIds,
Permission::firstWhere('name','=','products_amount_add')->id
);
}
if (!empty($request['products_amount_remove'])){
array_push($permissionIds,
Permission::firstWhere('name','=','products_amount_remove')->id
);
}
if (!empty($request['categories_viewAny'])){
array_push($permissionIds,
Permission::firstWhere('name','=','categories_viewAny')->id
);
}
if (!empty($request['categories_viewAny_deleted'])){
array_push($permissionIds,
Permission::firstWhere('name','=','categories_viewAny_deleted')->id
);
}
if (!empty($request['categories_view'])){
array_push($permissionIds,
Permission::firstWhere('name','=','categories_view')->id
);
}
if (!empty($request['categories_create'])){
array_push($permissionIds,
Permission::firstWhere('name','=','categories_create')->id
);
}
if (!empty($request['categories_edit'])){
array_push($permissionIds,
Permission::firstWhere('name','=','categories_edit')->id
);
}
if (!empty($request['categories_delete'])){
array_push($permissionIds,
Permission::firstWhere('name','=','categories_delete')->id
);
}
if (!empty($request['categories_delete_force'])){
array_push($permissionIds,
Permission::firstWhere('name','=','categories_delete_force')->id
);
}
if (!empty($request['categories_restore'])){
array_push($permissionIds,
Permission::firstWhere('name','=','categories_restore')->id
);
}
if (!empty($request['subcategories_viewAny'])){
array_push($permissionIds,
Permission::firstWhere('name','=','subcategories_viewAny')->id
);
}
if (!empty($request['subcategories_viewAny_deleted'])){
array_push($permissionIds,
Permission::firstWhere('name','=','subcategories_viewAny_deleted')->id
);
}
if (!empty($request['subcategories_view'])){
array_push($permissionIds,
Permission::firstWhere('name','=','subcategories_view')->id
);
}
if (!empty($request['subcategories_create'])){
array_push($permissionIds,
Permission::firstWhere('name','=','subcategories_create')->id
);
}
if (!empty($request['subcategories_edit'])){
array_push($permissionIds,
Permission::firstWhere('name','=','subcategories_edit')->id
);
}
if (!empty($request['subcategories_delete'])){
array_push($permissionIds,
Permission::firstWhere('name','=','subcategories_delete')->id
);
}
if (!empty($request['subcategories_delete_force'])){
array_push($permissionIds,
Permission::firstWhere('name','=','subcategories_delete_force')->id
);
}
if (!empty($request['subcategories_restore'])){
array_push($permissionIds,
Permission::firstWhere('name','=','subcategories_restore')->id
);
}
if (!empty($request['users_viewAny'])){
array_push($permissionIds,
Permission::firstWhere('name','=','users_viewAny')->id
);
}
if (!empty($request['users_viewAny_deleted'])){
array_push($permissionIds,
Permission::firstWhere('name','=','users_viewAny_deleted')->id
);
}
if (!empty($request['users_view'])){
array_push($permissionIds,
Permission::firstWhere('name','=','users_view')->id
);
}
if (!empty($request['users_create'])){
array_push($permissionIds,
Permission::firstWhere('name','=','users_create')->id
);
}
if (!empty($request['users_edit'])){
array_push($permissionIds,
Permission::firstWhere('name','=','users_edit')->id
);
}
if (!empty($request['users_edit_username'])){
array_push($permissionIds,
Permission::firstWhere('name','=','users_edit_username')->id
);
}
if (!empty($request['users_edit_role'])){
array_push($permissionIds,
Permission::firstWhere('name','=','users_edit_role')->id
);
}
if (!empty($request['users_delete'])){
array_push($permissionIds,
Permission::firstWhere('name','=','users_delete')->id
);
}
if (!empty($request['users_delete_force'])){
array_push($permissionIds,
Permission::firstWhere('name','=','users_delete_force')->id
);
}
if (!empty($request['users_restore'])){
array_push($permissionIds,
Permission::firstWhere('name','=','users_restore')->id
);
}
if (!empty($request['buildings_viewAny'])){
array_push($permissionIds,
Permission::firstWhere('name','=','buildings_viewAny')->id
);
}
if (!empty($request['buildings_viewAny_deleted'])){
array_push($permissionIds,
Permission::firstWhere('name','=','buildings_viewAny_deleted')->id
);
}
if (!empty($request['buildings_view'])){
array_push($permissionIds,
Permission::firstWhere('name','=','buildings_view')->id
);
}
if (!empty($request['buildings_create'])){
array_push($permissionIds,
Permission::firstWhere('name','=','buildings_create')->id
);
}
if (!empty($request['buildings_edit'])){
array_push($permissionIds,
Permission::firstWhere('name','=','buildings_edit')->id
);
}
if (!empty($request['buildings_delete'])){
array_push($permissionIds,
Permission::firstWhere('name','=','buildings_delete')->id
);
}
if (!empty($request['buildings_delete_force'])){
array_push($permissionIds,
Permission::firstWhere('name','=','buildings_delete_force')->id
);
}
if (!empty($request['buildings_restore'])){
array_push($permissionIds,
Permission::firstWhere('name','=','buildings_restore')->id
);
}
if (!empty($request['rooms_viewAny'])){
array_push($permissionIds,
Permission::firstWhere('name','=','rooms_viewAny')->id
);
}
if (!empty($request['rooms_viewAny_deleted'])){
array_push($permissionIds,
Permission::firstWhere('name','=','rooms_viewAny_deleted')->id
);
}
if (!empty($request['rooms_view'])){
array_push($permissionIds,
Permission::firstWhere('name','=','rooms_view')->id
);
}
if (!empty($request['rooms_create'])){
array_push($permissionIds,
Permission::firstWhere('name','=','rooms_create')->id
);
}
if (!empty($request['rooms_edit'])){
array_push($permissionIds,
Permission::firstWhere('name','=','rooms_edit')->id
);
}
if (!empty($request['rooms_delete'])){
array_push($permissionIds,
Permission::firstWhere('name','=','rooms_delete')->id
);
}
if (!empty($request['rooms_delete_force'])){
array_push($permissionIds,
Permission::firstWhere('name','=','rooms_delete_force')->id
);
}
if (!empty($request['rooms_restore'])){
array_push($permissionIds,
Permission::firstWhere('name','=','rooms_restore')->id
);
}
if (!empty($request['cabels_viewAny'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabels_viewAny')->id
);
}
if (!empty($request['cabels_viewAny_deleted'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabels_viewAny_deleted')->id
);
}
if (!empty($request['cabels_view'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabels_view')->id
);
}
if (!empty($request['cabels_create'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabels_create')->id
);
}
if (!empty($request['cabels_edit'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabels_edit')->id
);
}
if (!empty($request['cabels_delete'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabels_delete')->id
);
}
if (!empty($request['cabels_delete_force'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabels_delete_force')->id
);
}
if (!empty($request['cabels_restore'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabels_restore')->id
);
}
if (!empty($request['cabels_amount_add'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabels_amount_add')->id
);
}
if (!empty($request['cabels_amount_remove'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabels_amount_remove')->id
);
}
if (!empty($request['cabelCategories_viewAny'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabelCategories_viewAny')->id
);
}
if (!empty($request['cabelCategories_viewAny_deleted'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabelCategories_viewAny_deleted')->id
);
}
if (!empty($request['cabelCategories_view'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabelCategories_view')->id
);
}
if (!empty($request['cabelCategories_create'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabelCategories_create')->id
);
}
if (!empty($request['cabelCategories_edit'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabelCategories_edit')->id
);
}
if (!empty($request['cabelCategories_delete'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabelCategories_delete')->id
);
}
if (!empty($request['cabelCategories_delete_force'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabelCategories_delete_force')->id
);
}
if (!empty($request['cabelCategories_restore'])){
array_push($permissionIds,
Permission::firstWhere('name','=','cabelCategories_restore')->id
);
}
if (!empty($request['roles_viewAny'])){
array_push($permissionIds,
Permission::firstWhere('name','=','roles_viewAny')->id
);
}
if (!empty($request['roles_viewAny_deleted'])){
array_push($permissionIds,
Permission::firstWhere('name','=','roles_viewAny_deleted')->id
);
}
if (!empty($request['roles_view'])){
array_push($permissionIds,
Permission::firstWhere('name','=','roles_view')->id
);
}
if (!empty($request['roles_create'])){
array_push($permissionIds,
Permission::firstWhere('name','=','roles_create')->id
);
}
if (!empty($request['roles_edit'])){
array_push($permissionIds,
Permission::firstWhere('name','=','roles_edit')->id
);
}
if (!empty($request['roles_edit_permissions'])){
array_push($permissionIds,
Permission::firstWhere('name','=','roles_edit_permissions')->id
);
}
if (!empty($request['roles_delete'])){
array_push($permissionIds,
Permission::firstWhere('name','=','roles_delete')->id
);
}
if (!empty($request['roles_delete_force'])){
array_push($permissionIds,
Permission::firstWhere('name','=','roles_delete_force')->id
);
}
if (!empty($request['roles_restore'])){
array_push($permissionIds,
Permission::firstWhere('name','=','roles_restore')->id
);
}
if (!empty($request['loans_viewAny'])){
array_push($permissionIds,
Permission::firstWhere('name','=','loans_viewAny')->id
);
}
if (!empty($request['loans_create_user'])){
array_push($permissionIds,
Permission::firstWhere('name','=','loans_create_user')->id
);
}
if (!empty($request['loans_create_laptop'])){
array_push($permissionIds,
Permission::firstWhere('name','=','loans_create_laptop')->id
);
}
if (!empty($request['loans_adjust'])){
array_push($permissionIds,
Permission::firstWhere('name','=','loans_adjust')->id
);
}
if (!empty($request['loans_return'])){
array_push($permissionIds,
Permission::firstWhere('name','=','loans_return')->id
);
}
if (!empty($request['reservations_viewAny'])){
array_push($permissionIds,
Permission::firstWhere('name','=','reservations_viewAny')->id
);
}
if (!empty($request['reservations_create'])){
array_push($permissionIds,
Permission::firstWhere('name','=','reservations_create')->id
);
}
if (!empty($request['reservations_validate'])){
array_push($permissionIds,
Permission::firstWhere('name','=','reservations_validate')->id
);
}
if (!empty($request['reservations_cancel'])){
array_push($permissionIds,
Permission::firstWhere('name','=','reservations_cancel')->id
);
}
if (!empty($request['reservations_setup'])){
array_push($permissionIds,
Permission::firstWhere('name','=','reservations_setup')->id
);
}
if (!empty($request['reservations_pickup'])){
array_push($permissionIds,
Permission::firstWhere('name','=','reservations_pickup')->id
);
}
if (!empty($request['reservations_return'])){
array_push($permissionIds,
Permission::firstWhere('name','=','reservations_return')->id
);
}
if (!empty($request['reservations_adjust'])){
array_push($permissionIds,
Permission::firstWhere('name','=','reservations_adjust')->id
);
}
if (!empty($request['notes_viewAny'])){
array_push($permissionIds,
Permission::firstWhere('name','=','notes_viewAny')->id
);
}
if (!empty($request['notes_viewAny_deleted'])){
array_push($permissionIds,
Permission::firstWhere('name','=','notes_viewAny_deleted')->id
);
}
if (!empty($request['notes_view'])){
array_push($permissionIds,
Permission::firstWhere('name','=','notes_view')->id
);
}
if (!empty($request['notes_create'])){
array_push($permissionIds,
Permission::firstWhere('name','=','notes_create')->id
);
}
if (!empty($request['notes_edit'])){
array_push($permissionIds,
Permission::firstWhere('name','=','notes_edit')->id
);
}
if (!empty($request['notes_delete'])){
array_push($permissionIds,
Permission::firstWhere('name','=','notes_delete')->id
);
}
if (!empty($request['notes_delete_force'])){
array_push($permissionIds,
Permission::firstWhere('name','=','notes_delete_force')->id
);
}
if (!empty($request['notes_restore'])){
array_push($permissionIds,
Permission::firstWhere('name','=','notes_restore')->id
);
}
if (!empty($request['pdf_viewAny'])){
array_push($permissionIds,
Permission::firstWhere('name','=','pdf_viewAny')->id
);
}
if (!empty($request['pdf_view'])){
array_push($permissionIds,
Permission::firstWhere('name','=','pdf_view')->id
);
}
if (!empty($request['pdf_delete'])){
array_push($permissionIds,
Permission::firstWhere('name','=','pdf_delete')->id
);
}
if (!empty($request['logs_viewAny'])){
array_push($permissionIds,
Permission::firstWhere('name','=','logs_viewAny')->id
);
}
if (!empty($request['statistics'])){
array_push($permissionIds,
Permission::firstWhere('name','=','statistics')->id
);
}
$object->permissions()->sync($permissionIds);
}
return redirect()->route('roles.index');
}
/**
* Remove the specified resource from storage.
*
* @return \Illuminate\Http\RedirectResponse
*/
public function destroy($role)
{
Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'roles_delete'))
? Response::allow()
: Response::deny('you are not the chosen one');
$object = Role::withTrashed()->where('id','=',$role)->first();
$object->delete();
return redirect()->route('roles.index');
}
/**
* Permanently Remove the specified resource from storage.
*
* @return \Illuminate\Http\RedirectResponse
*/
public function delete_force($role)
{
Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'roles_delete_force'))
? Response::allow()
: Response::deny('you are not the chosen one');
$object = Role::withTrashed()->where('id','=',$role)->first();
$object->forceDelete();
return redirect()->route('roles.index');
}
/**
* Restore the specified resource from storage.
*
* @return \Illuminate\Http\RedirectResponse
*/
public function restore($role)
{
Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'roles_restore'))
? Response::allow()
: Response::deny('you are not the chosen one');
$object = Role::withTrashed()->where('id','=',$role)->first();
$object->restore();
return redirect()->route('roles.index');
}
}