IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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
    Homme Profil pro
    personnage virtuel
    Inscrit en
    Mars 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : personnage virtuel
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2015
    Messages : 33
    Points : 34
    Points
    34
    Par défaut 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.

    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
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    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
    Homme Profil pro
    personnage virtuel
    Inscrit en
    Mars 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : personnage virtuel
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2015
    Messages : 33
    Points : 34
    Points
    34
    Par défaut
    Merci maestro,

    Je vais tester les deux méthodes.

    Merci

    Ylian

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 53
    Points : 46
    Points
    46
    Par défaut
    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
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Authentification par clé publique/privée
    Par DefmY dans le forum Sécurité
    Réponses: 1
    Dernier message: 02/02/2011, 10h23
  2. [PHP 5.2] Chiffrer clé publique / privée
    Par max-mag dans le forum Langage
    Réponses: 2
    Dernier message: 29/12/2008, 09h27
  3. access publique/privee dans les wrappers
    Par xxiemeciel dans le forum C++/CLI
    Réponses: 2
    Dernier message: 25/07/2007, 16h53
  4. Réponses: 2
    Dernier message: 15/05/2006, 22h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo