Attribut Redirect


1Présentation

Cet attribut permet de forcer une redirection, empêchant systématiquement l'accès à un contrôleur ou une action. Cela peut être utile en période de débogage, ou pour désactiver temporairement l'accès à une portion de code.


2Paramètres

L'attribut propose plusieurs paramètres :

  • $url : (string) URL de redirection.
  • $var : (string) Nom de la variable de template contenant l'URL de redirection.

3Priorité

Pour définir l'URL vers laquelle l'utilisateur va être redirigé, l'attribut applique l'ordre de priorité suivant :

  1. Si le paramètre $url est défini, il est utilisé.
  2. Si le paramètre $var est défini, et qu'il contient le nom d'une variable de template qui existe et est non vide, le contenu de celle-ci est utilisé.
  3. Si le fichier etc/temma.php contient une configuration étendue x-security, et que celle-ci contient une clé redirect, le contenu de celle-ci est utilisé.

Si aucune URL de redirection n'a été trouvée, une erreur 403 est retournée.


4Configuration

Pour que tous les attributs Redirect redirigent vers la même URL, il suffit de la définir dans le fichier etc/temma.php :

[
    'x-security' => [
        'redirect' => '/temporaryHomepage'
    ]
]

Pour que l'URL de redirection soit la même pour les attributs Auth, Method, Referer et Redirect, il suffit de définir la clé redirect dans la configuration étendue x-security du fichier etc/temma.php :

[
    'x-security' => [
        'redirect' => '/login'
    ]
]

5Exemples

use \Temma\Attributes\Redirect as TµRedirect;

// redirige tous les accès à ce contrôleur
// vers l'URL définie dans le fichier 'etc/temma.php'
#[TµRedirect]
class Login extends \Temma\Web\Controller {
    // ...
}
use \Temma\Attributes\Redirect as TµRedirect;

class Homepage extends \Temma\Web\Controller {
    // redirige vers la nouvelle page d'accueil
    #[TµRedirect('/newHomepage')]
    public function oldHome() { }
}
use \Temma\Attributes\Redirect as TµRedirect;

class Homepage extends \Temma\Web\Controller {
    // initialisation du contrôleur : définition de
    // la variable de template 'homeRedir'
    public function __wakeup() {
        $this['homeRedir'] = '/otherHomepage';
    }

    // redirige vers l'URL définie dans la variable
    // de template 'homeRedir'
    #[TµRedirect(var: 'homeRedir')]
    public function action1() {
        // ...
    }
}