hparfr / prestashopBridge

External authentication for Prestashop

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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/');
	}
}

About

External authentication for Prestashop

License:MIT License


Languages

Language:PHP 100.0%