prestashopBridge
prestashopBridge copied to clipboard
External authentication for Prestashop
prestashopBridge
Allow Prestashop to work nicely with your existing PHP Application (Drupal, Symfony, Joomla, Wordpress, ...).
Use your authentication mechansim of choice with prestashop (SSO, Oauth, 2-factor, ... )
Benefits:
- customers don't have to create an account in Prestashop
- customers authenticate only in your application
Features:
- Login / Logout customers
- Create customers
- Create carts
Requirements:
- should be installed in the same server than prestashop (because some Prestashop code is loaded with include() )
- should be served from the same domain:port than Prestashop (because of the auth cookie)
En Français
Ce projet vous est utile si vous voulez que :
- vos clients n'aient qu'un seul mot de passe pour votre site et pour votre boutique
- vos que vos clients ne s'authentifient que par votre site
- utiliser une autre méthode d'authentification (2-facteurs, OAuth, CAS, ...) que celles proposent par Prestashop.
Fonctionnalités :
- connecter un client
- déconnecter un client
- créer des clients dans la base de prestashop
- créer des commandes (optionnellement avec des références)
Contraintes :
- Doit être installé sur le même serveur que Prestashop (car utilise quelques fonctions internes de prestashop - via include() )
- Doit être servi depuis le même nom de domaine / port que Prestashop (à cause du cookie d'authentification)
Installation
In your composer.json:
{
"require": {
"hpar/prestashop-bridge": "dev-master"
},
"repositories": [{
"type": "vcs",
"url": "https://github.com/hparfr/prestashopBridge.git"
}]
}
Example
In a symfony application:
<?php
namespace Acme\DemoBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Hpar\PrestashopBridge\PrestashopBridge;
class PrestashopBridgeExampleController extends Controller
{
public function loginAction()
{
if (!$this->get('security.context')->isGranted('ROLE_USER')) {
throw new AccessDeniedException();
}
$prestaBridge = new PrestashopBridge('/path/to/prestashop/', 1);
$user = $this->getUser(); //get connected user
if (!$prestaBridge->userExist($user->getEmail())) //if user exist in prestahop database
$prestaBridge->createUser(
$user->getEmail(),
$user->getLastName(),
$user->getFirstName()
);
$prestaBridge->login($user->getEmail());
return $this->redirect('http://prestashop_url/');
}
}