176 lines
4.5 KiB
PHP
176 lines
4.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Administrador;
|
|
|
|
|
|
use App\Http\Requests\Administrador\RolesRequest;
|
|
use App\Models\Rol;
|
|
use Cartalyst\Sentinel\Native\Facades\Sentinel;
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Support\Facades\Route;
|
|
use Log;
|
|
|
|
class RolesController extends Controller
|
|
{
|
|
/**
|
|
* Display a listing of the resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function index(Request $request)
|
|
{
|
|
$orderBy = $request->input('sortBy','name');
|
|
$order = $request->input('order','asc');
|
|
$queryBuilder = Rol::orderBy($orderBy,$order);
|
|
|
|
if($query = $request->get('query',false)){
|
|
$queryBuilder->where(function($q) use ($query){
|
|
$q->where('name','like','%' .$query.'%')
|
|
->orWhere('slug','like','%' .$query.'%');
|
|
});
|
|
}
|
|
|
|
if($perPage = $request->input('perPage',false)){
|
|
$users = $queryBuilder->paginate($perPage);
|
|
}else{
|
|
$users = ['data'=>$queryBuilder->get()];
|
|
}
|
|
|
|
return response()->success($users);
|
|
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function store(RolesRequest $request)
|
|
{
|
|
$data = $request->only([
|
|
'slug',
|
|
'name',
|
|
'movil',
|
|
'web'
|
|
]);
|
|
$existe = Rol::where('slug','=',$data['slug'])
|
|
->where('name','=',$data['name'])
|
|
->first();
|
|
|
|
if($existe){
|
|
return response()->unprocessable('Error', ['El rol ya se encuentra registrado']);
|
|
}
|
|
|
|
$rol = Rol::create($data);
|
|
|
|
$role = Sentinel::findRoleById($rol->id);
|
|
|
|
foreach ($request->input('permissions') as $key => $value){
|
|
$role->addPermission($key, ($value == "true")? true : false);
|
|
$role->save();
|
|
}
|
|
|
|
return response()->success($rol);
|
|
}
|
|
|
|
/**
|
|
* Display the specified resource.
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function show($id)
|
|
{
|
|
$role = Sentinel::findRoleById($id);
|
|
|
|
$routeCollection = Route::getRoutes();
|
|
foreach ($routeCollection as $value) {
|
|
$collection[] = ['name'=>$value->getName()];
|
|
}
|
|
$collection = collect($collection);
|
|
$sorted = $collection->sortBy('name');
|
|
$sorted->values()->all();
|
|
|
|
$permisos = [];
|
|
foreach ($sorted as $value) {
|
|
if($value['name']!=''){
|
|
$permisos[$value['name']] = false;
|
|
}
|
|
}
|
|
|
|
$role['permissions'] = collect($permisos)
|
|
->merge($role['permissions'])
|
|
->all();
|
|
//Log::info("roles show");
|
|
//Log::info($role);
|
|
return response()->success($role);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function update(RolesRequest $request, $id)
|
|
{
|
|
$rol = Rol::findOrFail($id);
|
|
|
|
$data = $request->only(['slug','name','permissions','movil','web']);
|
|
|
|
$role = Sentinel::findRoleById($id);
|
|
|
|
foreach ($data['permissions'] as $key => $value){
|
|
$role->updatePermission($key, ($value == "true")? true : false);
|
|
$role->addPermission($key, ($value == "true")? true : false);
|
|
$role->save();
|
|
}
|
|
|
|
$rol->slug = $data['slug'];
|
|
$rol->name = $data['name'];
|
|
$rol->movil = $data['movil'];
|
|
$rol->web = $data['web'];
|
|
$rol->save();
|
|
|
|
return response()->success($rol);
|
|
}
|
|
|
|
/**
|
|
* Remove the specified resource from storage.
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function destroy($id)
|
|
{
|
|
$rol = Rol::findOrFail($id);
|
|
$rol->delete();
|
|
|
|
return response()->success(['result'=>true]);
|
|
}
|
|
|
|
public function rutas(){
|
|
|
|
$routeCollection = Route::getRoutes();
|
|
foreach ($routeCollection as $value) {
|
|
$collection[] = ['name'=>$value->getName()];
|
|
}
|
|
$collection = collect($collection);
|
|
$sorted = $collection->values()->all();
|
|
|
|
$permisos = [];
|
|
foreach ($sorted as $value) {
|
|
if($value['name']!=''){
|
|
$permisos[$value['name']] = false;
|
|
}
|
|
}
|
|
|
|
return response()->success($permisos);
|
|
}
|
|
}
|