Estou filtrando os dados baseado em uma variável de sessão, até aí tudo certo, porém se o usuário alterar o id da url ele acaba conseguindo visualizar informações de outra empresa, como faria para evitar isso?
E você está usando qual variável de sessão pra filtrar o que em qual momento?
Pois veja digamos que o usuário 1 da empresa 1 ao se logar tenha na sessão dele o codigo_empresa = 1 e apenas a sala 1 seja dessa empresa, quando você passar a sala 2 na sua URL se ela não for da empresa 1 e ainda está aparecendo então você não está usando nada na sessão pra filtrar.
Consegue especificar melhor o que da sessão você está utilizando?
O Middleware é uma pilha de execução antes de você chegar o seu controller e com ela você consegue barrar a entrada em url que não são permitidas para visualização de usuários sem autorização
O Global Scope vai te ajudar a filtrar somente os dados que você precisa visualizar e consequentemente as outras operações.
Chegou o momento ideal, chegou a hora, chegou o seu vencer, estude o Framework, porque esse diferente de muitos tem todas essas soluções muitos fáceis de implementar.
Se não estudar fica complicado resolver essa questão e outro porém é muito difícil resolver sem ter o seu código na totalidade são passos a se chegar e você precisa entender isso.