Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MkFramework Discussion :

plugin auth pages publiques/privées.


Sujet :

MkFramework

  1. #1
    Nouveau membre du Club
    plugin auth pages publiques/privées.
    Bonjour,

    Petit retour d'expérience et question concernant mon projet.

    Je réalise un site avec un espace public et un espace privé. Je gère donc ça, avec les informations précieuses apportées par imikado, avec le module auth.

    Pour permettre l'espace public, dans la configuration, l'authentification est désactivée.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
    [auth]
    enabled=0


    Sur les pages qui nécessitent un espace privé, j'ajoute une méthode before dans le main.php, et j'active l'authentification.
    Le plugin s'occupe de tout le reste.
    exemple
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function before_mshow()
    		{	
    		_root::getAuth()->enable();
    		}


    Et le tour est joué.

    Maintenant, il me reste à gérer un cas, celui des pages mixes.
    Ce sont des pages visibles par tous mais sur lesquelles je voudrais désactiver des fonctionnalités réservées aux personnes connectées.

    Logiquement, je voudrais tester ceci
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    if (_root::getAuth() ) {
         if (_root::getAuth()->isConnected ()) {
         //user connecté
         }
        else  {
        }
    }
     
    Mais ça ne fonctionne pas, car si le mode connecté n'a pas été activé pour cette page à l'aide de la méthode enable du plugin auth, l'objet _root::getAuth n'est pas accessible (logique).
     
    Donc la question est la suivante : Comment récupérer les informations de connexion sur cette page mixte ?
     
    Je vois deux pistes, imikado pourra peut-être m'aiguiller.
     
    piste 1 : activer le module auth sur la page mixte, mais bypasser la redirection vers la page de login.
     
    piste2 : récupérer les informations de connexion sans passer par le module auth (session ?)
     
    Merci de vos lumières.
     
    Ylian

  2. #2
    Rédacteur

    En effet il manque "juste" le demarrage de la session
    via _root::startSession();

    vous pouvez modifier votre code ainsi:
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    _root::startSession();
     
    if (_root::getAuth() ) {
         if (_root::getAuth()->isConnected ()) {
         //user connecté
         }
        else  {
        }
    }



    Petit précision pour cette remarque:
    Pour permettre l'espace public, dans la configuration, l'authentification est désactivée.
    Vous pouvez activer l'authentification sur l'ensemble du site et definir des modules "public" (en utilisant la variable module.disabled.list)
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [auth]
    (...)
    enabled=1
    class=plugin_auth
    module=auth::login
    ;liste des modules non concerne par l'auth: separe par des virgules
    module.disabled.list=
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Nouveau membre du Club
    Merci maestro,

    Je vais tester les deux méthodes.

    Merci

    Ylian

  4. #4
    Membre du Club
    Citation Envoyé par imikado Voir le message
    En effet il manque "juste" le demarrage de la session
    via _root::startSession();

    vous pouvez modifier votre code ainsi:
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    _root::startSession();
     
    if (_root::getAuth() ) {
         if (_root::getAuth()->isConnected ()) {
         //user connecté
         }
        else  {
        }
    }


    Moi j'avais trouvé cette solution pour les boutons connexion/deconnexion

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    if(isset(_root::getAuth()->getAccount()->id))
    {
    	echo "<a href='#' class='btn btn-default btn-lg'>Deconnexion</a>";
    }
     
    else 
    {
            echo "<a href='#' class='btn btn-default btn-lg'>Connexion</a>";
    }
    ?>



    Mais Est-il possible de le faire dans dans le layout?!

  5. #5
    Rédacteur

    Oui vous pouvez mettre ce code dans le layout

    Comme ça appelle _root::getAuth() c'est un appel statique à la classe _root, il peut donc etre fait de n'importe où
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

###raw>template_hook.ano_emploi###