/** * *Este metodo asigna permisos a un rol. Cada vez que se llame a este metodo, se asignaran estos permisos a los usuarios que pertenezcan a este rol. * * @param id_permiso int Arreglo de ids de los permisos que seran asignados al rol * @param id_rol int Id del rol al que se le asignaran los permisos **/ public static function AsignarPermisoRol($id_permiso, $id_rol) { Logger::log("Asignando permiso " . $id_permiso . " al rol " . $id_rol); //Se valida que el permiso exista en la base de datos if (is_null(PermisoDAO::getByPK($id_permiso))) { Logger::error("El permiso con id: " . $id_permiso . " no existe"); throw new Exception("El permiso no existe", 901); } //Se valida que el rol exista en la base de datos if (is_null(RolDAO::getByPK($id_rol))) { Logger::error("El rol con id: " . $id_rol . " no existe"); throw new Exception("El rol no existe", 901); } //Se obtiene la lisa de usuarios que pertenecen a este rol $usuarios = UsuarioDAO::search(new Usuario(array("id_rol" => $id_rol))); DAO::transBegin(); try { //Por cada uno de los usuarios como usuario, se valida si el usuario este activo. //Si lo esta, se le asigna el permiso que se le esta asignando al rol. foreach ($usuarios as $usuario) { if ($usuario->getActivo()) { PermisoUsuarioDAO::save(new PermisoUsuario(array("id_permiso" => $id_permiso, "id_usuario" => $usuario->getIdUsuario()))); } } //Se guarda el permiso al rol. PermisoRolDAO::save(new PermisoRol(array("id_permiso" => $id_permiso, "id_rol" => $id_rol))); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo asignar el permiso al rol: " . $e); throw new Excpetion("No se pudo asignar el permiso al rol, consulte a su administrador de sistema"); } DAO::transEnd(); Logger::log("Permiso asignado exitosamente"); }
function funcion_permiso($id_permiso) { return PermisoDAO::getByPK($id_permiso) ? PermisoDAO::getByPK($id_permiso)->getPermiso() : "-----"; }