Les explico en que consiste la aplicación que estoy desarrollando:
Tengo 20 crud y los cree con Laravel-4-Generators, por lo tanto tengo 20 controladores, 20 modelos, y 20 directorios con sus respectivas vistas
Autenticacion de usuarios y permisos y estoy utilizando sentry.
Un requerimiento que me hicieron es que dependiendo del usuario tendrá acceso a diferentes datos.
entonces es acá donde veo que se me repite mucho el código, en cada método de cada controlador yo valido que usuario esta autenticado y dependiendo de su perfil y a la entidad a la que pertenece hago diferentes consultas a la base de datos.
cada crud tiene su entrada (osea pagina donde listo todos los registros de dicha entidad o tabla)y lo hago mediante este método
Código PHP:
Ver original//controlador
public function index()
{
//obtengo el valor de la variable de sesion para obtener el perfil del usuario
$perfil =Session::get('perfil');
//obtener el usuario logeado
$user = Sentry::getUser();
//obtengo el un objeto al que pertenece el usuario logeado
$observatorio = Observatory::find($user->observatorio_id);
//en esta variable concateno el perfil y una cadena para saber a que entidad pertenece el usuario
$perfilObservatorio = $perfil.$observatorio->alias;
//este codigo lo hago en todos los metodos de los 20 controladores
//continua el switch
switch ($perfilObservatorio) {
case 'Superadministradorovsm': //Superadministrador
$stations = Station::with('volcan')->orderBy('id', 'Asc')->get();
$submenuObservatorios = 'todos';
break;
case 'Coordinador Proyectoovsm'://Coordinador Proyecto OVSM
case 'Coordinador Proyectoovsp'://Coordinador Proyecto Ovsp
case 'Coordinador Proyectoovspop'://Coordinador Proyecto Ovspop
$stations = Station::with('volcan')->orderBy('id', 'Asc')->get();
$submenuObservatorios = 'todos';
break;
case 'Administrador Observatorioovsm': //Administrador Observatorio ovsm
case 'Administrador Observatorioovsp': //Administrador Observatorio ovsp
case 'Administrador Observatorioovspop': //Administrador Observatorio ovspop
case 'Superadministradorovsp':
case 'Superadministradorovspop':
case 'Coordinador Observatorioovsm':
case 'Coordinador Observatorioovsp':
case 'Coordinador Observatorioovspop':
case 'Tematicoovsm':
case 'Tematicoovsp':
case 'Tematicoovspop':
$stations = Station::with('volcan')->where('observatorio_id', '=', $user->observatorio_id )->orderBy('id', 'Asc')->get();
$submenuObservatorios ='uno';
break;
default:
break;
}
//y tengo que realizar estas consultas que no dependen del perfil o la entidad a la que pertenece el usuario
//estas consultas tambien las tengo que repetir en cada uno de los metodos de los 20 controladores
$transmisiones = Connectivity::all();
$volcanes =Volcano::all();
$numeroEstaciones = Station
::all()->count(); $menu = 'menu.menu'.Session::get('perfil');
$nombreModulo = 'Estaciones';
$observatorios = Observatory::orderBy('id', 'Asc')->get();
$areas = Area::where('monitoreo','=','TRUE')->get();
$tiposEstaciones = Station_type::all();
return View
::make('stations.index', compact('tiposEstaciones','volcanes','transmisiones','areas','observatorio','observatorios','submenuObservatorios','perfilObservatorio','stations', 'nombreModulo','perfilObservatorio','menu'));
}
yo lo que pienso hacer es una clase que valide el usuario y le entregue al controlador dicho valor y retorno la vista. estoy bien o estoy mal?
que me recomiendan?