CakePHP-Fr.Org

Forum francophone du Framework CakePHP

Vous n'êtes pas identifié.

#1 15-06-2015 10:21:02

peruvio
Chouquette
Date d'inscription: 11-06-2015
Messages: 2

[RESOLU] - Cakephp 3.X et Authentification CAS

Bonjour à tous.

Sur cakephp 3.0, j'essaie d'intégrer l'authentification CAS. Malheureusement j'obtiens l'erreur suivante :

Error: Call to a member function checkAuthenticate() on boolean
File C:\xampp\htdocs\synchro-mdp\src\Controller\AppController.php
Line: 69

Etant nouveau sur cakephp, je ne sais pas trop quoi faire.

Tout d'abord, j'ai installé la librairie phpCAS

Voici l'architecture du projet :
-- mon-projet
    -- vendor
        -- CAS
            -- src
               -- CAS.php et son dossier    (Librairie phpCAS)
    -- plugins
        -- AuthCas
            -- src
                -- Auth
                    -- CasAuthenticate.php   (Mon authentification)

Maintenant voici le contenu des fichiers :
CasAuthenticate.php

Code: php

  1. <?php
  2. namespace AuthCas\Auth;
  3.  
  4. use Cake\Auth\BaseAuthenticate;
  5. use Cake\Core\Configure;
  6. require_once ROOT . DS . 'vendor' . DS . 'CAS' . DS . 'src' . DS . 'CAS.php';
  7.  
  8. class CasAuthenticate extends BaseAuthenticate
  9. {
  10.   private $_userId = NULL;
  11.  
  12.         public function authenticate(Request $request, Response $response)
  13.         {
  14.     phpCAS::forceAuthentication();
  15.     return array('username' => phpCAS::getUser());
  16.         }
  17.  
  18.         public function checkAuthenticate()
  19.   {
  20.     // debugging
  21.     phpCAS::setDebug();
  22.  
  23.     // initialize phpCAS
  24.     phpCAS::client(CAS_VERSION_2_0,
  25.             Configure::read('CAS.hostname'),
  26.             Configure::read('CAS.port'),
  27.             Configure::read('CAS.uri'));
  28.  
  29.     // no SSL validation for the CAS server
  30.     phpCAS::setNoCasServerValidation();
  31.  
  32.     if(phpCAS::checkAuthentication())
  33.     {
  34.       $this->_userId = phpCAS::getUser();
  35.             return true;
  36.     }
  37.  
  38.     return false;
  39.   }

Dans bootstrap.php, j'ai rajouté les lignes suivantes :

Code: php

  1. Plugin::load('AuthCas');
  2. /**
  3. * CAS config
  4. */
  5. Configure::write('CAS.hostname', 'cas.insa-cvl.fr');
  6. Configure::write('CAS.port', 443);
  7. Configure::write('CAS.uri', '/');
  8. Configure::write('CAS.cert_path', '');
  9. Configure::write('CAS.debug_log_enabled', FALSE);

Et enfin dans AppController.php :

Code: php

  1. <?php
  2. namespace App\Controller;
  3.  
  4. use Cake\Controller\Controller;
  5. use Cake\Event\Event;
  6. use AuthCas\Auth;
  7.  
  8. class AppController extends Controller
  9. {
  10.     /**
  11.      * Initialization hook method.
  12.      *
  13.      * Use this method to add common initialization code like loading components.
  14.      *
  15.      * @return void
  16.      */
  17.     public function initialize()
  18.     {
  19.         parent::initialize();
  20.         $this->loadComponent('Flash');
  21.     $this->loadComponent('Auth', [
  22.             'loginRedirect' => [
  23.                 'controller' => 'Articles',
  24.                 'action' => 'index'
  25.             ],
  26.             'logoutRedirect' => [
  27.                 'controller' => 'Pages',
  28.                 'action' => 'display',
  29.                 'home'
  30.             ]
  31.         ]);
  32.     }
  33.  
  34.   public function beforeFilter(Event $event)
  35.     {
  36.     // $this->Auth->allow(['index', 'view', 'display']);
  37.  
  38.     $this->Auth->config('authenticate', [
  39.       'Cas' => [userModel => 'Members'],
  40.       'Form',
  41.     ]);
  42.    
  43.    
  44.     $session = $this->request->session();
  45.     // vérification de la connexion
  46.     if(!$session->check('User.id'))
  47.     { 
  48.       if($this->Cas->checkAuthenticate())
  49.       {
  50.        
  51.       }
  52.          
  53.       // sinon on redirige vers la page de connexion pour utilisateurs locaux
  54.       elseif($this->name != 'users' && $this->action != 'log_in')
  55.       {
  56.         $this->redirect(array('controller' => 'users', 'action' => 'log_in'));
  57.         exit();
  58.       }
  59.     }
  60.         else
  61.         {
  62.       // id de l'utilisateur
  63.       $this->user_id = $session->read('User.id');
  64.         }
  65.  
  66.     }
  67. }

Je suis preneur pour toute information sur le problème, merci d'avance

Hors ligne

 

#2 16-06-2015 08:30:12

peruvio
Chouquette
Date d'inscription: 11-06-2015
Messages: 2

Re: [RESOLU] - Cakephp 3.X et Authentification CAS

Finalement,

Je me suis rendu compte que je n'arrivais pas à charger le plugin, du coup j'ai tout basculé dans un dossier à la racine src/Auth. et cela fonctionne

Hors ligne

 

#3 16-06-2015 10:51:48

cyberbobjr
Baker
Date d'inscription: 13-07-2010
Messages: 625

Re: [RESOLU] - Cakephp 3.X et Authentification CAS

Super, merci pour ton retour, ca pourra en aider d'autres... bonne journée !


Développeur freelance et disponible, contactez-moi en privé.
Mon blog CakePHP : http://caketuts.key-conseil.fr

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr