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(); $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?