Atributo Redirect
1Apresentação
Este atributo pode ser usado para forçar um redirecionamento, impedindo sistematicamente o acesso a um controlador ou uma ação. Isso pode ser útil durante a depuração, ou para desativar temporariamente o acesso a uma parte do código.
2Parâmetros
O atributo oferece vários parâmetros:
- $url: (string) URL de redirecionamento.
- $var: (string) Nome da variável de template contendo a URL de redirecionamento.
- $referer: (bool) false por padrão. Se true, e $url e $var não estiverem definidos, o cabeçalho HTTP REFERER é usado como URL de redirecionamento.
3Prioridade
Para definir a URL para a qual o usuário será redirecionado, o atributo aplica a seguinte ordem de prioridade:
- Se o parâmetro $url estiver definido, ele é usado.
- Se o parâmetro $var estiver definido, e contiver o nome de uma variável de template existente e não vazia, seu conteúdo é usado.
- Se o parâmetro $referer estiver definido como true, e o cabeçalho HTTP Referer existir e não estiver vazio, ele é usado.
- Se o arquivo etc/temma.php contiver uma configuração estendida x-security, e esta contiver uma chave redirect, seu conteúdo é usado.
Se nenhuma URL de redirecionamento for encontrada, um erro 403 é retornado.
4Configuração
Para garantir que todos os atributos Redirect redirecionem para a mesma URL, basta defini-la no arquivo etc/temma.php:
<?php
return [
'x-security' => [
'redirect' => '/temporaryHomepage'
]
];
Para garantir que a URL de redirecionamento seja a mesma para os atributos Auth, Method, Referer e Redirect, basta definir a chave redirect na configuração estendida x-security do arquivo etc/temma.php:
<?php
return [
'x-security' => [
'redirect' => '/login'
]
];
5Exemplos
use \Temma\Attributes\Redirect as TµRedirect;
// redireciona todos os acessos a este controlador
// para a URL definida no arquivo 'etc/temma.php'
#[TµRedirect]
class Login extends \Temma\Web\Controller {
// ...
}
use \Temma\Attributes\Redirect as TµRedirect;
class Homepage extends \Temma\Web\Controller {
// redireciona para a nova página inicial
#[TµRedirect('/newHomepage')]
public function oldHome() { }
}
use \Temma\Attributes\Redirect as TµRedirect;
class Homepage extends \Temma\Web\Controller {
// inicialização do controlador: definição
// da variável de template 'homeRedir'
public function __wakeup() {
$this['homeRedir'] = '/otherHomepage';
}
// redirecionamento para a URL definida na
// variável de template 'homeRedir'
#[TµRedirect(var: 'homeRedir')]
public function action1() {
// ...
}
}
use \Temma\Attributes\Redirect as TµRedirect;
class Homepage extends \Temma\Web\Controller {
// redireciona para o referer HTTP, ou para a
// URL de configuração se o referer estiver ausente
#[TµRedirect(referer: true)]
public function action1() {
// ...
}
}