Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 61925ebb38 | |||
| 0bb341b7ce | |||
| 74f2e45edf | |||
| 5d660ebc8b | |||
| a31e49278b | |||
| b13d0d939f | |||
| e470c8dce1 | |||
| 8eeaf240de | |||
| 18144e395c | |||
| f53815aa1a | |||
| bab23a58ac | |||
| 9346635ca7 | |||
| 849b5a999a | |||
| 409be2f0b0 |
@@ -49,7 +49,7 @@
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="competencesModalLabel">Souhaitez-vous sélectionner le métier <span class="metierPopup"></span></h5>
|
||||
<h5 class="modal-title" id="competencesModalLabel">Souhaitez-vous sélectionner le métier <span class="metierPopup"></span>?</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
@@ -64,7 +64,7 @@
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal"
|
||||
onclick="chargerCompetences();">Remplacer</button>
|
||||
onclick="chargerCompetences();">Sélectionner</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="competencesModalLabel">Souhaitez-vous sélectionner le métier <span class="metierPopup"></span></h5>
|
||||
<h5 class="modal-title" id="competencesModalLabel">Souhaitez-vous sélectionner le métier <span class="metierPopup"></span>?</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
@@ -59,7 +59,7 @@
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal"
|
||||
onclick="chargerCompetences();">Remplacer</button>
|
||||
onclick="chargerCompetences();">Sélectionner</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -19,7 +19,8 @@
|
||||
<!-- Title -->
|
||||
<header class="text-center mb-5">
|
||||
<h2 class="h4 mb-0">Connexion</h2>
|
||||
<p>Connectez-vous pour gérer votre compte</p>
|
||||
<p>Connectez-vous pour gérer votre compte </p>
|
||||
{% if erreur %}<p class="text-danger">Votre dernière tentative de connexion a échoué. Vérifiez votre email ou votre mot de passe</p>{% endif %}
|
||||
</header>
|
||||
|
||||
|
||||
|
||||
@@ -36,8 +36,7 @@
|
||||
<li><a class="list-group-item list-group-item-action" href="{{ path('cgu') }}" target="_blank">CGU</a></li>
|
||||
<li><a class="list-group-item list-group-item-action" href="{{ path('politique-confidentialite') }}" target="_blank">Politique de confidentialité</a></li>
|
||||
<li><a class="list-group-item list-group-item-action" href="{{ path('abonnement') }}" >Tarifs</a></li>
|
||||
<li><a class="list-group-item list-group-item-action" href="https://blog.talentstube.com/contact" target="_blank"
|
||||
">Contact</a></li>
|
||||
<li><a class="list-group-item list-group-item-action" href="https://blog.talentstube.com/contact" target="_blank">Contact</a></li>
|
||||
</ul>
|
||||
<!-- End Links -->
|
||||
</div>
|
||||
|
||||
@@ -80,7 +80,8 @@ twig:
|
||||
globals:
|
||||
push_public_key: "%push_params.public_key%"
|
||||
fairlane_cookie_consent: '@fairlane_cookie_consent.twig'
|
||||
version: '%app.version%'
|
||||
version: 'V2.4.0.1'
|
||||
|
||||
|
||||
|
||||
# Swiftmailer Configuration
|
||||
|
||||
@@ -26,7 +26,7 @@ parameters:
|
||||
elastic_host: tt-website.elasticsearch.dev
|
||||
elastic_port: 9200
|
||||
delivery_addresses: l.laniau@talentstube.com
|
||||
app.version: 2.3.4
|
||||
app.version: 2.3.6
|
||||
push_params:
|
||||
push_notification_file_path: '%kernel.root_dir%/../web/push/'
|
||||
push_network_config:
|
||||
|
||||
@@ -31,7 +31,7 @@ parameters:
|
||||
elastic_host: tt-website.elasticsearch.preprod
|
||||
elastic_port: 9200
|
||||
delivery_addresses: l.laniau@talentstube.com
|
||||
app.version: 2.3.4
|
||||
app.version: 2.3.6
|
||||
push_params:
|
||||
push_notification_file_path: '%kernel.root_dir%/../web/push/'
|
||||
push_network_config:
|
||||
|
||||
@@ -30,7 +30,7 @@ parameters:
|
||||
elastic_host: tt-website.elasticsearch.prod
|
||||
elastic_port: 9200
|
||||
delivery_addresses: l.laniau@talentstube.com
|
||||
app.version: 2.3.4
|
||||
app.version: 2.4.0
|
||||
push_params:
|
||||
push_notification_file_path: '%kernel.root_dir%/../web/push/'
|
||||
push_network_config:
|
||||
|
||||
@@ -60,7 +60,8 @@
|
||||
"willdurand/hateoas-bundle": "^1.4",
|
||||
"lexik/jwt-authentication-bundle": "^2.5",
|
||||
"nelmio/cors-bundle": "^1.5",
|
||||
"onurb/doctrine-yuml-bundle": "^1.1"
|
||||
"onurb/doctrine-yuml-bundle": "^1.1",
|
||||
"mailjet/mailjet-apiv3-php": "^1.5"
|
||||
},
|
||||
"require-dev": {
|
||||
"sensio/generator-bundle": "^3.0",
|
||||
|
||||
@@ -17,6 +17,11 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Session\Session;
|
||||
use AppBundle\Entity\Mailjet;
|
||||
use AppBundle\Entity\Response;
|
||||
use AppBundle\Entity\Resources;
|
||||
use AppBundle\Entity\Config;
|
||||
use AppBundle\Entity\Client;
|
||||
|
||||
class CompanyController extends Controller
|
||||
{
|
||||
@@ -222,16 +227,30 @@ class CompanyController extends Controller
|
||||
'message' => $message,
|
||||
'type' => 'html'
|
||||
));
|
||||
$body ="";
|
||||
$email = \Swift_Message::newInstance()
|
||||
->setSubject("Rejoignez l'équipe ".$company->getBrandName()." sur Talents Tube." )
|
||||
->setFrom($this->getParameter('mailer_user'))
|
||||
->setReplyTo($this->getParameter('mailer_user'))
|
||||
->setTo($user->getEmail())
|
||||
->setBody($plainView, 'text/html')
|
||||
// ->addPart($plainView, 'text/plain')
|
||||
;
|
||||
$retour = $this->get('mailer')->send($email);
|
||||
//$body ="";
|
||||
$mj = new Client('355697fac93fca865660734b4fdffaeb', 'ddecf75321ca89c09e561857b13534c8');
|
||||
$body = [
|
||||
'FromEmail' => $this->getParameter('mailer_user'),
|
||||
'FromName' => "Talents Tube",
|
||||
'Subject' => "Rejoignez l'équipe ".$company->getBrandName()." sur Talents Tube.",
|
||||
//'Text-part' => "Dear passenger, welcome to Mailjet! May the delivery force be with you!",
|
||||
'Html-part' => $plainView,
|
||||
'Recipients' => [
|
||||
['Email' => $user->getEmail()]
|
||||
]
|
||||
];
|
||||
$response = $mj->post(Resources::$Email, ['body' => $body]);
|
||||
$response->success() && var_dump($response->getData());
|
||||
|
||||
// $email = \Swift_Message::newInstance()
|
||||
// ->setSubject("Rejoignez l'équipe ".$company->getBrandName()." sur Talents Tube." )
|
||||
// ->setFrom($this->getParameter('mailer_user'))
|
||||
// ->setReplyTo($this->getParameter('mailer_user'))
|
||||
// ->setTo($user->getEmail())
|
||||
// ->setBody($plainView, 'text/html')
|
||||
// // ->addPart($plainView, 'text/plain')
|
||||
// ;
|
||||
// $retour = $this->get('mailer')->send($email);
|
||||
//var_dump($mailManager);
|
||||
return $this->redirectToRoute('users');
|
||||
}else{
|
||||
|
||||
@@ -6,7 +6,11 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\Security\Core\Exception\AuthenticationException;
|
||||
use Symfony\Component\Security\Core\Security;
|
||||
|
||||
use AppBundle\Entity\Mailjet;
|
||||
use AppBundle\Entity\Response;
|
||||
use AppBundle\Entity\Resources;
|
||||
use AppBundle\Entity\Config;
|
||||
use AppBundle\Entity\Client;
|
||||
class DefaultController extends Controller
|
||||
{
|
||||
/**
|
||||
@@ -69,7 +73,27 @@ class DefaultController extends Controller
|
||||
*/
|
||||
public function homepagev2Action(Request $request)
|
||||
{
|
||||
//$em = $this->getDoctrine()->getManager();
|
||||
|
||||
//US444
|
||||
// $mj = new Client('805b8adce80bc6aa9422ddff20bb4171', 'f3bce955f21bc9456d65245c50e8c512');
|
||||
// $body = [
|
||||
// 'FromEmail' => "l.laniau@talentstube.com",
|
||||
// 'FromName' => "Mailjet Pilot",
|
||||
// 'Subject' => "Your email flight plan!",
|
||||
// 'MJ-TemplateID' =>2087555 ,
|
||||
// 'MJ-TemplateLanguage' => true,
|
||||
// 'Recipients' => [
|
||||
// ['Email' => "l.laniau@talentstube.com", 'Vars' => ['lien' => 'www.talentstube.com']]
|
||||
// ]
|
||||
// ];
|
||||
// $response = $mj->post(Resources::$Email, ['body' => $body]);
|
||||
// $response->success() && var_dump($response->getData());
|
||||
// dump($response);
|
||||
//FIN US444
|
||||
|
||||
|
||||
|
||||
//$em = $this->getDoctrine()->getManager();
|
||||
// $ads = $em->getRepository('AppBundle:Ad')->findBy(array("status" => "PUBLISHED", "emphasis" => true, "isPromoted" => false), array('emphasisOrder' => 'DESC'));
|
||||
// if (!$ads) {
|
||||
// $ads = $em->getRepository('AppBundle:Ad')->findBy(array("status" => "PUBLISHED", "isPromoted" => false), array('id' => 'DESC'));
|
||||
@@ -111,14 +135,20 @@ class DefaultController extends Controller
|
||||
$csrfToken = $params["csrfToken"];
|
||||
$error = $params["error"];
|
||||
$destination_login = "admin/dashboard";
|
||||
|
||||
$erreur = false;
|
||||
if($request->query->get('erreur')){
|
||||
$erreur = $request->query->get('erreur');
|
||||
}
|
||||
//$mj = new \Mailjet\Client('805b8adce80bc6aa9422ddff20bb4171', 'f3bce955f21bc9456d65245c50e8c512');
|
||||
//dump($mj);
|
||||
//var_dump($mailManager);
|
||||
return $this->render(
|
||||
'defaultv2/accueil/index.html.twig', [
|
||||
'last_username' => $usename,
|
||||
'csrf_token' => $csrfToken,
|
||||
'error' => $error,
|
||||
'destination_login' => $destination_login
|
||||
'destination_login' => $destination_login,
|
||||
'erreur' => $erreur
|
||||
//'ads' => $ads,
|
||||
//'companies' => $arrayCompany,
|
||||
//'talents' => $arrayTalents,
|
||||
@@ -331,17 +361,17 @@ class DefaultController extends Controller
|
||||
|
||||
return $this->redirectToRoute('admin_dashboard');
|
||||
} elseif ($user->hasRole('ROLE_TALENT')) {
|
||||
|
||||
return $this->redirectToRoute('talent_dashboard');
|
||||
return $this->redirect('https://www.talentstube.com');
|
||||
//return $this->redirectToRoute('talent_dashboard');
|
||||
} elseif ($user->hasRole('ROLE_COMPANY')) {
|
||||
|
||||
return $this->redirectToRoute('company_dashboard');
|
||||
return $this->redirectToRoute('company_profile');
|
||||
}
|
||||
} else {
|
||||
|
||||
return $this->redirectToRoute('homepage');
|
||||
return $this->redirectToRoute('/homepage');
|
||||
}
|
||||
return $this->redirectToRoute('homepage');
|
||||
return $this->redirectToRoute('/homepage');
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,425 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* Copyright (C) 2013 Mailgun
|
||||
*
|
||||
* This software may be modified and distributed under the terms
|
||||
* of the MIT license. See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace AppBundle\Entity;
|
||||
|
||||
class Client
|
||||
{
|
||||
const WRAPPER_VERSION = Config::WRAPPER_VERSION;
|
||||
|
||||
/**
|
||||
* connect_timeout: (float, default=2) Float describing the number of
|
||||
* seconds to wait while trying to connect to a server. Use 0 to wait
|
||||
* indefinitely (the default behavior).
|
||||
*/
|
||||
const CONNECT_TIMEOUT = 'connect_timeout';
|
||||
|
||||
/**
|
||||
* timeout: (float, default=15) Float describing the timeout of the
|
||||
* request in seconds. Use 0 to wait indefinitely (the default behavior).
|
||||
*/
|
||||
const TIMEOUT = 'timeout';
|
||||
|
||||
/**
|
||||
* proxy: (array, default=none) Array describing the proxy options used by guzzle client
|
||||
* See guzzle-http for specification.
|
||||
*/
|
||||
const PROXY = 'proxy';
|
||||
|
||||
private $apikey;
|
||||
private $apisecret;
|
||||
private $apitoken;
|
||||
private $version = Config::MAIN_VERSION;
|
||||
private $url = Config::MAIN_URL;
|
||||
private $secure = Config::SECURED;
|
||||
private $call = true;
|
||||
private $settings = [];
|
||||
private $changed = false;
|
||||
private $requestOptions = [
|
||||
self::TIMEOUT => 15,
|
||||
self::CONNECT_TIMEOUT => 2,
|
||||
];
|
||||
private $smsResources = [
|
||||
'send',
|
||||
'sms',
|
||||
'sms-send',
|
||||
];
|
||||
private $dataAction = [
|
||||
'csverror/text:csv',
|
||||
'csvdata/text:plain',
|
||||
'JSONError/application:json/LAST',
|
||||
];
|
||||
|
||||
/**
|
||||
* Client constructor requires:.
|
||||
*
|
||||
* @param string $key Mailjet API Key
|
||||
* @param string|null $secret Mailjet API Secret
|
||||
* @param bool $call performs the call or not
|
||||
* @param array $settings
|
||||
*/
|
||||
public function __construct(string $key, string $secret = null, bool $call = true, array $settings = [])
|
||||
{
|
||||
$this->setAuthentication($key, $secret, $call, $settings);
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger a POST request.
|
||||
*
|
||||
* @param array $resource Mailjet Resource/Action pair
|
||||
* @param array $args Request arguments
|
||||
* @param array $options
|
||||
* @return Response
|
||||
*/
|
||||
public function post(array $resource, array $args = [], array $options = []): Response
|
||||
{
|
||||
if (!empty($options)) {
|
||||
$this->setOptions($options, $resource);
|
||||
}
|
||||
|
||||
$result = $this->_call('POST', $resource[0], $resource[1], $args);
|
||||
|
||||
if (!empty($this->changed)) {
|
||||
$this->setSettings();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger a GET request.
|
||||
*
|
||||
* @param array $resource Mailjet Resource/Action pair
|
||||
* @param array $args Request arguments
|
||||
* @param array $options
|
||||
* @return Response
|
||||
*/
|
||||
public function get(array $resource, array $args = [], array $options = []): Response
|
||||
{
|
||||
if (!empty($options)) {
|
||||
$this->setOptions($options, $resource);
|
||||
}
|
||||
|
||||
$result = $this->_call('GET', $resource[0], $resource[1], $args);
|
||||
|
||||
if (!empty($this->changed)) {
|
||||
$this->setSettings();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger a POST request.
|
||||
*
|
||||
* @param array $resource Mailjet Resource/Action pair
|
||||
* @param array $args Request arguments
|
||||
* @param array $options
|
||||
* @return Response
|
||||
*/
|
||||
public function put(array $resource, array $args = [], array $options = []): Response
|
||||
{
|
||||
if (!empty($options)) {
|
||||
$this->setOptions($options, $resource);
|
||||
}
|
||||
|
||||
$result = $this->_call('PUT', $resource[0], $resource[1], $args);
|
||||
|
||||
if (!empty($this->changed)) {
|
||||
$this->setSettings();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger a GET request.
|
||||
*
|
||||
* @param array $resource Mailjet Resource/Action pair
|
||||
* @param array $args Request arguments
|
||||
* @param array $options
|
||||
* @return Response
|
||||
*/
|
||||
public function delete(array $resource, array $args = [], array $options = []): Response
|
||||
{
|
||||
if (!empty($options)) {
|
||||
$this->setOptions($options, $resource);
|
||||
}
|
||||
|
||||
$result = $this->_call('DELETE', $resource[0], $resource[1], $args);
|
||||
|
||||
if (!empty($this->changed)) {
|
||||
$this->setSettings();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets if we need to use https or http protocol while using API Url.
|
||||
*
|
||||
* @param bool|mixed $bIsSecured True use https / false use http
|
||||
*
|
||||
* @return bool true if we set value false otherwise
|
||||
*/
|
||||
public function setSecureProtocol($bIsSecured = null): bool
|
||||
{
|
||||
if (\is_bool($bIsSecured)) {
|
||||
$this->secure = $bIsSecured;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set HTTP request Timeout.
|
||||
* @param int $timeout
|
||||
*/
|
||||
public function setTimeout(int $timeout): void
|
||||
{
|
||||
$this->requestOptions[self::TIMEOUT] = $timeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set HTTP proxy options
|
||||
* See: http://docs.guzzlephp.org/en/stable/request-options.html#proxy.
|
||||
* @param array $proxyArray
|
||||
*/
|
||||
public function setHttpProxy(array $proxyArray): void
|
||||
{
|
||||
$this->requestOptions[self::PROXY] = $proxyArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set HTTP connection Timeout.
|
||||
* @param int $timeout
|
||||
*/
|
||||
public function setConnectionTimeout(int $timeout): void
|
||||
{
|
||||
$this->requestOptions[self::CONNECT_TIMEOUT] = $timeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get HTTP request Timeout
|
||||
* $return int|null.
|
||||
*/
|
||||
public function getTimeout(): ?int
|
||||
{
|
||||
return $this->requestOptions[self::TIMEOUT];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get HTTP connection Timeout
|
||||
* $return int|null.
|
||||
*/
|
||||
public function getConnectionTimeout(): ?int
|
||||
{
|
||||
return $this->requestOptions[self::CONNECT_TIMEOUT];
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a HTTP request option.
|
||||
*
|
||||
* @param string $key
|
||||
* @param mixed $value
|
||||
* [IMPORTANT]Default options will be overwritten
|
||||
* if such option is provided
|
||||
*
|
||||
* @see \GuzzleHttp\RequestOptions for a list of available request options.
|
||||
*/
|
||||
public function addRequestOption(string $key, $value): void
|
||||
{
|
||||
if ((null !== $key) && (null !== $value)) {
|
||||
$this->requestOptions[$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get HTTP connection options
|
||||
* $return array.
|
||||
*/
|
||||
public function getRequestOptions(): array
|
||||
{
|
||||
return $this->requestOptions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set auth.
|
||||
*
|
||||
* @param string $key
|
||||
* @param string|null $secret
|
||||
* @param bool $call
|
||||
* @param array $settings
|
||||
*/
|
||||
private function setAuthentication(string $key, string $secret, bool $call, array $settings = []): void
|
||||
{
|
||||
$isBasicAuth = $this->isBasicAuthentication($key, $secret);
|
||||
|
||||
if ($isBasicAuth) {
|
||||
$this->apikey = $key;
|
||||
$this->apisecret = $secret;
|
||||
} else {
|
||||
$this->apitoken = $key;
|
||||
$this->version = Config::SMS_VERSION;
|
||||
}
|
||||
|
||||
$this->initSettings($call, $settings);
|
||||
$this->setSettings();
|
||||
}
|
||||
|
||||
/**
|
||||
* Magic method to call a mailjet resource.
|
||||
*
|
||||
* @param string $method Http method
|
||||
* @param string $resource mailjet resource
|
||||
* @param string $action mailjet resource action
|
||||
* @param array $args Request arguments
|
||||
*
|
||||
* @return Response server response
|
||||
*/
|
||||
private function _call(string $method, string $resource, string $action, array $args): Response
|
||||
{
|
||||
$args = array_merge([
|
||||
'id' => '',
|
||||
'actionid' => '',
|
||||
'filters' => [],
|
||||
'body' => 'GET' === $method ? null : '{}',
|
||||
], array_change_key_case($args));
|
||||
|
||||
$url = $this->buildURL($resource, $action, (string) $args['id'], $args['actionid']);
|
||||
|
||||
$contentType = ('csvdata/text:plain' === $action || 'csverror/text:csv' === $action) ? 'text/plain' : 'application/json';
|
||||
|
||||
$isBasicAuth = $this->isBasicAuthentication($this->apikey, $this->apisecret);
|
||||
$auth = $isBasicAuth ? [$this->apikey, $this->apisecret] : [$this->apitoken];
|
||||
|
||||
$request = new Request(
|
||||
$auth,
|
||||
$method,
|
||||
$url,
|
||||
$args['filters'],
|
||||
$args['body'],
|
||||
$contentType,
|
||||
$this->requestOptions
|
||||
);
|
||||
|
||||
return $request->call($this->call);
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the base API url depending on wether user need a secure connection
|
||||
* or not.
|
||||
*
|
||||
* @return string the API url;
|
||||
*/
|
||||
private function getApiUrl(): string
|
||||
{
|
||||
$h = true === $this->secure ? 'https' : 'http';
|
||||
|
||||
return sprintf('%s://%s/%s/', $h, $this->url, $this->version);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks that both parameters are strings, which means
|
||||
* that basic authentication will be required.
|
||||
*
|
||||
* @param string $key
|
||||
* @param string $secret
|
||||
* @return bool flag
|
||||
*/
|
||||
private function isBasicAuthentication(string $key, string $secret): bool
|
||||
{
|
||||
return !empty($key) && !empty($secret);
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the final call url without query strings.
|
||||
*
|
||||
* @param string $resource Mailjet resource
|
||||
* @param string $action Mailjet resource action
|
||||
* @param string $id mailjet resource id
|
||||
* @param string $actionid mailjet resource actionid
|
||||
*
|
||||
* @return string final call url
|
||||
*/
|
||||
private function buildURL(string $resource, string $action, string $id, string $actionid): string
|
||||
{
|
||||
$path = 'REST';
|
||||
|
||||
if (\in_array($resource, $this->smsResources, true)) {
|
||||
$path = '';
|
||||
} elseif (\in_array($action, $this->dataAction, true)) {
|
||||
$path = 'DATA';
|
||||
} elseif ('v4' === $this->version) {
|
||||
$path = '';
|
||||
}
|
||||
|
||||
$arrayFilter = [$path, $resource, $id, $action, $actionid];
|
||||
|
||||
return $this->getApiUrl().implode('/', array_filter($arrayFilter));
|
||||
}
|
||||
|
||||
/**
|
||||
* Temporary set the variables generating the url.
|
||||
*
|
||||
* @param array $options contain temporary modifications for the client
|
||||
* @param array $resource may contain the version linked to the resource
|
||||
*/
|
||||
private function setOptions(array $options, array $resource): void
|
||||
{
|
||||
$this->version = (string) ($options['version'] ?? $resource[2] ?? Config::MAIN_VERSION);
|
||||
$this->url = (string) ($options['url'] ?? Config::MAIN_URL);
|
||||
$this->secure = $options['secured'] ?? Config::SECURED;
|
||||
$this->call = $options['call'] ?? true;
|
||||
$this->changed = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* set back the variables generating the url.
|
||||
*/
|
||||
private function setSettings(): void
|
||||
{
|
||||
if (!empty($this->settings['url']) && \is_string($this->settings['url'])) {
|
||||
$this->url = $this->settings['url'];
|
||||
}
|
||||
|
||||
if (!empty($this->settings['version']) && \is_string($this->settings['version'])) {
|
||||
$this->version = $this->settings['version'];
|
||||
}
|
||||
|
||||
if (isset($this->settings['call']) && \is_bool($this->settings['call'])) {
|
||||
$this->call = $this->settings['call'];
|
||||
}
|
||||
|
||||
if (isset($this->settings['secured']) && \is_bool($this->settings['secured'])) {
|
||||
$this->secure = $this->settings['secured'];
|
||||
}
|
||||
|
||||
$this->changed = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a backup if the variables generating the url are change during a call.
|
||||
* @param bool $call
|
||||
* @param array $settings
|
||||
*/
|
||||
private function initSettings(bool $call, array $settings = []): void
|
||||
{
|
||||
$this->settings['url'] = $settings['url'] ?? $this->url;
|
||||
$this->settings['version'] = $settings['version'] ?? $this->version;
|
||||
$this->settings['call'] = $call;
|
||||
$this->settings['secured'] = $settings['secured'] ?? $this->secure;
|
||||
|
||||
$this->changed = false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* Copyright (C) 2013 Mailgun
|
||||
*
|
||||
* This software may be modified and distributed under the terms
|
||||
* of the MIT license. See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace AppBundle\Entity;
|
||||
|
||||
class Config
|
||||
{
|
||||
const WRAPPER_VERSION = 'v2.0.0';
|
||||
const USER_AGENT = 'mailjet-apiv3-php/';
|
||||
const MAIN_VERSION = 'v3';
|
||||
const MAIN_URL = 'api.mailjet.com';
|
||||
const SECURED = true;
|
||||
const SMS_VERSION = 'v4';
|
||||
}
|
||||
@@ -0,0 +1,593 @@
|
||||
<?php
|
||||
namespace AppBundle\Entity;
|
||||
/**
|
||||
* Mailjet Public API
|
||||
*
|
||||
* @package API v0.3
|
||||
* @author Mailjet
|
||||
* @link http://api.mailjet.com/
|
||||
*
|
||||
* For PHP v >= 5.3
|
||||
*
|
||||
*/
|
||||
|
||||
class Mailjet
|
||||
{
|
||||
# Wrapper version, changed for each release
|
||||
const WRAPPER_VERSION = '1.1.0';
|
||||
|
||||
# Mailjet API version
|
||||
var $version = 'v3';
|
||||
|
||||
# Connect with https protocol
|
||||
var $secure = true;
|
||||
|
||||
# Mode debug ? 0 : none; 1 : errors only; 2 : all
|
||||
var $debug = 0;
|
||||
|
||||
# Edit with your Mailjet API keys (you can find them here : https://app.mailjet.com/account/api_keys)
|
||||
var $apiKey = '';
|
||||
var $secretKey = '';
|
||||
|
||||
// Ressources arrays
|
||||
|
||||
/*
|
||||
* Newsletter resources
|
||||
*/
|
||||
private static $_newsletterResources = array(
|
||||
"newsletterDetailContent",
|
||||
"newsletterSend",
|
||||
"newsletterSchedule",
|
||||
"newsletterTest",
|
||||
"newsletterStatus"
|
||||
);
|
||||
|
||||
/*
|
||||
* Contact resources
|
||||
* "contactManageManyContacts" not in as it is a special case.
|
||||
*/
|
||||
private static $_contactResources = array(
|
||||
"contactManageContactsLists",
|
||||
"contactGetContactsLists"
|
||||
);
|
||||
|
||||
/*
|
||||
* Contactslist resources
|
||||
*/
|
||||
private static $_contactslistResources = array (
|
||||
"contactslistManageContact",
|
||||
"contactslistManageManyContacts"
|
||||
);
|
||||
|
||||
/*
|
||||
* Template resources
|
||||
*/
|
||||
private static $_templateResources = array (
|
||||
"templateDetailContent"
|
||||
);
|
||||
|
||||
/*
|
||||
* dns resources
|
||||
*/
|
||||
private static $_dnsResources = array (
|
||||
"dnsCheck"
|
||||
);
|
||||
|
||||
# Constructor function
|
||||
public function __construct($apiKey = false, $secretKey = false, $preprod = false)
|
||||
{
|
||||
if ($apiKey) {
|
||||
$this->apiKey = $apiKey;
|
||||
}
|
||||
if ($secretKey) {
|
||||
$this->secretKey = $secretKey;
|
||||
}
|
||||
$this->apiUrl = $this->getApiUrl($preprod);
|
||||
$this->wrapperVersion = $this->readWrapperVersion();
|
||||
}
|
||||
|
||||
private function getApiUrl ($preprod)
|
||||
{
|
||||
if ($preprod)
|
||||
{
|
||||
return (($this->secure) ? 'https' : 'http') . '://api.preprod.mailjet.com/' . $this->version . '0';
|
||||
}
|
||||
else
|
||||
{
|
||||
return (($this->secure) ? 'https' : 'http') . '://api.mailjet.com/' . $this->version;
|
||||
}
|
||||
}
|
||||
|
||||
public function curl_setopt_custom_postfields($curl_handle, $postfields, $headers = null) {
|
||||
$algos = hash_algos();
|
||||
$hashAlgo = null;
|
||||
|
||||
foreach (array('sha1', 'md5') as $preferred) {
|
||||
if (in_array($preferred, $algos)) {
|
||||
$hashAlgo = $preferred;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($hashAlgo === null) {
|
||||
list($hashAlgo) = $algos;
|
||||
}
|
||||
|
||||
$boundary =
|
||||
'----------------------------' .
|
||||
substr(hash($hashAlgo, 'cURL-php-multiple-value-same-key-support' . microtime()), 0, 12);
|
||||
|
||||
$body = array();
|
||||
$crlf = "\r\n";
|
||||
|
||||
foreach ($postfields as $key => $value) {
|
||||
if (is_array($value)) {
|
||||
foreach ($value as $filename => $path) {
|
||||
// attachment
|
||||
if (strpos($path, '@') === 0) {
|
||||
preg_match('/^@(.*?)$/', $path, $matches);
|
||||
list($dummy, $path) = $matches;
|
||||
|
||||
if (is_int($filename)) {
|
||||
$filename = basename($path);
|
||||
}
|
||||
|
||||
$body[] = '--' . $boundary;
|
||||
$body[] = 'Content-Disposition: form-data; name="' . $key . '"; filename="' . $filename . '"';
|
||||
$body[] = 'Content-Type: application/octet-stream';
|
||||
$body[] = '';
|
||||
$body[] = file_get_contents($path);
|
||||
}
|
||||
// Array of recipients
|
||||
else if ('to' == $key || 'cc' == $key || 'bcc' == $key) {
|
||||
$body[] = '--' . $boundary;
|
||||
$body[] = 'Content-Disposition: form-data; name="' . $key . '"';
|
||||
$body[] = '';
|
||||
$body[] = trim($path);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$body[] = '--' . $boundary;
|
||||
$body[] = 'Content-Disposition: form-data; name="' . $key . '"';
|
||||
$body[] = '';
|
||||
$body[] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
$body[] = '--' . $boundary . '--';
|
||||
$body[] = '';
|
||||
$contentType = 'multipart/form-data; boundary=' . $boundary;
|
||||
$content = join($crlf, $body);
|
||||
$contentLength = strlen($content);
|
||||
|
||||
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Length: ' . $contentLength,
|
||||
'Expect: 100-continue',
|
||||
'Content-Type: ' . $contentType,
|
||||
));
|
||||
|
||||
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $content);
|
||||
}
|
||||
|
||||
public function __call($resource, $args)
|
||||
{
|
||||
# Parameters array
|
||||
$params = (sizeof($args) > 0) ? $args[0] : array();
|
||||
|
||||
# Request method, GET by default
|
||||
if (isset($params["method"]))
|
||||
{
|
||||
$request = strtoupper($params["method"]);
|
||||
unset($params['method']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$request = 'GET';
|
||||
}
|
||||
|
||||
# Request ID, empty by default
|
||||
$id = isset($params["ID"]) ? $params["ID"] : '';
|
||||
|
||||
/*
|
||||
Using SendAPI without the "to" parameter but with "cc" AND/OR "bcc"
|
||||
Our API needs the "to" parameter filled to send email
|
||||
We give it a default value with an email @example.org. See http://en.wikipedia.org/wiki/Example.com
|
||||
*/
|
||||
if ($resource == "sendEmail" && (empty($params["to"]) && (!empty($params["cc"]) || !empty($params["bcc"])))) {
|
||||
$params["to"] = "mailjet@example.org";
|
||||
}
|
||||
|
||||
if ($id == '')
|
||||
{
|
||||
# Request Unique field, empty by default
|
||||
$unique = isset($params["unique"]) ? $params["unique"] : '';
|
||||
unset($params["unique"]);
|
||||
# Make request
|
||||
$result = $this->sendRequest($resource, $params, $request, $unique);
|
||||
}
|
||||
else
|
||||
{
|
||||
# Make request
|
||||
$result = $this->sendRequest($resource, $params, $request, $id);
|
||||
}
|
||||
|
||||
# Return result
|
||||
$return = ($result === true) ? $this->_response : false;
|
||||
if ($this->debug == 2 || ($this->debug == 1 && $return == false)) {
|
||||
$this->debug();
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param string $method REST or DATA
|
||||
* @param string $resourceBase Base resource
|
||||
* @param int $resourceID Base resource ID
|
||||
* @param string $action Action on resource
|
||||
*
|
||||
* @return string Returns the call's url.
|
||||
*/
|
||||
private function makeUrl($method, $resourceBase, $resourceID, $action)
|
||||
{
|
||||
return $this->apiUrl.'/'.$method.'/'.$resourceBase.'/'.$resourceID.'/'.strtolower($action);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param string $method REST or DATA
|
||||
* @param string $resourceBase Base resource
|
||||
* @param int $resourceID Base resource ID
|
||||
* @param string $resource The whole resource, before parsing
|
||||
*
|
||||
* @return string Returns the call's url.
|
||||
*/
|
||||
private function makeUrlFromFilter($method, $resourceBase, $resourceID, $resource)
|
||||
{
|
||||
$matches = array();
|
||||
preg_match('/'.$resourceBase.'([a-zA-Z]+)/', $resource, $matches);
|
||||
|
||||
$action = $matches[1];
|
||||
return $this->makeUrl($method, $resourceBase, $resourceID, $action);
|
||||
}
|
||||
|
||||
public function requestUrlBuilder($resource, $params = array(), $request, $id)
|
||||
{
|
||||
if ($resource == "sendEmail") {
|
||||
$this->call_url = $this->apiUrl."/send/message";
|
||||
}
|
||||
else if ($resource == "send") {
|
||||
$this->call_url = $this->apiUrl."/send"; //json support for SendAPI
|
||||
}
|
||||
else if ($resource == "uploadCSVContactslistData") {
|
||||
if (!empty($params['_contactslist_id'])) {
|
||||
$contactslist_id = $params['_contactslist_id'];
|
||||
}
|
||||
else if (!empty($params['ID'])) {
|
||||
$contactslist_id = $params['ID'];
|
||||
}
|
||||
$this->call_url = $this->makeUrl('DATA', 'Contactslist', $contactslist_id, 'CSVData/text:plain'); // Was $this->call_url = $this->apiUrl."/DATA/contactslist/". $contactslist_id ."/CSVData/text:plain";
|
||||
}
|
||||
else if (($resource == "addHTMLbody") || ($resource == "getHTMLbody")) {
|
||||
if (!empty($params['_newsletter_id'])) {
|
||||
$newsletter_id = $params['_newsletter_id'];
|
||||
}
|
||||
else if (!empty($params['ID'])) {
|
||||
$newsletter_id = $params['ID'];
|
||||
}
|
||||
$this->call_url = $this->makeUrl('DATA', 'NewsLetter', $newsletter_id, 'HTML/text/html/LAST');
|
||||
}
|
||||
else if (in_array($resource, self::$_newsletterResources))
|
||||
{
|
||||
$this->call_url = $this->makeUrlFromFilter('REST', 'newsletter', $params['ID'], $resource); // Was $this->call_url = $this->apiUrl."/REST/newsletter/". $newsletter_id ."/".strtolower($action);
|
||||
}
|
||||
else if (in_array($resource, self::$_templateResources))
|
||||
{
|
||||
$this->call_url = $this->makeUrlFromFilter('REST', 'template', $params['ID'], $resource);
|
||||
}
|
||||
else if (in_array($resource, self::$_dnsResources))
|
||||
{
|
||||
$this->call_url = $this->makeUrlFromFilter('REST', 'dns', $params['ID'], $resource);
|
||||
}
|
||||
else if (in_array($resource, self::$_contactResources))
|
||||
{
|
||||
$this->call_url = $this->makeUrlFromFilter('REST', 'contact', $params['ID'], $resource); // Was $this->call_url = $this->apiUrl."/REST/contact/". $contact_id . "/".strtolower($action);
|
||||
}
|
||||
else if ($resource == "contactManageManyContacts")
|
||||
{
|
||||
$this->call_url = $this->apiUrl."/REST/contact/managemanycontacts";
|
||||
}
|
||||
else if (in_array($resource, self::$_contactslistResources))
|
||||
{
|
||||
$this->call_url = $this->makeUrlFromFilter('REST', 'contactslist', $params['ID'], $resource); // Was $this->call_url = $this->apiUrl."/REST/contactslist/". $contactslist_id . "/".strtolower($action);
|
||||
}
|
||||
else {
|
||||
$this->call_url = $this->apiUrl . '/REST/' . $resource;
|
||||
}
|
||||
|
||||
if ($request == "GET" || $request == "POST") {
|
||||
if (count($params) > 0)
|
||||
{
|
||||
$this->call_url .= '?';
|
||||
|
||||
foreach ($params as $key => $value) {
|
||||
// In a GET request, put an underscore char in front of params to avoid it being treated as a filter
|
||||
$firstChar = substr($key, 0, -(strlen($key) - 1));
|
||||
|
||||
if ($request == "GET") {
|
||||
$okFirstChar = ($firstChar != "_");
|
||||
$queryStringKey = $key;
|
||||
}
|
||||
else {
|
||||
$okFirstChar = ($firstChar == "_");
|
||||
$queryStringKey = substr($key, 1);
|
||||
}
|
||||
|
||||
if ($okFirstChar && ($key != "ID"))
|
||||
{
|
||||
$query_string[$queryStringKey] = $queryStringKey . '=' . urlencode($value);
|
||||
$this->call_url .= $query_string[$queryStringKey] . '&';
|
||||
}
|
||||
}
|
||||
|
||||
$this->call_url = substr($this->call_url, 0, -1);
|
||||
}
|
||||
}
|
||||
|
||||
if (($request == "VIEW" || $request == "DELETE" || $request == "PUT") && $resource != "addHTMLbody" && $resource != "uploadCSVContactslistData")
|
||||
{
|
||||
if ($id != '')
|
||||
{
|
||||
if ($resource == "contactslistManageManyContacts")
|
||||
{
|
||||
$this->call_url .= '/' . $params["JobID"];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->call_url .= '/' . $id;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->call_url;
|
||||
}
|
||||
|
||||
public function sendRequest($resource = false, $params = array(), $request = "GET", $id = '')
|
||||
{
|
||||
# Method
|
||||
$this->_method = $resource;
|
||||
$this->_request = $request;
|
||||
|
||||
# Build request URL
|
||||
$url = $this->requestUrlBuilder($resource, $params, $request, $id);
|
||||
|
||||
// fix bug for sort (ID+DESC), replace %2B in url by +
|
||||
$url = preg_replace('#Sort=(.+)%2B(DESC|ASC|)?#sUi', 'Sort=$1+$2', $url);
|
||||
|
||||
# Set up and execute the curl process
|
||||
$curl_handle = curl_init();
|
||||
curl_setopt($curl_handle, CURLOPT_URL, $url);
|
||||
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'mailjet-api-v3-php-simple/' . $this->wrapperVersion . '; PHP v. ' . phpversion());
|
||||
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, FALSE);
|
||||
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, 2);
|
||||
curl_setopt($curl_handle, CURLOPT_USERPWD, $this->apiKey . ':' . $this->secretKey);
|
||||
|
||||
$this->_request_post = false;
|
||||
|
||||
if (($request == 'POST') || ($request == 'PUT')):
|
||||
curl_setopt($curl_handle, CURLOPT_POST, 1);
|
||||
|
||||
// Exclude filters from payload. See http://stackoverflow.com/questions/4260086/php-how-to-use-array-filter-to-filter-array-keys
|
||||
$paramsFiltered = array_filter(array_keys($params), function($k) {
|
||||
return substr($k, 0, 1) != '_';
|
||||
});
|
||||
$params = array_intersect_key($params, array_flip($paramsFiltered));
|
||||
|
||||
if ($this->debug == 2) {
|
||||
var_dump($params);
|
||||
}
|
||||
|
||||
if ($resource == "sendEmail") {
|
||||
$this->curl_setopt_custom_postfields($curl_handle, $params);
|
||||
}
|
||||
else if ($resource == "addHTMLbody")
|
||||
{
|
||||
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $params['html_content']);
|
||||
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Type: text/html'
|
||||
));
|
||||
}
|
||||
//
|
||||
else if ($resource == "uploadCSVContactslistData")
|
||||
{
|
||||
curl_setopt($curl_handle, CURLOPT_BINARYTRANSFER, TRUE);
|
||||
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $params['csv_content']);
|
||||
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Type: text/plain'
|
||||
));
|
||||
}
|
||||
//
|
||||
else
|
||||
{
|
||||
if ((in_array($resource, self::$_newsletterResources)) ||
|
||||
($resource == "contactManageContactsLists") ||
|
||||
($resource == "contactManageManyContacts") ||
|
||||
(in_array($resource, self::$_contactslistResources)) ||
|
||||
(in_array($resource, self::$_templateResources)) ||
|
||||
(in_array($resource, self::$_dnsResources)))
|
||||
{
|
||||
unset($params['ID']);
|
||||
}
|
||||
|
||||
$j_e = null;
|
||||
if (version_compare(phpversion(), '5.4.0', '<')) {
|
||||
$j_e = str_replace('\\/', '/', json_encode($params));
|
||||
} else {
|
||||
// 64 => unescaped_slashes
|
||||
$j_e = json_encode($params, 64);
|
||||
}
|
||||
|
||||
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $j_e);
|
||||
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Type: application/json'
|
||||
));
|
||||
}
|
||||
$this->_request_post = $params;
|
||||
endif;
|
||||
|
||||
if ($request == 'DELETE') {
|
||||
curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, "DELETE");
|
||||
}
|
||||
|
||||
if ($request == 'PUT') {
|
||||
curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, "PUT");
|
||||
}
|
||||
|
||||
$buffer = curl_exec($curl_handle);
|
||||
|
||||
if ($this->debug == 2) {
|
||||
var_dump($buffer);
|
||||
}
|
||||
|
||||
# Response code
|
||||
$this->_response_code = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE);
|
||||
|
||||
# Close curl process
|
||||
curl_close($curl_handle);
|
||||
|
||||
# Return response
|
||||
if (($this->_response_code == 200) && ($resource == "getHTMLbody")) {
|
||||
$this->_response = $buffer;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* This prevents the rounding error on 32 bits systems with PHP version >= 5.4
|
||||
*/
|
||||
if (defined('JSON_BIGINT_AS_STRING'))
|
||||
{
|
||||
$this->_response = json_decode($buffer, false, 512, JSON_BIGINT_AS_STRING);
|
||||
}
|
||||
else
|
||||
{ // PHP v <= 5.3.* doens't support the fourth parameter of json_decode
|
||||
$this->_response = json_decode($buffer, false, 512);
|
||||
}
|
||||
}
|
||||
|
||||
if ($request == 'POST') {
|
||||
return ($this->_response_code == 201 || $this->_response_code == 200) ? true : false;
|
||||
}
|
||||
if ($request == 'DELETE') {
|
||||
return ($this->_response_code == 204) ? true : false;
|
||||
}
|
||||
return ($this->_response_code == 200) ? true : false;
|
||||
}
|
||||
|
||||
public function debug()
|
||||
{
|
||||
echo '<style type="text/css">';
|
||||
echo '
|
||||
#debugger {width: 100%; font-family: arial;}
|
||||
#debugger table {padding: 0; margin: 0 0 20px; width: 100%; font-size: 11px; text-align: left;border-collapse: collapse;}
|
||||
#debugger th, #debugger td {padding: 2px 4px;}
|
||||
#debugger tr.h {background: #999; color: #fff;}
|
||||
#debugger tr.Success {background:#90c306; color: #fff;}
|
||||
#debugger tr.Error {background:#c30029 ; color: #fff;}
|
||||
#debugger tr.Not-modified {background:orange ; color: #fff;}
|
||||
#debugger th {width: 20%; vertical-align:top; padding-bottom: 8px;}
|
||||
';
|
||||
echo '</style>';
|
||||
|
||||
echo '<div id="debugger">';
|
||||
|
||||
if (isset($this->_response_code)):
|
||||
if (($this->_response_code == 200) || ($this->_response_code == 201) || ($this->_response_code == 204)):
|
||||
echo '<table>';
|
||||
echo '<tr class="Success"><th>Success</th><td></td></tr>';
|
||||
echo '<tr><th>Status code</th><td>' . $this->_response_code . '</td></tr>';
|
||||
|
||||
if (isset($this->_response)):
|
||||
echo '<tr><th>Response</th><td><pre>' . utf8_decode(print_r($this->_response, 1)) . '</pre></td></tr>';
|
||||
endif;
|
||||
|
||||
echo '</table>';
|
||||
elseif ($this->_response_code == 304):
|
||||
echo '<table>';
|
||||
echo '<tr class="Not-modified"><th>Error</th><td></td></tr>';
|
||||
echo '<tr><th>Error no</th><td>' . $this->_response_code . '</td></tr>';
|
||||
echo '<tr><th>Message</th><td>Not Modified</td></tr>';
|
||||
echo '</table>';
|
||||
else:
|
||||
echo '<table>';
|
||||
echo '<tr class="Error"><th>Error</th><td></td></tr>';
|
||||
echo '<tr><th>Error no</th><td>' . $this->_response_code . '</td></tr>';
|
||||
if (isset($this->_response)):
|
||||
if (is_array($this->_response) OR is_object($this->_response)):
|
||||
echo '<tr><th>Status</th><td><pre>' . print_r($this->_response, true) . '</pre></td></tr>';
|
||||
else:
|
||||
echo '<tr><th>Status</th><td><pre>' . $this->_response . '</pre></td></tr>';
|
||||
endif;
|
||||
endif;
|
||||
echo '</table>';
|
||||
endif;
|
||||
endif;
|
||||
|
||||
$call_url = parse_url($this->call_url);
|
||||
|
||||
echo '<table>';
|
||||
echo '<tr class="h"><th>API config</th><td></td></tr>';
|
||||
echo '<tr><th>Protocole</th><td>' . $call_url['scheme'] . '</td></tr>';
|
||||
echo '<tr><th>Host</th><td>' . $call_url['host'] . '</td></tr>';
|
||||
echo '<tr><th>Version</th><td>' . $this->version . '</td></tr>';
|
||||
echo '<tr><th>Wrapper Version</th><td>' . $this->readWrapperVersion() . '</td></tr>';
|
||||
echo '</table>';
|
||||
|
||||
echo '<table>';
|
||||
echo '<tr class="h"><th>Call infos</th><td></td></tr>';
|
||||
echo '<tr><th>Resource</th><td>' . $this->_method . '</td></tr>';
|
||||
echo '<tr><th>Request type</th><td>' . $this->_request . '</td></tr>';
|
||||
echo '<tr><th>Get Arguments</th><td>';
|
||||
|
||||
if (isset($call_url['query'])) {
|
||||
$args = explode("&", $call_url['query']);
|
||||
foreach ($args as $arg) {
|
||||
$arg = explode("=", $arg);
|
||||
echo '' . $arg[0] . ' = <span style="color:#ff6e56;">' . $arg[1] . '</span><br/>';
|
||||
}
|
||||
}
|
||||
|
||||
echo '</td></tr>';
|
||||
|
||||
if ($this->_request_post) {
|
||||
echo '<tr><th>Post Arguments</th><td>';
|
||||
|
||||
foreach ($this->_request_post as $k => $v) {
|
||||
if (is_array($v))
|
||||
{
|
||||
foreach ($v as $key => $value)
|
||||
{
|
||||
echo $key . ' = <span style="color:#ff6e56;">' . $value . '</span><br/>';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $k . ' = <span style="color:#ff6e56;">' . $v . '</span><br/>';
|
||||
}
|
||||
}
|
||||
|
||||
echo '</td></tr>';
|
||||
}
|
||||
|
||||
echo '<tr><th>Call url</th><td>' . $this->call_url . '</td></tr>';
|
||||
echo '</table>';
|
||||
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
private function readWrapperVersion() {
|
||||
return Mailjet::WRAPPER_VERSION;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,189 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* Copyright (C) 2013 Mailgun
|
||||
*
|
||||
* This software may be modified and distributed under the terms
|
||||
* of the MIT license. See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace AppBundle\Entity;
|
||||
|
||||
use GuzzleHttp\Client as GuzzleClient;
|
||||
use GuzzleHttp\Exception\ClientException;
|
||||
use GuzzleHttp\Exception\ServerException;
|
||||
|
||||
class Request extends GuzzleClient
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $method;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $url;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $filters;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $body;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $auth;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $type;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $requestOptions = [];
|
||||
|
||||
/**
|
||||
* Build a new Http request.
|
||||
*
|
||||
* @param array $auth [apikey, apisecret]
|
||||
* @param string $method http method
|
||||
* @param string $url call url
|
||||
* @param array $filters Mailjet resource filters
|
||||
* @param array|null $body Mailjet resource body
|
||||
* @param string $type Request Content-type
|
||||
* @param array $requestOptions
|
||||
*/
|
||||
public function __construct(
|
||||
array $auth,
|
||||
string $method,
|
||||
string $url,
|
||||
array $filters,
|
||||
?array $body,
|
||||
string $type,
|
||||
array $requestOptions = []
|
||||
) {
|
||||
parent::__construct(['defaults' => [
|
||||
'headers' => [
|
||||
'user-agent' => Config::USER_AGENT.PHP_VERSION.'/'.Client::WRAPPER_VERSION,
|
||||
],
|
||||
]]);
|
||||
|
||||
$this->type = $type;
|
||||
$this->auth = $auth;
|
||||
$this->method = $method;
|
||||
$this->url = $url;
|
||||
$this->filters = $filters;
|
||||
$this->body = $body;
|
||||
$this->requestOptions = $requestOptions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger the actual call
|
||||
* TODO: DATA API.
|
||||
*
|
||||
* @param $call
|
||||
*
|
||||
* @return Response the call response
|
||||
*/
|
||||
public function call($call)
|
||||
{
|
||||
$payload = [
|
||||
'query' => $this->filters,
|
||||
('application/json' === $this->type ? 'json' : 'body') => $this->body,
|
||||
];
|
||||
|
||||
$authArgsCount = \count($this->auth);
|
||||
$headers = [
|
||||
'content-type' => $this->type,
|
||||
];
|
||||
|
||||
if ($authArgsCount > 1) {
|
||||
$payload['auth'] = $this->auth;
|
||||
} else {
|
||||
$headers['Authorization'] = 'Bearer '.$this->auth[0];
|
||||
}
|
||||
|
||||
$payload['headers'] = $headers;
|
||||
|
||||
if ((!empty($this->requestOptions)) && (\is_array($this->requestOptions))) {
|
||||
$payload = array_merge_recursive($payload, $this->requestOptions);
|
||||
}
|
||||
|
||||
$response = null;
|
||||
|
||||
if ($call) {
|
||||
try {
|
||||
$response = \call_user_func_array(
|
||||
[$this, strtolower($this->method)],
|
||||
[$this->url, $payload]
|
||||
);
|
||||
} catch (ClientException $e) {
|
||||
$response = $e->getResponse();
|
||||
} catch (ServerException $e) {
|
||||
$response = $e->getResponse();
|
||||
}
|
||||
}
|
||||
|
||||
return new Response($this, $response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filters getters.
|
||||
*
|
||||
* @return array Request filters
|
||||
*/
|
||||
public function getFilters(): array
|
||||
{
|
||||
return $this->filters;
|
||||
}
|
||||
|
||||
/**
|
||||
* Http method getter.
|
||||
*
|
||||
* @return string Request method
|
||||
*/
|
||||
public function getMethod(): string
|
||||
{
|
||||
return $this->method;
|
||||
}
|
||||
|
||||
/**
|
||||
* Call Url getter.
|
||||
*
|
||||
* @return string Request Url
|
||||
*/
|
||||
public function getUrl(): string
|
||||
{
|
||||
return $this->url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Request body getter.
|
||||
*
|
||||
* @return array request body
|
||||
*/
|
||||
public function getBody(): array
|
||||
{
|
||||
return $this->body;
|
||||
}
|
||||
|
||||
/**
|
||||
* Auth getter. to discuss.
|
||||
*
|
||||
* @return array Request auth
|
||||
*/
|
||||
public function getAuth(): array
|
||||
{
|
||||
return $this->auth;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* Copyright (C) 2013 Mailgun
|
||||
*
|
||||
* This software may be modified and distributed under the terms
|
||||
* of the MIT license. See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace AppBundle\Entity;
|
||||
|
||||
/**
|
||||
* PHP version 7.2.
|
||||
*
|
||||
* This is the Mailjet Resources Class
|
||||
*
|
||||
* @category Mailjet_API
|
||||
*
|
||||
* @author Guillaume Badi <gbadi@mailjet.com>
|
||||
* @license MIT https://opensource.org/licenses/MIT
|
||||
*
|
||||
* @see dev.mailjet.com
|
||||
*/
|
||||
class Resources
|
||||
{
|
||||
public static $Email = ['send', ''/*, 'v3.1'*/];
|
||||
public static $Aggregategraphstatistics = ['aggregategraphstatistics', ''];
|
||||
public static $Apikey = ['apikey', ''];
|
||||
public static $Apikeyaccess = ['apikeyaccess', ''];
|
||||
public static $Apikeytotals = ['apikeytotals', ''];
|
||||
public static $Apitoken = ['apitoken', ''];
|
||||
public static $Axtesting = ['axtesting', ''];
|
||||
public static $Batchjob = ['batchjob', ''];
|
||||
public static $BatchjobCsverror = ['batchjob', 'csverror/text:csv'];
|
||||
public static $BatchjobJsonerror = ['batchjob', 'JSONError/application:json/LAST'];
|
||||
public static $Bouncestatistics = ['bouncestatistics', ''];
|
||||
public static $Campaign = ['campaign', ''];
|
||||
public static $Campaignaggregate = ['campaignaggregate', ''];
|
||||
public static $Campaigndraft = ['campaigndraft', ''];
|
||||
public static $CampaigndraftSchedule = ['campaigndraft', 'schedule'];
|
||||
public static $CampaigndraftStatus = ['campaigndraft', 'status'];
|
||||
public static $CampaigndraftSend = ['campaigndraft', 'send'];
|
||||
public static $CampaigndraftTest = ['campaigndraft', 'test'];
|
||||
public static $CampaigndraftDetailcontent = ['campaigndraft', 'detailcontent'];
|
||||
public static $Campaigngraphstatistics = ['campaigngraphstatistics', ''];
|
||||
public static $Campaignoverview = ['campaignoverview', ''];
|
||||
public static $Campaignstatistics = ['campaignstatistics', ''];
|
||||
public static $Clickstatistics = ['clickstatistics', ''];
|
||||
public static $Contact = ['contact', ''];
|
||||
public static $ContactManagecontactslists = ['contact', 'managecontactslists'];
|
||||
public static $ContactGetcontactslists = ['contact', 'getcontactslists'];
|
||||
public static $ContactManagemanycontacts = ['contact', 'managemanycontacts'];
|
||||
public static $Contactdata = ['contactdata', ''];
|
||||
public static $Contactfilter = ['contactfilter', ''];
|
||||
public static $Contacthistorydata = ['contacthistorydata', ''];
|
||||
public static $Contactmetadata = ['contactmetadata', ''];
|
||||
public static $Contactslist = ['contactslist', ''];
|
||||
public static $ContactslistCsvdata = ['contactslist', 'csvdata/text:plain'];
|
||||
public static $ContactslistManagecontact = ['contactslist', 'ManageContact'];
|
||||
public static $ContactslistManagemanycontacts = ['contactslist', 'ManageManyContacts'];
|
||||
public static $ContactslistImportlist = ['contactslist', 'ImportList'];
|
||||
public static $Contactslistsignup = ['contactslistsignup', ''];
|
||||
public static $Contactstatistics = ['contactstatistics', ''];
|
||||
public static $Csvimport = ['csvimport', ''];
|
||||
public static $Dns = ['dns', ''];
|
||||
public static $DnsCheck = ['dns', 'check'];
|
||||
public static $Domainstatistics = ['domainstatistics', ''];
|
||||
public static $Eventcallbackurl = ['eventcallbackurl', ''];
|
||||
public static $Geostatistics = ['geostatistics', ''];
|
||||
public static $Graphstatistics = ['graphstatistics', ''];
|
||||
public static $Listrecipient = ['listrecipient', ''];
|
||||
public static $Listrecipientstatistics = ['listrecipientstatistics', ''];
|
||||
public static $Liststatistics = ['liststatistics', ''];
|
||||
public static $Message = ['message', ''];
|
||||
public static $Messagehistory = ['messagehistory', ''];
|
||||
public static $Messageinformation = ['messageinformation', ''];
|
||||
public static $Messagesentstatistics = ['messagesentstatistics', ''];
|
||||
public static $Messagestate = ['messagestate', ''];
|
||||
public static $Messagestatistics = ['messagestatistics', ''];
|
||||
public static $Metadata = ['metadata', ''];
|
||||
public static $Metasender = ['metasender', ''];
|
||||
public static $Myprofile = ['myprofile', ''];
|
||||
public static $Newsletter = ['newsletter', ''];
|
||||
public static $NewsletterSchedule = ['newsletter', 'schedule'];
|
||||
public static $NewsletterStatus = ['newsletter', 'status'];
|
||||
public static $NewsletterSend = ['newsletter', 'send'];
|
||||
public static $NewsletterTest = ['newsletter', 'test'];
|
||||
public static $NewsletterDetailcontent = ['newsletter', 'detailcontent'];
|
||||
public static $Newslettertemplate = ['newslettertemplate', ''];
|
||||
public static $Newslettertemplatecategory = ['newslettertemplatecategory', ''];
|
||||
public static $Openinformation = ['openinformation', ''];
|
||||
public static $Openstatistics = ['openstatistics', ''];
|
||||
public static $Parseroute = ['parseroute', ''];
|
||||
public static $Preferences = ['preferences', ''];
|
||||
public static $Preset = ['preset', ''];
|
||||
public static $Sender = ['sender', ''];
|
||||
public static $SenderValidate = ['sender', 'validate'];
|
||||
public static $Senderstatistics = ['senderstatistics', ''];
|
||||
public static $Template = ['template', ''];
|
||||
public static $TemplateDetailcontent = ['template', 'detailcontent'];
|
||||
public static $TemplateDetailpreviews = ['template', 'detailpreviews'];
|
||||
public static $TemplateDisplaypreview = ['template', 'displaypreview'];
|
||||
public static $TemplateDetailthumbnail = ['template', 'detailthumbnail'];
|
||||
public static $TemplateDisplaythumbnail = ['template', 'displaythumbnail'];
|
||||
public static $Toplinkclicked = ['toplinkclicked', ''];
|
||||
public static $Trigger = ['trigger', ''];
|
||||
public static $User = ['user', ''];
|
||||
public static $UserActivate = ['user', 'activate'];
|
||||
public static $Useragentstatistics = ['useragentstatistics', ''];
|
||||
public static $Widget = ['widget', ''];
|
||||
public static $Widgetcustomvalue = ['widgetcustomvalue', ''];
|
||||
public static $Statcounters = ['statcounters', ''];
|
||||
public static $StatisticsLinkclick = ['statistics', 'link-click'];
|
||||
public static $StatisticsRecipientesp = ['statistics', 'recipient-esp'];
|
||||
public static $Sms = ['sms', ''];
|
||||
public static $SmsSend = ['sms-send', ''];
|
||||
public static $SmsExport = ['sms', 'export'];
|
||||
public static $SmsCount = ['sms', 'count'];
|
||||
}
|
||||
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* Copyright (C) 2013 Mailgun
|
||||
*
|
||||
* This software may be modified and distributed under the terms
|
||||
* of the MIT license. See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace AppBundle\Entity;
|
||||
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
class Response
|
||||
{
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $status;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $success;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $body = [];
|
||||
|
||||
/**
|
||||
* @var ResponseInterface
|
||||
*/
|
||||
private $rawResponse;
|
||||
|
||||
/**
|
||||
* @var Request
|
||||
*/
|
||||
private $request;
|
||||
|
||||
/**
|
||||
* Construct a Mailjet response.
|
||||
*
|
||||
* @param Request $request Mailjet actual request
|
||||
* @param ResponseInterface $response Guzzle response
|
||||
*/
|
||||
public function __construct(Request $request, ResponseInterface $response)
|
||||
{
|
||||
$this->request = $request;
|
||||
|
||||
if ($response) {
|
||||
$this->rawResponse = $response;
|
||||
$this->status = $response->getStatusCode();
|
||||
$this->body = $this->decodeBody($response->getBody()->getContents());
|
||||
$this->success = 2 === floor($this->status / 100);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Status Getter
|
||||
* return the http status code.
|
||||
*
|
||||
* @return int status
|
||||
*/
|
||||
public function getStatus()
|
||||
{
|
||||
return $this->status;
|
||||
}
|
||||
|
||||
/**
|
||||
* Status Getter
|
||||
* return the entire response array.
|
||||
*/
|
||||
public function getBody(): array
|
||||
{
|
||||
return $this->body;
|
||||
}
|
||||
|
||||
/**
|
||||
* Data Getter
|
||||
* The data returned by the mailjet call.
|
||||
*
|
||||
* @return array data
|
||||
*/
|
||||
public function getData(): array
|
||||
{
|
||||
return $this->body['Data'] ?? $this->body;
|
||||
}
|
||||
|
||||
/**
|
||||
* Count getter
|
||||
* return the resulting array size.
|
||||
*/
|
||||
public function getCount(): ?int
|
||||
{
|
||||
return $this->body['Count'] ?? null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Error Reason getter
|
||||
* return the resulting error message.
|
||||
*/
|
||||
public function getReasonPhrase(): ?string
|
||||
{
|
||||
return $this->rawResponse->getReasonPhrase();
|
||||
}
|
||||
|
||||
/**
|
||||
* Total getter
|
||||
* return the total count of all results.
|
||||
*
|
||||
* @return int|null count
|
||||
*/
|
||||
public function getTotal(): ?int
|
||||
{
|
||||
return $this->body['Total'] ?? null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Success getter.
|
||||
*
|
||||
* @return bool true is return code is 2**
|
||||
*/
|
||||
public function success(): ?bool
|
||||
{
|
||||
return $this->success;
|
||||
}
|
||||
|
||||
public function getRequest(): Request
|
||||
{
|
||||
return $this->request;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decodes a mailjet string response to an object representing that response.
|
||||
*
|
||||
* @param string $body The mailjet response as string
|
||||
*
|
||||
* @return array Object representing the mailjet response
|
||||
*/
|
||||
protected function decodeBody(string $body): array
|
||||
{
|
||||
return json_decode($body, true, 512, JSON_BIGINT_AS_STRING) ?: [];
|
||||
}
|
||||
}
|
||||
@@ -424,6 +424,10 @@ class User extends BaseUser
|
||||
}
|
||||
}
|
||||
}
|
||||
$type=null;
|
||||
if($this->getCompany()->getType()){
|
||||
$type=$this->getCompany()->getType();
|
||||
}
|
||||
}
|
||||
|
||||
$card = array(
|
||||
@@ -443,6 +447,7 @@ class User extends BaseUser
|
||||
"zipCode" => $zipCode,
|
||||
"city" => $city,
|
||||
"country" => $country,
|
||||
"type" => $type,
|
||||
"currentJob" => $this->getCompany()->getExtra()["titleTalent"],
|
||||
"website" => $this->getCompany()->getWebsite(),
|
||||
);
|
||||
|
||||
@@ -179,7 +179,7 @@ class AdSoftType extends AbstractType
|
||||
'label' => 'Possibilité de faire du Télétravail?',
|
||||
'data' => $teletravail,
|
||||
'choices' => array(
|
||||
'Occasionnel ' => 'tele_occassionel',
|
||||
'Occasionnel ' => 'tele_occasionel',
|
||||
'Partiel ' => 'tele_partiel',
|
||||
'Total' => 'tele_total',
|
||||
'Non' => 'tele_non',
|
||||
|
||||
@@ -196,7 +196,7 @@ class AdType extends AbstractType
|
||||
'label' => 'Possibilité de faire du Télétravail?',
|
||||
'data' => $teletravail,
|
||||
'choices' => array(
|
||||
'Occasionnel ' => 'tele_occassionel',
|
||||
'Occasionnel ' => 'tele_occasionel',
|
||||
'Partiel ' => 'tele_partiel',
|
||||
'Total' => 'tele_total',
|
||||
'Non' => 'tele_non',
|
||||
|
||||
@@ -96,12 +96,12 @@ class MailManager
|
||||
$email = \Swift_Message::newInstance()
|
||||
->setSubject($subject)
|
||||
->setFrom('noreply@talentstube.io')
|
||||
->setTo('c.leveque@talentstube.com')
|
||||
->setTo('l.laniau@talentstube.com')
|
||||
->setBody($message, 'text/html')
|
||||
;
|
||||
if ($this->mailer->send($email)) {
|
||||
// $spool = $this->mailer->getTransport()->getSpool();
|
||||
// $spool->flushQueue($this->transport);
|
||||
// $spool = $this->mailer->getTransport()->getSpool();
|
||||
// $spool->flushQueue($this->transport);
|
||||
$message = array('success' => 200);
|
||||
} else {
|
||||
$message = array('success' => 500);
|
||||
|
||||
+2
-2
@@ -35,7 +35,7 @@ abstract class AbstractFactory implements SecurityFactoryInterface
|
||||
protected $defaultSuccessHandlerOptions = [
|
||||
'always_use_default_target_path' => false,
|
||||
'default_target_path' => '/',
|
||||
'login_path' => '/login',
|
||||
'login_path' => '/',
|
||||
'target_path_parameter' => '_target_path',
|
||||
'use_referer' => false,
|
||||
];
|
||||
@@ -43,7 +43,7 @@ abstract class AbstractFactory implements SecurityFactoryInterface
|
||||
protected $defaultFailureHandlerOptions = [
|
||||
'failure_path' => null,
|
||||
'failure_forward' => false,
|
||||
'login_path' => '/login',
|
||||
'login_path' => '/?erreur=1',
|
||||
'failure_path_parameter' => '_failure_path',
|
||||
];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user