update php-cs-fixer

This commit is contained in:
Emmanuel ROY 2020-12-09 10:26:26 +01:00
parent 574a2afa8b
commit f517faa071
140 changed files with 1684 additions and 1232 deletions

1
.gitignore vendored
View file

@ -1,3 +1,4 @@
composer.lock composer.lock
vendor vendor
.idea .idea
.php_cs.cache

View file

@ -10,7 +10,8 @@ class Application
public $route; public $route;
public function __construct(){ public function __construct()
{
$this->http = new HttpMethod(); $this->http = new HttpMethod();
$this->browser = new Browser(); $this->browser = new Browser();
@ -20,13 +21,13 @@ class Application
$this->route = $dispacher->route; $this->route = $dispacher->route;
} }
public function launch(){ public function launch()
{
//print_r($this->route); //print_r($this->route);
$controlleur = new Controlleur($this); $controlleur = new Controlleur($this);
//si la page n'est un controlleur d'action alors on affiche l'écran //si la page n'est un controlleur d'action alors on affiche l'écran
if(!$this->url->page['control']) { if (!$this->url->page['control']) {
print($controlleur->vue->ecran); print($controlleur->vue->ecran);
} }
} }
} }

View file

@ -3,10 +3,8 @@
namespace MVC\Classe; namespace MVC\Classe;
class Asynchonous class Asynchonous
{ {
private $_css; private $_css;
private $_javascript; private $_javascript;
@ -37,5 +35,4 @@ class Asynchonous
{ {
echo $this->_javascript; echo $this->_javascript;
} }
}
}

View file

@ -8,7 +8,7 @@ class Bdd
public function __construct($bdd = 'bdd1') public function __construct($bdd = 'bdd1')
{ {
switch($bdd) { switch ($bdd) {
case 'bdd1': case 'bdd1':
$this->bdd = new \PDO(DSN_BDD1, USER_BDD1, PASS_BDD1); $this->bdd = new \PDO(DSN_BDD1, USER_BDD1, PASS_BDD1);
break; break;
@ -44,11 +44,12 @@ class Bdd
* @param array|null $params * @param array|null $params
* @return bool|\PDOStatement * @return bool|\PDOStatement
*/ */
public function faireBindRequete($sql,Array $params = null){ public function faireBindRequete($sql, array $params = null)
{
$req = $this->bdd->prepare($sql); $req = $this->bdd->prepare($sql);
if($params){ if ($params) {
foreach ($params as $value) { foreach ($params as $value) {
$req->bindParam($value[0],Caracter::normalise_ChaineDeCaracteres($value[1]),$value[2]); $req->bindParam($value[0], Caracter::normalise_ChaineDeCaracteres($value[1]), $value[2]);
} }
} }
$req->execute(); $req->execute();
@ -56,9 +57,10 @@ class Bdd
return $req; return $req;
} }
public function exploiterResultat($req){ public function exploiterResultat($req)
{
$res = $req->fetchAll(); $res = $req->fetchAll();
foreach($res as $data) { foreach ($res as $data) {
foreach ($data as $key => $row) { foreach ($data as $key => $row) {
if (is_string($row)) { if (is_string($row)) {
$row = Caracter::normalise_ChaineDeCaracteres($row); $row = Caracter::normalise_ChaineDeCaracteres($row);
@ -68,4 +70,4 @@ class Bdd
} }
return $res; return $res;
} }
} }

View file

@ -3,10 +3,8 @@
namespace MVC\Classe; namespace MVC\Classe;
class Browser class Browser
{ {
public $user; public $user;
public $userAgent; public $userAgent;
@ -29,43 +27,73 @@ class Browser
$t = " " . $t; $t = " " . $t;
// Humans / Regular Users // Humans / Regular Users
if (strpos($t, 'opera') || strpos($t, 'opr/')) return 'Opera'; if (strpos($t, 'opera') || strpos($t, 'opr/')) {
elseif (strpos($t, 'edge')) return 'Edge'; return 'Opera';
elseif (strpos($t, 'chrome')) return 'Chrome'; } elseif (strpos($t, 'edge')) {
elseif (strpos($t, 'safari')) return 'Safari'; return 'Edge';
elseif (strpos($t, 'firefox')) return 'Firefox'; } elseif (strpos($t, 'chrome')) {
elseif (strpos($t, 'msie') || strpos($t, 'trident/7')) return 'Internet Explorer'; return 'Chrome';
} elseif (strpos($t, 'safari')) {
return 'Safari';
} elseif (strpos($t, 'firefox')) {
return 'Firefox';
} elseif (strpos($t, 'msie') || strpos($t, 'trident/7')) {
return 'Internet Explorer';
}
// Application Users // Application Users
elseif (strpos($t, 'curl')) return '[App] Curl'; elseif (strpos($t, 'curl')) {
return '[App] Curl';
}
// Search Engines // Search Engines
elseif (strpos($t, 'google')) return '[Bot] Googlebot'; elseif (strpos($t, 'google')) {
elseif (strpos($t, 'bing')) return '[Bot] Bingbot'; return '[Bot] Googlebot';
elseif (strpos($t, 'slurp')) return '[Bot] Yahoo! Slurp'; } elseif (strpos($t, 'bing')) {
elseif (strpos($t, 'duckduckgo')) return '[Bot] DuckDuckBot'; return '[Bot] Bingbot';
elseif (strpos($t, 'baidu')) return '[Bot] Baidu'; } elseif (strpos($t, 'slurp')) {
elseif (strpos($t, 'yandex')) return '[Bot] Yandex'; return '[Bot] Yahoo! Slurp';
elseif (strpos($t, 'sogou')) return '[Bot] Sogou'; } elseif (strpos($t, 'duckduckgo')) {
elseif (strpos($t, 'exabot')) return '[Bot] Exabot'; return '[Bot] DuckDuckBot';
elseif (strpos($t, 'msn')) return '[Bot] MSN'; } elseif (strpos($t, 'baidu')) {
return '[Bot] Baidu';
} elseif (strpos($t, 'yandex')) {
return '[Bot] Yandex';
} elseif (strpos($t, 'sogou')) {
return '[Bot] Sogou';
} elseif (strpos($t, 'exabot')) {
return '[Bot] Exabot';
} elseif (strpos($t, 'msn')) {
return '[Bot] MSN';
}
// Common Tools and Bots // Common Tools and Bots
elseif (strpos($t, 'mj12bot')) return '[Bot] Majestic'; elseif (strpos($t, 'mj12bot')) {
elseif (strpos($t, 'ahrefs')) return '[Bot] Ahrefs'; return '[Bot] Majestic';
elseif (strpos($t, 'semrush')) return '[Bot] SEMRush'; } elseif (strpos($t, 'ahrefs')) {
elseif (strpos($t, 'rogerbot') || strpos($t, 'dotbot')) return '[Bot] Moz or OpenSiteExplorer'; return '[Bot] Ahrefs';
elseif (strpos($t, 'frog') || strpos($t, 'screaming')) return '[Bot] Screaming Frog'; } elseif (strpos($t, 'semrush')) {
return '[Bot] SEMRush';
} elseif (strpos($t, 'rogerbot') || strpos($t, 'dotbot')) {
return '[Bot] Moz or OpenSiteExplorer';
} elseif (strpos($t, 'frog') || strpos($t, 'screaming')) {
return '[Bot] Screaming Frog';
}
// Miscellaneous // Miscellaneous
elseif (strpos($t, 'facebook')) return '[Bot] Facebook'; elseif (strpos($t, 'facebook')) {
elseif (strpos($t, 'pinterest')) return '[Bot] Pinterest'; return '[Bot] Facebook';
} elseif (strpos($t, 'pinterest')) {
return '[Bot] Pinterest';
}
// Check for strings commonly used in bot user agents // Check for strings commonly used in bot user agents
elseif (strpos($t, 'crawler') || strpos($t, 'api') || elseif (strpos($t, 'crawler') || strpos($t, 'api') ||
strpos($t, 'spider') || strpos($t, 'http') || strpos($t, 'spider') || strpos($t, 'http') ||
strpos($t, 'bot') || strpos($t, 'archive') || strpos($t, 'bot') || strpos($t, 'archive') ||
strpos($t, 'info') || strpos($t, 'data')) return '[Bot] Other'; strpos($t, 'info') || strpos($t, 'data')) {
return '[Bot] Other';
}
return 'Other (Unknown)'; return 'Other (Unknown)';
} }
@ -90,4 +118,4 @@ class Browser
return false; return false;
} }
} }
} }

View file

@ -3,12 +3,10 @@
namespace MVC\Classe; namespace MVC\Classe;
use ForceUTF8\Encoding; use ForceUTF8\Encoding;
class Caracter class Caracter
{ {
public static function normalise_ChaineDeCaracteres($chaine) public static function normalise_ChaineDeCaracteres($chaine)
{ {
return Encoding::fixUTF8(Caracter::fp_stripslashes($chaine)); return Encoding::fixUTF8(Caracter::fp_stripslashes($chaine));
@ -76,4 +74,4 @@ class Caracter
$chaine = str_replace('"', '"', $chaine); $chaine = str_replace('"', '"', $chaine);
return $chaine; return $chaine;
} }
} }

View file

@ -2,13 +2,13 @@
namespace MVC\Classe; namespace MVC\Classe;
class Controlleur{ class Controlleur
{
public $modele; public $modele;
public $vue; public $vue;
public function __construct($application){ public function __construct($application)
{
switch ($application->http->method) { switch ($application->http->method) {
//cas des requètes PUT et DELETE //cas des requètes PUT et DELETE
case 'PUT': case 'PUT':
@ -20,8 +20,9 @@ class Controlleur{
$this->callHttpResponse($application); $this->callHttpResponse($application);
die(); die();
} }
// no break
default: default:
if ($application->route != NULL) { if ($application->route != null) {
$conduit = explode('::', $application->route['controller']); $conduit = explode('::', $application->route['controller']);
require CONDUIT_PATH . DIRECTORY_SEPARATOR . $conduit[0] . '.php'; require CONDUIT_PATH . DIRECTORY_SEPARATOR . $conduit[0] . '.php';
$conduitRoute = "\\" . $conduit[0]; $conduitRoute = "\\" . $conduit[0];
@ -30,8 +31,7 @@ class Controlleur{
$class->initialize($application->route); $class->initialize($application->route);
$this->vue = new VueVide(); $this->vue = new VueVide();
$this->vue->ecran = $class->$method(); $this->vue->ecran = $class->$method();
} elseif ($application->url->page['control']) {
} else if ($application->url->page['control']) {
$url_params = $application->url->page['params']; $url_params = $application->url->page['params'];
require TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . '.php'; require TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . '.php';
} else { } else {
@ -39,9 +39,7 @@ class Controlleur{
$this->vue = new Vue($this); $this->vue = new Vue($this);
} }
} }
}
}
public function callHttpResponse($application) public function callHttpResponse($application)
{ {
@ -56,11 +54,10 @@ class Controlleur{
$reponse->instanciate($application->url, $application->http->getData()); $reponse->instanciate($application->url, $application->http->getData());
$method = strtolower($application->http->method); $method = strtolower($application->http->method);
Logger::addLog('http11'," $reponseHttp app {$application->http->method} request! ( ".get_class($reponse)."->$method() )"); Logger::addLog('http11', " $reponseHttp app {$application->http->method} request! ( ".get_class($reponse)."->$method() )");
$this->vue = new VueVide(); $this->vue = new VueVide();
$this->vue->ecran = $reponse->$method(); $this->vue->ecran = $reponse->$method();
return; return;
} }
} }

View file

@ -3,10 +3,8 @@
namespace MVC\Classe; namespace MVC\Classe;
class ControlleurAction class ControlleurAction
{ {
public static function inserer($action, $data = array()) public static function inserer($action, $data = array())
{ {
$action = explode('.', $action); $action = explode('.', $action);
@ -21,13 +19,8 @@ class ControlleurAction
} else { } else {
return $slot->default($data); return $slot->default($data);
} }
} else { } else {
/*HandleError*/ /*HandleError*/
} }
} }
}
}

View file

@ -9,10 +9,8 @@ use Symfony\Component\Routing\RequestContext as RequestContext;
use Symfony\Component\Routing\Loader\YamlFileLoader as YamlFileLoader; use Symfony\Component\Routing\Loader\YamlFileLoader as YamlFileLoader;
use Symfony\Component\Routing\Exception\ResourceNotFoundException; use Symfony\Component\Routing\Exception\ResourceNotFoundException;
class Dispacher class Dispacher
{ {
public $route; public $route;
public function __construct() public function __construct()
@ -20,7 +18,7 @@ class Dispacher
//Avoid callback from empty homepage //Avoid callback from empty homepage
if ($_SERVER['REQUEST_URI'] == '/' || $_SERVER['REQUEST_URI'] == '') { if ($_SERVER['REQUEST_URI'] == '/' || $_SERVER['REQUEST_URI'] == '') {
$this->route = NULL; $this->route = null;
} else { } else {
//Test the route from config file //Test the route from config file
try { try {
@ -38,8 +36,8 @@ class Dispacher
$this->route = $parameters; $this->route = $parameters;
} catch (ResourceNotFoundException $e) { } catch (ResourceNotFoundException $e) {
$this->route = NULL; $this->route = null;
} }
} }
} }
} }

View file

@ -2,10 +2,10 @@
namespace MVC\Classe; namespace MVC\Classe;
class Dumper
class Dumper{ {
public static function dump($var)
public static function dump($var){ {
echo "<pre>"; echo "<pre>";
if (is_bool($var)) { if (is_bool($var)) {
echo ($var) ? "true" : "false"; echo ($var) ? "true" : "false";
@ -21,7 +21,6 @@ class Dumper{
*/ */
public static function setPHPvalues() public static function setPHPvalues()
{ {
ini_set('display_errors', 1); ini_set('display_errors', 1);
ini_set('display_startup_errors', 1); ini_set('display_startup_errors', 1);
ini_set('memory_limit', -1); ini_set('memory_limit', -1);
@ -32,4 +31,4 @@ class Dumper{
return; return;
} }
} }

View file

@ -3,17 +3,15 @@
namespace MVC\Classe; namespace MVC\Classe;
class HttpMethod class HttpMethod
{ {
public $method; public $method;
protected $data; protected $data;
public function __construct() public function __construct()
{ {
$this->method = $_SERVER['REQUEST_METHOD']; $this->method = $_SERVER['REQUEST_METHOD'];
Logger::addLog('http.method',$this->method); Logger::addLog('http.method', $this->method);
$this->acceptResponse(); $this->acceptResponse();
} }
@ -28,6 +26,7 @@ class HttpMethod
//$this->data['GET'] = ... //$this->data['GET'] = ...
//POST DATA except enctype="multipart/form-data" //POST DATA except enctype="multipart/form-data"
$this->data = json_decode(file_get_contents("php://input"), true); $this->data = json_decode(file_get_contents("php://input"), true);
// no break
case 'DELETE': case 'DELETE':
//$this->data['GET'] = ... //$this->data['GET'] = ...
//POST DATA except enctype="multipart/form-data" //POST DATA except enctype="multipart/form-data"
@ -44,5 +43,4 @@ class HttpMethod
{ {
return $this->data; return $this->data;
} }
}
}

View file

@ -3,7 +3,6 @@
namespace MVC\Classe; namespace MVC\Classe;
/** /**
* Class Response * Class Response
* *
@ -165,8 +164,6 @@ class HttpMethodRequete
/** Pour utiliser ce code il faut mettre la variable safe_mode a ON dans php.ini */ /** Pour utiliser ce code il faut mettre la variable safe_mode a ON dans php.ini */
//exec($curl_cmd); //exec($curl_cmd);
} }
/** /**
@ -218,5 +215,4 @@ class HttpMethodRequete
{ {
return $this->replaceContext('DELETE')->addContent($params)->send(); return $this->replaceContext('DELETE')->addContent($params)->send();
} }
}
}

View file

@ -3,14 +3,10 @@
namespace MVC\Classe\Implement; namespace MVC\Classe\Implement;
class Action class Action
{ {
public function render($view, $data) public function render($view, $data)
{ {
$paths = new \SplPriorityQueue; $paths = new \SplPriorityQueue;
$paths->insert(VIEW_PATH . DIRECTORY_SEPARATOR . "system", 100); $paths->insert(VIEW_PATH . DIRECTORY_SEPARATOR . "system", 100);
@ -20,6 +16,5 @@ class Action
$renderer = new \Windwalker\Renderer\BladeRenderer($paths, array('cache_path' => VIEW_PATH . DIRECTORY_SEPARATOR . "cache")); $renderer = new \Windwalker\Renderer\BladeRenderer($paths, array('cache_path' => VIEW_PATH . DIRECTORY_SEPARATOR . "cache"));
return $renderer->render($view, $data); return $renderer->render($view, $data);
} }
} }

View file

@ -3,14 +3,12 @@
namespace MVC\Classe\Implement; namespace MVC\Classe\Implement;
class Conduit extends Action class Conduit extends Action
{ {
public function initialize($var) public function initialize($var)
{ {
//Export variable from conduit //Export variable from conduit
foreach ($var as $key => $value) { foreach ($var as $key => $value) {
if ($key != "controller") { if ($key != "controller") {
if ($key != "_route") { if ($key != "_route") {
$this->$key = $value; $this->$key = $value;
@ -19,4 +17,4 @@ class Conduit extends Action
} }
return; return;
} }
} }

View file

@ -7,4 +7,4 @@ interface HttpReponseInterface
public function put(); public function put();
public function delete(); public function delete();
} }

View file

@ -11,4 +11,4 @@ interface RestReponseInterface
public function put(); public function put();
public function delete(); public function delete();
} }

View file

@ -7,7 +7,6 @@ use MVC\Classe\Implement\Contrat\HttpReponseInterface;
class HttpReponse extends Action implements HttpReponseInterface class HttpReponse extends Action implements HttpReponseInterface
{ {
public $url; public $url;
public $params; public $params;
public $data; public $data;
@ -35,12 +34,9 @@ class HttpReponse extends Action implements HttpReponseInterface
public function put() public function put()
{ {
} }
public function delete() public function delete()
{ {
} }
}
}

View file

@ -10,7 +10,6 @@ use MVC\Classe\Implement\Contrat\RestReponseInterface;
class RestReponse implements RestReponseInterface class RestReponse implements RestReponseInterface
{ {
public $url; public $url;
public $params; public $params;
public $data; public $data;
@ -38,21 +37,17 @@ class RestReponse implements RestReponseInterface
public function get() public function get()
{ {
} }
public function post() public function post()
{ {
} }
public function put() public function put()
{ {
} }
public function delete() public function delete()
{ {
} }
} }

View file

@ -3,13 +3,11 @@
namespace MVC\Classe; namespace MVC\Classe;
use Symfony\Component\Validator\Constraints\Date; use Symfony\Component\Validator\Constraints\Date;
class Logger class Logger
{ {
public static function addLog($type = 'default', $what = "")
static function addLog($type = 'default', $what = "")
{ {
$file = LOG_PATH . DIRECTORY_SEPARATOR . 'app.' . $type . '.log'; $file = LOG_PATH . DIRECTORY_SEPARATOR . 'app.' . $type . '.log';
$browser = new Browser(); $browser = new Browser();
@ -41,5 +39,4 @@ class Logger
return; return;
} }
}
}

View file

@ -2,15 +2,15 @@
namespace MVC\Classe; namespace MVC\Classe;
class Modele{ class Modele
{
public $page; public $page;
public function __construct($base_param){ public function __construct($base_param)
{
if(file_exists(MODELS_PATH.DIRECTORY_SEPARATOR.$base_param['name'].'.model')){ if (file_exists(MODELS_PATH.DIRECTORY_SEPARATOR.$base_param['name'].'.model')) {
$fichier = file(MODELS_PATH.DIRECTORY_SEPARATOR.$base_param['name'].'.model'); $fichier = file(MODELS_PATH.DIRECTORY_SEPARATOR.$base_param['name'].'.model');
foreach ($fichier as $ligne_num => $ligne) { foreach ($fichier as $ligne_num => $ligne) {
//on recherche le pattern des parametres //on recherche le pattern des parametres
if (preg_match("#[ ]*([a-zA-Z_+]*)[ ]*[:][ ]*([a-zA-Z0-9-_+'\{\,\ \}\(\)]*[ ]*)#", $ligne, $matches)) { if (preg_match("#[ ]*([a-zA-Z_+]*)[ ]*[:][ ]*([a-zA-Z0-9-_+'\{\,\ \}\(\)]*[ ]*)#", $ligne, $matches)) {
//on recherche le pattern des tableau dans la valeur du paramètre //on recherche le pattern des tableau dans la valeur du paramètre
@ -28,14 +28,12 @@ class Modele{
} }
$this->page[$matches[1]] = $matches[2]; $this->page[$matches[1]] = $matches[2];
} }
} }
$this->page['url_params'] = $base_param['params']; $this->page['url_params'] = $base_param['params'];
}else{ } else {
$this->page['name'] = $base_param['name']; $this->page['name'] = $base_param['name'];
$this->page['description'] = $base_param['description']; $this->page['description'] = $base_param['description'];
$this->page['params'] = $base_param['params']; $this->page['params'] = $base_param['params'];
} }
} }
} }

View file

@ -2,13 +2,14 @@
namespace MVC\Classe; namespace MVC\Classe;
class Modular{ class Modular
{
private $app = ""; private $app = "";
private $subapp_dir = ""; private $subapp_dir = "";
private $subfile = "index.php"; private $subfile = "index.php";
public function __construct($appName,$type = 'symfony',$options = array()){ public function __construct($appName, $type = 'symfony', $options = array())
{
//Dumper::dump($options);die(); //Dumper::dump($options);die();
@ -17,18 +18,18 @@ class Modular{
case "symfony": case "symfony":
break; break;
case "wordpress": case "wordpress":
if(isset($options[0])) { if (isset($options[0])) {
switch ($options[0]) { switch ($options[0]) {
case 'wp-admin': case 'wp-admin':
$this->subapp_dir = DIRECTORY_SEPARATOR . $options[0]; $this->subapp_dir = DIRECTORY_SEPARATOR . $options[0];
if(isset($options[1])) { if (isset($options[1])) {
switch ($options[1]) { switch ($options[1]) {
case 'setup-config.php': case 'setup-config.php':
case 'install.php': case 'install.php':
$this->subfile = $options[1]; $this->subfile = $options[1];
break; break;
default: default:
if(preg_match('#(.)*\.php#',$options[1])){ if (preg_match('#(.)*\.php#', $options[1])) {
$this->subfile = $options[1]; $this->subfile = $options[1];
} }
} }
@ -42,7 +43,7 @@ class Modular{
} }
break; break;
case "prestashop": case "prestashop":
if(isset($options[0])) { if (isset($options[0])) {
switch ($options[0]) { switch ($options[0]) {
case 'admin-dev': case 'admin-dev':
case 'install-dev': case 'install-dev':
@ -53,20 +54,20 @@ class Modular{
} }
break; break;
case "phplist": case "phplist":
if(isset($options[0])) { if (isset($options[0])) {
switch ($options[0]) { switch ($options[0]) {
case 'admin': case 'admin':
$this->subapp_dir = DIRECTORY_SEPARATOR . 'public_html' . DIRECTORY_SEPARATOR . 'lists'. DIRECTORY_SEPARATOR . $options[0] ; $this->subapp_dir = DIRECTORY_SEPARATOR . 'public_html' . DIRECTORY_SEPARATOR . 'lists'. DIRECTORY_SEPARATOR . $options[0] ;
break; break;
default: default:
} }
}else{ } else {
$this->subapp_dir = DIRECTORY_SEPARATOR . 'public_html' . DIRECTORY_SEPARATOR . 'lists'; $this->subapp_dir = DIRECTORY_SEPARATOR . 'public_html' . DIRECTORY_SEPARATOR . 'lists';
} }
break; break;
case "wanewsletter": case "wanewsletter":
$this->subfile = "install.php"; $this->subfile = "install.php";
if(isset($options[0])) { if (isset($options[0])) {
switch ($options[0]) { switch ($options[0]) {
case 'admin': case 'admin':
$this->subapp_dir = DIRECTORY_SEPARATOR . $options[0] ; $this->subapp_dir = DIRECTORY_SEPARATOR . $options[0] ;
@ -82,11 +83,13 @@ class Modular{
} }
} }
public function getAppName(){ public function getAppName()
{
return $this->app; return $this->app;
} }
public function load($type = "symfony"){ public function load($type = "symfony")
{
switch ($type) { switch ($type) {
case "symfony": case "symfony":
require MODULES_PATH . DIRECTORY_SEPARATOR . $this->getAppName() . DIRECTORY_SEPARATOR . "public" . DIRECTORY_SEPARATOR . "index.php"; require MODULES_PATH . DIRECTORY_SEPARATOR . $this->getAppName() . DIRECTORY_SEPARATOR . "public" . DIRECTORY_SEPARATOR . "index.php";
@ -108,4 +111,4 @@ class Modular{
break; break;
} }
} }
} }

View file

@ -2,28 +2,29 @@
namespace MVC\Classe; namespace MVC\Classe;
class ModularRegister{ class ModularRegister
{
public $registry = array(); public $registry = array();
public $index = array(); public $index = array();
public function __construct(){ public function __construct()
{
$fichier = file(MODULES_PATH . DIRECTORY_SEPARATOR . "setup" . DIRECTORY_SEPARATOR ."registre.model"); $fichier = file(MODULES_PATH . DIRECTORY_SEPARATOR . "setup" . DIRECTORY_SEPARATOR ."registre.model");
foreach ($fichier as $ligne_num => $ligne) { foreach ($fichier as $ligne_num => $ligne) {
if (preg_match("#([ ]*[a-zA-Z0-9-_+éèàùïîç]*)[ ]*[:][ ]*([0-9a-zA-Z-_+ 'éèàùïîç.]*[ ]*)#", $ligne, $matches)) { if (preg_match("#([ ]*[a-zA-Z0-9-_+éèàùïîç]*)[ ]*[:][ ]*([0-9a-zA-Z-_+ 'éèàùïîç.]*[ ]*)#", $ligne, $matches)) {
$this->registry[$matches[1]] = $matches[2]; $this->registry[$matches[1]] = $matches[2];
$this->index[] = $matches[1]; $this->index[] = $matches[1];
} }
} }
} }
public function getRegistre(){ public function getRegistre()
{
return $this->registry; return $this->registry;
} }
public function getIndex(){ public function getIndex()
{
return $this->index; return $this->index;
} }
} }

View file

@ -3,64 +3,62 @@
namespace MVC\Classe; namespace MVC\Classe;
class Session class Session
{ {
public static function start()
static public function start()
{ {
session_start(); session_start();
return; return;
} }
static public function destroy() public static function destroy()
{ {
session_destroy(); session_destroy();
return; return;
} }
static public function setUserProfile($userProfile) public static function setUserProfile($userProfile)
{ {
$_SESSION['userProfile'] = $userProfile; $_SESSION['userProfile'] = $userProfile;
return; return;
} }
static public function setId($id) public static function setId($id)
{ {
$_SESSION['id'] = $id; $_SESSION['id'] = $id;
return; return;
} }
static public function setUserName($username) public static function setUserName($username)
{ {
$_SESSION['username'] = $username; $_SESSION['username'] = $username;
return; return;
} }
static public function setToken($token) public static function setToken($token)
{ {
$_SESSION['userToken'] = $token; $_SESSION['userToken'] = $token;
return; return;
} }
static public function setStorage($hybriauthStorage) public static function setStorage($hybriauthStorage)
{ {
$_SESSION['storage'] = $hybriauthStorage; $_SESSION['storage'] = $hybriauthStorage;
return; return;
} }
static public function getStorage() public static function getStorage()
{ {
return $_SESSION['storage'] ; return $_SESSION['storage'] ;
} }
static public function setHybridAuth($hybriauth) public static function setHybridAuth($hybriauth)
{ {
$_SESSION['auth'] = $hybriauth; $_SESSION['auth'] = $hybriauth;
return; return;
} }
static public function getHybridAuth() public static function getHybridAuth()
{ {
return $_SESSION['auth'] ; return $_SESSION['auth'] ;
} }
static public function isRegistered() public static function isRegistered()
{ {
if (isset($_SESSION['userProfile'])) { if (isset($_SESSION['userProfile'])) {
return true; return true;
@ -69,7 +67,7 @@ class Session
} }
} }
static public function redirectIfNotRegistered() public static function redirectIfNotRegistered()
{ {
if (isset($_SESSION['userProfile'])) { if (isset($_SESSION['userProfile'])) {
return ; return ;
@ -78,5 +76,4 @@ class Session
die('Ooops, something was wrong...'); die('Ooops, something was wrong...');
} }
} }
}
}

View file

@ -2,12 +2,13 @@
namespace MVC\Classe; namespace MVC\Classe;
class Tri{ class Tri
{
public static function cmp($a,$b){ public static function cmp($a, $b)
{
if ($a == $b) { if ($a == $b) {
return 0; return 0;
} }
return ($a < $b) ? -1 : 1; return ($a < $b) ? -1 : 1;
} }
} }

View file

@ -26,37 +26,36 @@ class Url
$url = parse_url($_SERVER['REQUEST_URI']); $url = parse_url($_SERVER['REQUEST_URI']);
$urlTrim = trim( $url['path'] , '/' ); $urlTrim = trim($url['path'], '/');
$urlParts = explode('/' , $urlTrim ); $urlParts = explode('/', $urlTrim);
//print_r($urlParts); //print_r($urlParts);
if(isset($urlParts[0])) { if (isset($urlParts[0])) {
//Récupération du nom de la page //Récupération du nom de la page
($urlParts[0] == 'index' || $urlParts[0] == '') ? $page['name'] = 'index' : $page['name'] = $urlParts[0]; ($urlParts[0] == 'index' || $urlParts[0] == '') ? $page['name'] = 'index' : $page['name'] = $urlParts[0];
unset($urlParts[0]); unset($urlParts[0]);
}else{ } else {
$page['name'] = 'index'; $page['name'] = 'index';
} }
//il se peut que l'on ait des variable avec ? dans l'url //il se peut que l'on ait des variable avec ? dans l'url
$urlQuery = explode('?' , $page['name'] ); $urlQuery = explode('?', $page['name']);
$page['name'] = $urlQuery[0]; $page['name'] = $urlQuery[0];
$page['name'] = strtolower($page['name']); $page['name'] = strtolower($page['name']);
if($page['name'] == 'control'){ if ($page['name'] == 'control') {
$page['control'] = true; $page['control'] = true;
($urlParts[1] == 'index' || $urlParts[1] == '' ) ? $page['name']='index' : $page['name']=$urlParts[1]; ($urlParts[1] == 'index' || $urlParts[1] == '') ? $page['name']='index' : $page['name']=$urlParts[1];
unset($urlParts[1]); unset($urlParts[1]);
} }
//vérification du nombre de parametres: //vérification du nombre de parametres:
$numParts = count($urlParts); $numParts = count($urlParts);
//s'il n'existe pas autant de clé que de valeurs, ce peut ^etre un module symfony //s'il n'existe pas autant de clé que de valeurs, ce peut ^etre un module symfony
if ( $numParts%2 != 0 ) { if ($numParts%2 != 0) {
//si un module symfony n'est pas reférencé avec le nom de la page, on renvoi un erreur //si un module symfony n'est pas reférencé avec le nom de la page, on renvoi un erreur
if( !in_array($page['name'], $this->registre->getIndex()) ){ if (!in_array($page['name'], $this->registre->getIndex())) {
$page['name'] = 'error'; $page['name'] = 'error';
$page['params'] = array(); $page['params'] = array();
$this->page = $page; $this->page = $page;
@ -70,9 +69,9 @@ class Url
} }
//cas d'utilisation normal : il existe autant de clé que de valeurs //cas d'utilisation normal : il existe autant de clé que de valeurs
} else if ( $numParts != 0 ) { } elseif ($numParts != 0) {
// si c'est un module alors on charge un a un les parametres // si c'est un module alors on charge un a un les parametres
if( in_array($page['name'], $this->registre->getIndex()) ){ if (in_array($page['name'], $this->registre->getIndex())) {
foreach ($urlParts as $key => $value) { foreach ($urlParts as $key => $value) {
$values[] = $value; $values[] = $value;
$keys[] = $key; $keys[] = $key;
@ -99,9 +98,9 @@ class Url
$page['name'] = lcfirst($page['name']); $page['name'] = lcfirst($page['name']);
$pageFile = CONTROLLERS_PATH . DIRECTORY_SEPARATOR . $page['name'] . '.php'; $pageFile = CONTROLLERS_PATH . DIRECTORY_SEPARATOR . $page['name'] . '.php';
//verification de l'existence de la page dans les controlleurs //verification de l'existence de la page dans les controlleurs
if($page['control']){ if ($page['control']) {
$pageFile = TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $page['name'] . '.php'; $pageFile = TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $page['name'] . '.php';
}else { } else {
//recherche du fichier controlleur correpondant HTTP1.1 ou HTTP1.0 //recherche du fichier controlleur correpondant HTTP1.1 ou HTTP1.0
switch ($method) { switch ($method) {
//cas des requètes HTTP1.1 //cas des requètes HTTP1.1
@ -132,10 +131,9 @@ class Url
} }
$this->page = $page; $this->page = $page;
$this->pageFile = $pageFile; $this->pageFile = $pageFile;
} }
static public function link_rewrite($isControlPatern, $page, $params = array()) public static function link_rewrite($isControlPatern, $page, $params = array())
{ {
if ($isControlPatern) { if ($isControlPatern) {
return self::controlLink_rewrite($page, $params); return self::controlLink_rewrite($page, $params);
@ -144,7 +142,7 @@ class Url
} }
} }
static public function module_link_rewrite($page, $params = array()) public static function module_link_rewrite($page, $params = array())
{ {
$stringParams = ''; $stringParams = '';
foreach ($params as $values) { foreach ($params as $values) {
@ -153,17 +151,16 @@ class Url
return '/' . $page . $stringParams; return '/' . $page . $stringParams;
} }
static private function link_rewrite_slashParam($page, $params = array()) private static function link_rewrite_slashParam($page, $params = array())
{ {
$stringParams = ''; $stringParams = '';
foreach ($params as $key => $values) { foreach ($params as $key => $values) {
$stringParams .= "/" . $key . "/" . $values; $stringParams .= "/" . $key . "/" . $values;
} }
return '/' . $page . $stringParams; return '/' . $page . $stringParams;
} }
static private function controlLink_rewrite($page, $params = array()) private static function controlLink_rewrite($page, $params = array())
{ {
$stringParams = ''; $stringParams = '';
foreach ($params as $key => $values) { foreach ($params as $key => $values) {
@ -172,7 +169,7 @@ class Url
return '/' . 'control' . '/' . $page . $stringParams; return '/' . 'control' . '/' . $page . $stringParams;
} }
static public function absolute_link_rewrite($isControlPatern, $page, $params = array()) public static function absolute_link_rewrite($isControlPatern, $page, $params = array())
{ {
$url = $_SERVER['HTTP_HOST']; $url = $_SERVER['HTTP_HOST'];
if ($isControlPatern) { if ($isControlPatern) {
@ -187,7 +184,5 @@ class Url
} }
return ($scheme . "://" . $url . $uri); return ($scheme . "://" . $url . $uri);
} }
} }

View file

@ -2,25 +2,25 @@
namespace MVC\Classe; namespace MVC\Classe;
class Vue{ class Vue
{
public $ecran; public $ecran;
public $block_body; public $block_body;
public function __construct($application){ public function __construct($application)
{
$templateData = array(); $templateData = array();
extract( $application->modele->page ); extract($application->modele->page);
ob_start(); ob_start();
if(file_exists(VIEW_PATH.DIRECTORY_SEPARATOR."view".DIRECTORY_SEPARATOR.$name.".blade.php")) { if (file_exists(VIEW_PATH.DIRECTORY_SEPARATOR."view".DIRECTORY_SEPARATOR.$name.".blade.php")) {
//l'inclusion du controlleur doit renvoyer le tableau $templateData //l'inclusion du controlleur doit renvoyer le tableau $templateData
require CONTROLLER_PATH . DIRECTORY_SEPARATOR . $name . '.php'; require CONTROLLER_PATH . DIRECTORY_SEPARATOR . $name . '.php';
//TEMPLATING BLADE //TEMPLATING BLADE
$paths = new \SplPriorityQueue; $paths = new \SplPriorityQueue;
$paths->insert(VIEW_PATH . DIRECTORY_SEPARATOR . "system", 100); $paths->insert(VIEW_PATH . DIRECTORY_SEPARATOR . "system", 100);
@ -34,12 +34,9 @@ class Vue{
$templateData[$key] = $value; $templateData[$key] = $value;
} }
echo $renderer->render($name, $templateData); echo $renderer->render($name, $templateData);
} else {
}else{
include CONTROLLER_PATH . DIRECTORY_SEPARATOR . $name . '.php'; include CONTROLLER_PATH . DIRECTORY_SEPARATOR . $name . '.php';
} }
$this->ecran = ob_get_clean(); $this->ecran = ob_get_clean();
}
}
} }

View file

@ -2,14 +2,11 @@
namespace MVC\Classe; namespace MVC\Classe;
class VueVide class VueVide
{ {
public $ecran; public $ecran;
public function __construct() public function __construct()
{ {
} }
} }

View file

@ -5,7 +5,7 @@ define("CONDUIT_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "include" . DIRE
define("CONTROLLERS_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "include" . DIRECTORY_SEPARATOR . "controlleurs"); define("CONTROLLERS_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "include" . DIRECTORY_SEPARATOR . "controlleurs");
define("CONFIG_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "config"); define("CONFIG_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "config");
define("LOG_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "logs"); define("LOG_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "logs");
define("LAYOUT_PATH" , APPLICATION_PATH . DIRECTORY_SEPARATOR . "layout"); define("LAYOUT_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "layout");
define("ACTION_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "include" . DIRECTORY_SEPARATOR . "actions"); define("ACTION_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "include" . DIRECTORY_SEPARATOR . "actions");
define("MODELS_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "include" . DIRECTORY_SEPARATOR . "modeles"); define("MODELS_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "include" . DIRECTORY_SEPARATOR . "modeles");
define("VIEW_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "include" . DIRECTORY_SEPARATOR . "vues"); define("VIEW_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "include" . DIRECTORY_SEPARATOR . "vues");
@ -13,4 +13,4 @@ define("CONTROLLER_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "include" . D
define("TRAITEMENT_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "traitements"); define("TRAITEMENT_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "traitements");
define("PUBLIC_PATH", dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . "public"); define("PUBLIC_PATH", dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . "public");
define("CONSOLE_PATH", dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . "console"); define("CONSOLE_PATH", dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . "console");
define("DATA_PATH", dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . "data"); define("DATA_PATH", dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . "data");

View file

@ -55,14 +55,13 @@ class DefaultAction extends Action
public function makeHttp11($data) public function makeHttp11($data)
{ {
$data = array('myval' => 25); $data = array('myval' => 25);
//Dumper::dump($data); //Dumper::dump($data);
\MVC\Classe\Logger::addLog('action','http11 make request'); \MVC\Classe\Logger::addLog('action', 'http11 make request');
$request = new HttpMethodRequete(); $request = new HttpMethodRequete();
$request->setUrl(Url::absolute_link_rewrite(false,'accueil',['var10'=>'val10']))->get($data); $request->setUrl(Url::absolute_link_rewrite(false, 'accueil', ['var10'=>'val10']))->get($data);
$request->setUrl(Url::absolute_link_rewrite(false,'accueil',['var10'=>'val10']))->post($data); $request->setUrl(Url::absolute_link_rewrite(false, 'accueil', ['var10'=>'val10']))->post($data);
$request->setUrl(Url::absolute_link_rewrite(false, 'accueil', ['var10' => 'val10']))->put($data); $request->setUrl(Url::absolute_link_rewrite(false, 'accueil', ['var10' => 'val10']))->put($data);
$request->setUrl(Url::absolute_link_rewrite(false,'accueil',['var10'=>'val10']))->delete($data); $request->setUrl(Url::absolute_link_rewrite(false, 'accueil', ['var10'=>'val10']))->delete($data);
} }
} }

View file

@ -17,6 +17,5 @@ class FooConduit extends Conduit
{ {
echo "load of foo"; echo "load of foo";
return $this->render('foo', array('page_title' => 'Foo', 'description' => 'FooConduit', 'id' => $this->id)); return $this->render('foo', array('page_title' => 'Foo', 'description' => 'FooConduit', 'id' => $this->id));
} }
} }

View file

@ -11,5 +11,4 @@ class IndexConduit extends Conduit
echo "IndexControlleur"; echo "IndexControlleur";
return $this->render('index', array("templating_a"=>'blade',"templating_b"=>'twig',"templating_c"=>'edge')); return $this->render('index', array("templating_a"=>'blade',"templating_b"=>'twig',"templating_c"=>'edge'));
} }
}
}

View file

@ -6,7 +6,7 @@ use MVC\Classe\Logger;
//Dumper::dump($_SESSION); //Dumper::dump($_SESSION);
\MVC\Classe\ControlleurAction::inserer('default.makeHttp11',[]); \MVC\Classe\ControlleurAction::inserer('default.makeHttp11', []);
$templateData = array("templating_a"=>'blade',"templating_b"=>'twig',"templating_c"=>'edge'); $templateData = array("templating_a"=>'blade',"templating_b"=>'twig',"templating_c"=>'edge');
Logger::addLog('ok', 'Hello world'); Logger::addLog('ok', 'Hello world');

View file

@ -5,12 +5,12 @@ define('DSN_BDD_DEFAULT', "mysql:host=localhost;dbname=default");
define('USER_BDD_DEFAULT', "user_default"); define('USER_BDD_DEFAULT', "user_default");
define('PASS_BDD_DEFAULT', "pass_default"); define('PASS_BDD_DEFAULT', "pass_default");
define('DSN_BDD1',"mysql:host=localhost;dbname=db1"); define('DSN_BDD1', "mysql:host=localhost;dbname=db1");
define('USER_BDD1',"user1"); define('USER_BDD1', "user1");
define('PASS_BDD1',"pass1"); define('PASS_BDD1', "pass1");
define('DSN_BDD2',"mysql:host=localhost;dbname=db2"); define('DSN_BDD2', "mysql:host=localhost;dbname=db2");
define('USER_BDD2',"user2"); define('USER_BDD2', "user2");
define('PASS_BDD2',"pass2"); define('PASS_BDD2', "pass2");
define('PATH_URL',$_SERVER['REQUEST_SCHEME'] . "://www.sand-framework.infoartsmedia.org"); define('PATH_URL', $_SERVER['REQUEST_SCHEME'] . "://www.sand-framework.infoartsmedia.org");

View file

@ -3,34 +3,34 @@
header("Content-Type: text/plain"); header("Content-Type: text/plain");
$bdd = new Bdd(); $bdd = new Bdd();
$dns = \MVC\Domain\Dns::getDNS($bdd,$url_params['ip']); $dns = \MVC\Domain\Dns::getDNS($bdd, $url_params['ip']);
$alias = array(); $alias = array();
$reverseDns = \MVC\Domain\Dns::getReverseDNS($bdd,$url_params['ip']); $reverseDns = \MVC\Domain\Dns::getReverseDNS($bdd, $url_params['ip']);
foreach($reverseDns as $row){ foreach ($reverseDns as $row) {
$tab = \MVC\Domain\Dns::getAliasFromDNS($bdd,$row['valeur2_dns']); $tab = \MVC\Domain\Dns::getAliasFromDNS($bdd, $row['valeur2_dns']);
$alias[] = $tab; $alias[] = $tab;
} }
//Affichage //Affichage
echo "<h3>DNS : </h3><br />"; echo "<h3>DNS : </h3><br />";
foreach($dns as $row){ foreach ($dns as $row) {
echo $row['valeur1_dns']; echo $row['valeur1_dns'];
echo "<br/>"; echo "<br/>";
} }
echo "<br />"; echo "<br />";
echo "<h3>Reverse DNS : </h3><br />"; echo "<h3>Reverse DNS : </h3><br />";
foreach($reverseDns as $row){ foreach ($reverseDns as $row) {
echo $row['valeur2_dns']; echo $row['valeur2_dns'];
echo "<br/>"; echo "<br/>";
} }
echo "<br />"; echo "<br />";
echo "<h3>Alias : </h3><br />"; echo "<h3>Alias : </h3><br />";
if(isset($alias[0][0]['valeur1_dns'])) { if (isset($alias[0][0]['valeur1_dns'])) {
foreach($alias as $rAlias){ foreach ($alias as $rAlias) {
foreach ($rAlias as $row) { foreach ($rAlias as $row) {
echo $row['valeur1_dns']; echo $row['valeur1_dns'];
echo "<br/>"; echo "<br/>";
} }
} }
} }

View file

@ -3,17 +3,17 @@
$path = PATH_URL; $path = PATH_URL;
$bdd = new \MVC\Classe\Bdd(); $bdd = new \MVC\Classe\Bdd();
\MVC\Domain\Host::addHost($bdd,$_POST['ip'],$_POST['nom']); \MVC\Domain\Host::addHost($bdd, $_POST['ip'], $_POST['nom']);
switch($_POST['from']){ switch ($_POST['from']) {
case "vlan-zone+" : case "vlan-zone+":
case "vlan-zone" : case "vlan-zone":
header("Location: $path{$_POST['from']}/vlan/{$_POST['vlan']}/alert/2/host/{$_POST['ip']}"); header("Location: $path{$_POST['from']}/vlan/{$_POST['vlan']}/alert/2/host/{$_POST['ip']}");
break; break;
case "ip-zone+" : case "ip-zone+":
case "ip-zone" : case "ip-zone":
header("Location: $path{$_POST['from']}/motif-ip/{$_POST['motif-ip']}/alert/2/host/{$_POST['ip']}"); header("Location: $path{$_POST['from']}/motif-ip/{$_POST['motif-ip']}/alert/2/host/{$_POST['ip']}");
break; break;
default: default:
header("Location: $path"); header("Location: $path");
} }

View file

@ -24,4 +24,4 @@ if (isset($argv[1])) {
} }
} else { } else {
print "No command was specified !\n"; print "No command was specified !\n";
} }

View file

@ -4,12 +4,13 @@ namespace MVC\Command;
class Cache class Cache
{ {
public static function help()
static public function help(){ {
print "explaination of the command\n\n"; print "explaination of the command\n\n";
} }
static public function clear(){ public static function clear()
{
$git_cache_rm = system('rm -f '.VIEW_PATH.'/cache/*', $git_cache_rm_retval); $git_cache_rm = system('rm -f '.VIEW_PATH.'/cache/*', $git_cache_rm_retval);
print $git_cache_rm_retval; print $git_cache_rm_retval;
$git_logs_rm = system('rm -f '.LOG_PATH.'/*', $git_logs_rm_retval); $git_logs_rm = system('rm -f '.LOG_PATH.'/*', $git_logs_rm_retval);
@ -18,10 +19,10 @@ class Cache
print "logs && cache cleared ! \n\n"; print "logs && cache cleared ! \n\n";
} }
static public function stabilize(){ public static function stabilize()
{
$git_cache_rm = system('rm -f '.VIEW_PATH.'/cache/*', $git_cache_rm_retval); $git_cache_rm = system('rm -f '.VIEW_PATH.'/cache/*', $git_cache_rm_retval);
print $git_cache_rm_retval; print $git_cache_rm_retval;
print "cache stabilized ! \n\n"; print "cache stabilized ! \n\n";
} }
}
}

View file

@ -4,66 +4,68 @@ namespace MVC\Command;
class Module class Module
{ {
static public function help(){ public static function help()
{
print "explaination of the command\n\n"; print "explaination of the command\n\n";
} }
static public function add(){ public static function add()
{
print "adding module...\n\n"; print "adding module...\n\n";
print "Quel est le module a ajouter ?\n1.Symfony\n2.Wordpress\n3.Prestashop\n4.PhpList\n5.Wanewsletter\n6.PHPmyNewletter\n>"; print "Quel est le module a ajouter ?\n1.Symfony\n2.Wordpress\n3.Prestashop\n4.PhpList\n5.Wanewsletter\n6.PHPmyNewletter\n>";
$module = trim(fgets(STDIN)); $module = trim(fgets(STDIN));
switch($module){ switch ($module) {
case 1: case 1:
print "Quel est le nom du module symfony à ajouter (default : symfony) ? "; print "Quel est le nom du module symfony à ajouter (default : symfony) ? ";
$name = trim(fgets(STDIN)); $name = trim(fgets(STDIN));
if($name !== '' && preg_match('#(.)+#',$name)){ if ($name !== '' && preg_match('#(.)+#', $name)) {
Module::addSymfony($name); Module::addSymfony($name);
}else{ } else {
Module::addSymfony('symfony'); Module::addSymfony('symfony');
} }
break; break;
case 2: case 2:
print "Quel est la version de Wordpress à ajouter (default : 5.4) ? "; print "Quel est la version de Wordpress à ajouter (default : 5.4) ? ";
$version = trim(fgets(STDIN)); $version = trim(fgets(STDIN));
if($version !== '' && preg_match('#(.)\.(.)#',$version)){ if ($version !== '' && preg_match('#(.)\.(.)#', $version)) {
Module::addWordpress($version); Module::addWordpress($version);
}else{ } else {
Module::addWordpress('5.4'); Module::addWordpress('5.4');
} }
break; break;
case 3: case 3:
print "Quel est la version de Prestashop à ajouter (default : 1.7.5.0) ? "; print "Quel est la version de Prestashop à ajouter (default : 1.7.5.0) ? ";
$version = trim(fgets(STDIN)); $version = trim(fgets(STDIN));
if($version !== '' && preg_match('#(.)\.(.)\.(.)\.(.)#',$version)){ if ($version !== '' && preg_match('#(.)\.(.)\.(.)\.(.)#', $version)) {
Module::addPrestashop($version); Module::addPrestashop($version);
}else{ } else {
Module::addPrestashop('1.7.5.0'); Module::addPrestashop('1.7.5.0');
} }
break; break;
case 4: case 4:
print "Quel est la version de PhpList à ajouter (default : 3.5.2) ? "; print "Quel est la version de PhpList à ajouter (default : 3.5.2) ? ";
$version = trim(fgets(STDIN)); $version = trim(fgets(STDIN));
if($version !== '' && preg_match('#(.)\.(.)\.(.)#',$version)){ if ($version !== '' && preg_match('#(.)\.(.)\.(.)#', $version)) {
Module::addPhplist($version); Module::addPhplist($version);
}else{ } else {
Module::addPhplist('3.5.2'); Module::addPhplist('3.5.2');
} }
break; break;
case 5: case 5:
print "Quel est la version de Wanewletter à ajouter (default : release-3.0.1) ? "; print "Quel est la version de Wanewletter à ajouter (default : release-3.0.1) ? ";
$version = trim(fgets(STDIN)); $version = trim(fgets(STDIN));
if($version !== '' && preg_match('#(.)\.(.)\.(.)#',$version)){ if ($version !== '' && preg_match('#(.)\.(.)\.(.)#', $version)) {
Module::addWanewsletter($version); Module::addWanewsletter($version);
}else{ } else {
Module::addWanewsletter('release-3.0.1'); Module::addWanewsletter('release-3.0.1');
} }
break; break;
case 6: case 6:
print "Quel est la version de PHPmyNewletter à ajouter (default : v2.0.5) ? "; print "Quel est la version de PHPmyNewletter à ajouter (default : v2.0.5) ? ";
$version = trim(fgets(STDIN)); $version = trim(fgets(STDIN));
if($version !== '' && preg_match('#(.)\.(.)\.(.)#',$version)){ if ($version !== '' && preg_match('#(.)\.(.)\.(.)#', $version)) {
Module::addPHPMyNewsletter($version); Module::addPHPMyNewsletter($version);
}else{ } else {
Module::addPHPMyNewsletter('v2.0.5'); Module::addPHPMyNewsletter('v2.0.5');
} }
break; break;
@ -71,17 +73,18 @@ class Module
} }
} }
static public function remove(){ public static function remove()
{
print "removing module...\n\n"; print "removing module...\n\n";
print "Quel est le module a supprimer?\n1.Symfony\n2.Wordpress\n3.Prestashop\n4.PhpList\n5.Wanewsletter\n6.PHPmyNewletter\n>"; print "Quel est le module a supprimer?\n1.Symfony\n2.Wordpress\n3.Prestashop\n4.PhpList\n5.Wanewsletter\n6.PHPmyNewletter\n>";
$module = trim(fgets(STDIN)); $module = trim(fgets(STDIN));
switch($module){ switch ($module) {
case 1: case 1:
print "Quel est le nom du module symfony à supprimer (default : symfony) ? "; print "Quel est le nom du module symfony à supprimer (default : symfony) ? ";
$name = trim(fgets(STDIN)); $name = trim(fgets(STDIN));
if($name !== '' && preg_match('#(.)+#',$name)){ if ($name !== '' && preg_match('#(.)+#', $name)) {
Module::removeSymfony($name); Module::removeSymfony($name);
}else{ } else {
Module::removeSymfony('symfony'); Module::removeSymfony('symfony');
} }
break; break;
@ -104,8 +107,8 @@ class Module
} }
} }
static private function addSymfony($name = 'symfony'){ private static function addSymfony($name = 'symfony')
{
$git_clone = shell_exec('cd '.MODULES_PATH.' && composer create-project symfony/website-skeleton '.$name); $git_clone = shell_exec('cd '.MODULES_PATH.' && composer create-project symfony/website-skeleton '.$name);
print $git_clone; print $git_clone;
$git_chmod = shell_exec('sudo chmod 775 '.MODULES_PATH.'/'.$name.' -R'); $git_chmod = shell_exec('sudo chmod 775 '.MODULES_PATH.'/'.$name.' -R');
@ -114,17 +117,17 @@ class Module
print $git_chown; print $git_chown;
$git_controlleur = shell_exec('cp '.CONSOLE_PATH.'/skel/module_symfony.php '.CONTROLLERS_PATH.'/'.$name.'.php'); $git_controlleur = shell_exec('cp '.CONSOLE_PATH.'/skel/module_symfony.php '.CONTROLLERS_PATH.'/'.$name.'.php');
$controlleur = file_get_contents(CONTROLLERS_PATH.'/'.$name.'.php'); $controlleur = file_get_contents(CONTROLLERS_PATH.'/'.$name.'.php');
$controlleur = preg_replace('%MODULE%',$name,$controlleur); $controlleur = preg_replace('%MODULE%', $name, $controlleur);
file_put_contents(CONTROLLERS_PATH.'/'.$name.'.php', $controlleur); file_put_contents(CONTROLLERS_PATH.'/'.$name.'.php', $controlleur);
print $git_controlleur; print $git_controlleur;
$git_modele = shell_exec('cp '.CONSOLE_PATH.'/skel/module.model '.MODELS_PATH.'/'.$name.'.model'); $git_modele = shell_exec('cp '.CONSOLE_PATH.'/skel/module.model '.MODELS_PATH.'/'.$name.'.model');
$modele = file_get_contents(MODELS_PATH.'/'.$name.'.model'); $modele = file_get_contents(MODELS_PATH.'/'.$name.'.model');
$modele = preg_replace('%MODULE%',$name,$modele); $modele = preg_replace('%MODULE%', $name, $modele);
file_put_contents(MODELS_PATH.'/'.$name.'.model', $modele); file_put_contents(MODELS_PATH.'/'.$name.'.model', $modele);
print $git_modele; print $git_modele;
$git_view = shell_exec('cp '.CONSOLE_PATH.'/skel/module.blade.php '.VIEW_PATH.'/view/'.$name.'.blade.php'); $git_view = shell_exec('cp '.CONSOLE_PATH.'/skel/module.blade.php '.VIEW_PATH.'/view/'.$name.'.blade.php');
$vue = file_get_contents(VIEW_PATH.'/view/'.$name.'.blade.php'); $vue = file_get_contents(VIEW_PATH.'/view/'.$name.'.blade.php');
$vue = preg_replace('%MODULE%','symfony',$vue); $vue = preg_replace('%MODULE%', 'symfony', $vue);
file_put_contents(VIEW_PATH.'/view/'.$name.'.blade.php', $vue); file_put_contents(VIEW_PATH.'/view/'.$name.'.blade.php', $vue);
print $git_view; print $git_view;
@ -141,10 +144,9 @@ class Module
."\n'.$name.' : Application permettant d'intégrer un module avec symfony" ."\n'.$name.' : Application permettant d'intégrer un module avec symfony"
."\n " ."\n "
."\n et de créer la base de données!\n"; ."\n et de créer la base de données!\n";
} }
static public function removeSymfony($name = 'symfony'){ public static function removeSymfony($name = 'symfony')
{
$git_clone = system('rm -Rf '.MODULES_PATH.'/'.$name, $git_clone_retval); $git_clone = system('rm -Rf '.MODULES_PATH.'/'.$name, $git_clone_retval);
print $git_clone_retval; print $git_clone_retval;
$git_ln_1 = system('rm -Rf '.PUBLIC_PATH.'/'.$name, $git_ln_1_retval); $git_ln_1 = system('rm -Rf '.PUBLIC_PATH.'/'.$name, $git_ln_1_retval);
@ -157,8 +159,8 @@ class Module
print $git_view_retval; print $git_view_retval;
} }
static public function addWordpress($version = '5.4'){ public static function addWordpress($version = '5.4')
{
$git_clone = shell_exec('cd '.MODULES_PATH.' && git clone https://github.com/WordPress/WordPress.git wordpress'); $git_clone = shell_exec('cd '.MODULES_PATH.' && git clone https://github.com/WordPress/WordPress.git wordpress');
print $git_clone; print $git_clone;
$git_fetch = shell_exec('cd '.MODULES_PATH.'/wordpress && git fetch --all --tags'); $git_fetch = shell_exec('cd '.MODULES_PATH.'/wordpress && git fetch --all --tags');
@ -172,21 +174,21 @@ class Module
$git_ln_1 = shell_exec('cd '.PUBLIC_PATH.' && ln -s ../application/modules/wordpress/ wordpress'); $git_ln_1 = shell_exec('cd '.PUBLIC_PATH.' && ln -s ../application/modules/wordpress/ wordpress');
print $git_ln_1; print $git_ln_1;
$languages = shell_exec('cp '.CONSOLE_PATH.'/skel/wordpress '.MODULES_PATH ); $languages = shell_exec('cp '.CONSOLE_PATH.'/skel/wordpress '.MODULES_PATH);
$git_controlleur = shell_exec('cp '.CONSOLE_PATH.'/skel/module.php '.CONTROLLERS_PATH.'/wordpress.php'); $git_controlleur = shell_exec('cp '.CONSOLE_PATH.'/skel/module.php '.CONTROLLERS_PATH.'/wordpress.php');
$controlleur = file_get_contents(CONTROLLERS_PATH.'/wordpress.php'); $controlleur = file_get_contents(CONTROLLERS_PATH.'/wordpress.php');
$controlleur = preg_replace('%MODULE%','wordpress',$controlleur); $controlleur = preg_replace('%MODULE%', 'wordpress', $controlleur);
file_put_contents(CONTROLLERS_PATH.'/wordpress.php', $controlleur); file_put_contents(CONTROLLERS_PATH.'/wordpress.php', $controlleur);
print $git_controlleur; print $git_controlleur;
$git_modele = shell_exec('cp '.CONSOLE_PATH.'/skel/module.model '.MODELS_PATH.'/wordpress.model'); $git_modele = shell_exec('cp '.CONSOLE_PATH.'/skel/module.model '.MODELS_PATH.'/wordpress.model');
$modele = file_get_contents(MODELS_PATH.'/wordpress.model'); $modele = file_get_contents(MODELS_PATH.'/wordpress.model');
$modele = preg_replace('%MODULE%','wordpress',$modele); $modele = preg_replace('%MODULE%', 'wordpress', $modele);
file_put_contents(MODELS_PATH.'/wordpress.model', $modele); file_put_contents(MODELS_PATH.'/wordpress.model', $modele);
print $git_modele; print $git_modele;
$git_view = shell_exec('cp '.CONSOLE_PATH.'/skel/module.blade.php '.VIEW_PATH.'/view/wordpress.blade.php'); $git_view = shell_exec('cp '.CONSOLE_PATH.'/skel/module.blade.php '.VIEW_PATH.'/view/wordpress.blade.php');
$vue = file_get_contents(VIEW_PATH.'/view/wordpress.blade.php'); $vue = file_get_contents(VIEW_PATH.'/view/wordpress.blade.php');
$vue = preg_replace('%MODULE%','wordpress',$vue); $vue = preg_replace('%MODULE%', 'wordpress', $vue);
file_put_contents(VIEW_PATH.'/view/wordpress.blade.php', $vue); file_put_contents(VIEW_PATH.'/view/wordpress.blade.php', $vue);
print $git_view; print $git_view;
@ -194,10 +196,9 @@ class Module
."\nwordpress : Application permettant de générer un blog wordpress" ."\nwordpress : Application permettant de générer un blog wordpress"
."\n " ."\n "
."\n et de créer la base de données!\n"; ."\n et de créer la base de données!\n";
} }
static public function removeWordpress(){ public static function removeWordpress()
{
$git_clone = system('sudo rm -Rf '.MODULES_PATH.'/wordpress', $git_clone_retval); $git_clone = system('sudo rm -Rf '.MODULES_PATH.'/wordpress', $git_clone_retval);
print $git_clone_retval; print $git_clone_retval;
$git_ln_1 = system('rm -Rf '.PUBLIC_PATH.'/wordpress', $git_ln_1_retval); $git_ln_1 = system('rm -Rf '.PUBLIC_PATH.'/wordpress', $git_ln_1_retval);
@ -210,8 +211,8 @@ class Module
print $git_view_retval; print $git_view_retval;
} }
static public function addPrestashop($version = '1.7.5.0'){ public static function addPrestashop($version = '1.7.5.0')
{
$git_clone = shell_exec('cd '.MODULES_PATH.' && git clone https://github.com/PrestaShop/PrestaShop.git prestashop'); $git_clone = shell_exec('cd '.MODULES_PATH.' && git clone https://github.com/PrestaShop/PrestaShop.git prestashop');
print $git_clone; print $git_clone;
$git_fetch = shell_exec('cd '.MODULES_PATH.'/prestashop && git fetch --all --tags'); $git_fetch = shell_exec('cd '.MODULES_PATH.'/prestashop && git fetch --all --tags');
@ -230,17 +231,17 @@ class Module
print $git_ln_2; print $git_ln_2;
$git_controlleur = shell_exec('cp '.CONSOLE_PATH.'/skel/module.php '.CONTROLLERS_PATH.'/prestashop.php'); $git_controlleur = shell_exec('cp '.CONSOLE_PATH.'/skel/module.php '.CONTROLLERS_PATH.'/prestashop.php');
$controlleur = file_get_contents(CONTROLLERS_PATH.'/prestashop.php'); $controlleur = file_get_contents(CONTROLLERS_PATH.'/prestashop.php');
$controlleur = preg_replace('%MODULE%','prestashop',$controlleur); $controlleur = preg_replace('%MODULE%', 'prestashop', $controlleur);
file_put_contents(CONTROLLERS_PATH.'/prestashop.php', $controlleur); file_put_contents(CONTROLLERS_PATH.'/prestashop.php', $controlleur);
print $git_controlleur; print $git_controlleur;
$git_modele = shell_exec('cp '.CONSOLE_PATH.'/skel/module.model '.MODELS_PATH.'/prestashop.model'); $git_modele = shell_exec('cp '.CONSOLE_PATH.'/skel/module.model '.MODELS_PATH.'/prestashop.model');
$controlleur = file_get_contents(MODELS_PATH.'/prestashop.model'); $controlleur = file_get_contents(MODELS_PATH.'/prestashop.model');
$controlleur = preg_replace('%MODULE%','prestashop',$controlleur); $controlleur = preg_replace('%MODULE%', 'prestashop', $controlleur);
file_put_contents(MODELS_PATH.'/prestashop.model', $controlleur); file_put_contents(MODELS_PATH.'/prestashop.model', $controlleur);
print $git_modele; print $git_modele;
$git_view = shell_exec('cp '.CONSOLE_PATH.'/skel/module.blade.php '.VIEW_PATH.'/view/prestashop.blade.php'); $git_view = shell_exec('cp '.CONSOLE_PATH.'/skel/module.blade.php '.VIEW_PATH.'/view/prestashop.blade.php');
$controlleur = file_get_contents(VIEW_PATH.'/view/prestashop.blade.php'); $controlleur = file_get_contents(VIEW_PATH.'/view/prestashop.blade.php');
$controlleur = preg_replace('%MODULE%','prestashop',$controlleur); $controlleur = preg_replace('%MODULE%', 'prestashop', $controlleur);
file_put_contents(VIEW_PATH.'/view/prestashop.blade.php', $controlleur); file_put_contents(VIEW_PATH.'/view/prestashop.blade.php', $controlleur);
print $git_view; print $git_view;
@ -249,8 +250,8 @@ class Module
."\n " ."\n "
."\n et de créer la base de données!\n"; ."\n et de créer la base de données!\n";
} }
static public function removePrestashop(){ public static function removePrestashop()
{
$git_clone = system('rm -Rf '.MODULES_PATH.'/prestashop', $git_clone_retval); $git_clone = system('rm -Rf '.MODULES_PATH.'/prestashop', $git_clone_retval);
print $git_clone_retval; print $git_clone_retval;
$git_ln_1 = system('rm -Rf '.PUBLIC_PATH.'/prestashop', $git_ln_1_retval); $git_ln_1 = system('rm -Rf '.PUBLIC_PATH.'/prestashop', $git_ln_1_retval);
@ -263,7 +264,8 @@ class Module
print $git_view_retval; print $git_view_retval;
} }
static public function addPhplist($version = '3.5.2'){ public static function addPhplist($version = '3.5.2')
{
/*$git_clone = shell_exec('cd '.MODULES_PATH.' && git clone https://github.com/phpList/phplist3.git phplist'); /*$git_clone = shell_exec('cd '.MODULES_PATH.' && git clone https://github.com/phpList/phplist3.git phplist');
print $git_clone; print $git_clone;
@ -290,65 +292,65 @@ class Module
print $git_chown; print $git_chown;
$git_controlleur = shell_exec('cp '.CONSOLE_PATH.'/skel/module.php '.CONTROLLERS_PATH.'/phplist.php'); $git_controlleur = shell_exec('cp '.CONSOLE_PATH.'/skel/module.php '.CONTROLLERS_PATH.'/phplist.php');
$controlleur = file_get_contents(CONTROLLERS_PATH.'/phplist.php'); $controlleur = file_get_contents(CONTROLLERS_PATH.'/phplist.php');
$controlleur = preg_replace('%MODULE%','phplist',$controlleur); $controlleur = preg_replace('%MODULE%', 'phplist', $controlleur);
file_put_contents(CONTROLLERS_PATH.'/phplist.php', $controlleur); file_put_contents(CONTROLLERS_PATH.'/phplist.php', $controlleur);
print $git_controlleur; print $git_controlleur;
$git_modele = shell_exec('cp '.CONSOLE_PATH.'/skel/module.model '.MODELS_PATH.'/phplist.model'); $git_modele = shell_exec('cp '.CONSOLE_PATH.'/skel/module.model '.MODELS_PATH.'/phplist.model');
$controlleur = file_get_contents(MODELS_PATH.'/phplist.model'); $controlleur = file_get_contents(MODELS_PATH.'/phplist.model');
$controlleur = preg_replace('%MODULE%','phplist',$controlleur); $controlleur = preg_replace('%MODULE%', 'phplist', $controlleur);
file_put_contents(MODELS_PATH.'/phplist.model', $controlleur); file_put_contents(MODELS_PATH.'/phplist.model', $controlleur);
print $git_modele; print $git_modele;
$git_view = shell_exec('cp '.CONSOLE_PATH.'/skel/module.blade.php '.VIEW_PATH.'/view/phplist.blade.php'); $git_view = shell_exec('cp '.CONSOLE_PATH.'/skel/module.blade.php '.VIEW_PATH.'/view/phplist.blade.php');
$controlleur = file_get_contents(VIEW_PATH.'/view/phplist.blade.php'); $controlleur = file_get_contents(VIEW_PATH.'/view/phplist.blade.php');
$controlleur = preg_replace('%MODULE%','phplist',$controlleur); $controlleur = preg_replace('%MODULE%', 'phplist', $controlleur);
file_put_contents(VIEW_PATH.'/view/phplist.blade.php', $controlleur); file_put_contents(VIEW_PATH.'/view/phplist.blade.php', $controlleur);
print $git_view; print $git_view;
print "Quel est le host de la base de donnees (default:192.168.1.70) ? "; print "Quel est le host de la base de donnees (default:192.168.1.70) ? ";
$host = trim(fgets(STDIN)); $host = trim(fgets(STDIN));
if($host !== '' && preg_match('#(.)+#',$host)){ if ($host !== '' && preg_match('#(.)+#', $host)) {
$host = $host; $host = $host;
}else{ } else {
$host = '192.168.1.70'; $host = '192.168.1.70';
} }
print "Quel est le nom de la base de donnees (default:SAND_phplist) ? "; print "Quel est le nom de la base de donnees (default:SAND_phplist) ? ";
$host_name = trim(fgets(STDIN)); $host_name = trim(fgets(STDIN));
if($host_name !== '' && preg_match('#(.)+#',$host_name)){ if ($host_name !== '' && preg_match('#(.)+#', $host_name)) {
$host_name = $host_name; $host_name = $host_name;
}else{ } else {
$host_name = 'SAND_phplist'; $host_name = 'SAND_phplist';
} }
print "Quel est le user de la base de donnees (default:sand) ? "; print "Quel est le user de la base de donnees (default:sand) ? ";
$user = trim(fgets(STDIN)); $user = trim(fgets(STDIN));
if($user !== '' && preg_match('#(.)+#',$user)){ if ($user !== '' && preg_match('#(.)+#', $user)) {
$user = $user; $user = $user;
}else{ } else {
$user = 'sand'; $user = 'sand';
} }
print "Quel est le pass de la base de donnees (default:sand) ? "; print "Quel est le pass de la base de donnees (default:sand) ? ";
$pass = trim(fgets(STDIN)); $pass = trim(fgets(STDIN));
if($pass !== '' && preg_match('#(.)+#',$pass)){ if ($pass !== '' && preg_match('#(.)+#', $pass)) {
$pass = $pass; $pass = $pass;
}else{ } else {
$pass = 'sand'; $pass = 'sand';
} }
$config_skel = shell_exec('cp '.CONSOLE_PATH.'/skel/phplist/config.skel.php '.MODULES_PATH.'/phplist/public_html/lists/config/config.php'); $config_skel = shell_exec('cp '.CONSOLE_PATH.'/skel/phplist/config.skel.php '.MODULES_PATH.'/phplist/public_html/lists/config/config.php');
$config = file_get_contents(MODULES_PATH.'/phplist/public_html/lists/config/config.php'); $config = file_get_contents(MODULES_PATH.'/phplist/public_html/lists/config/config.php');
$config = preg_replace('%HOST_HOSTNAME%',$host,$config); $config = preg_replace('%HOST_HOSTNAME%', $host, $config);
$config = preg_replace('%HOST_USERNAME%',$user,$config); $config = preg_replace('%HOST_USERNAME%', $user, $config);
$config = preg_replace('%HOST_NAME%',$host_name,$config); $config = preg_replace('%HOST_NAME%', $host_name, $config);
$config = preg_replace('%HOST_PASSWORD%',$pass,$config); $config = preg_replace('%HOST_PASSWORD%', $pass, $config);
$config = preg_replace('%HOST_PAGEROOT%','/phplist',$config); $config = preg_replace('%HOST_PAGEROOT%', '/phplist', $config);
file_put_contents(MODULES_PATH.'/phplist/public_html/lists/config/config.php',$config); file_put_contents(MODULES_PATH.'/phplist/public_html/lists/config/config.php', $config);
print "\n\nN'oubliez pas d'ajouter au fichier '/application/modules/setup/registre.model' :" print "\n\nN'oubliez pas d'ajouter au fichier '/application/modules/setup/registre.model' :"
."\nphplist : Application permettant de générer une newsletter phplist" ."\nphplist : Application permettant de générer une newsletter phplist"
."\n " ."\n "
."\n et de créer la base de données!\n"; ."\n et de créer la base de données!\n";
} }
static public function removePhplist(){ public static function removePhplist()
{
$git_clone = system('rm -Rf '.MODULES_PATH.'/phplist', $git_clone_retval); $git_clone = system('rm -Rf '.MODULES_PATH.'/phplist', $git_clone_retval);
print $git_clone_retval; print $git_clone_retval;
$git_ln_1 = system('rm -Rf '.PUBLIC_PATH.'/phplist', $git_ln_1_retval); $git_ln_1 = system('rm -Rf '.PUBLIC_PATH.'/phplist', $git_ln_1_retval);
@ -362,8 +364,8 @@ class Module
$git_view = system('rm -f '.VIEW_PATH.'/view/phplist.blade.php', $git_view_retval); $git_view = system('rm -f '.VIEW_PATH.'/view/phplist.blade.php', $git_view_retval);
print $git_view_retval; print $git_view_retval;
} }
static public function addWanewsletter($version = 'release-3.0.1'){ public static function addWanewsletter($version = 'release-3.0.1')
{
$git_clone = shell_exec('cd '.MODULES_PATH.' && git clone https://github.com/wascripts/wanewsletter.git wanewsletter'); $git_clone = shell_exec('cd '.MODULES_PATH.' && git clone https://github.com/wascripts/wanewsletter.git wanewsletter');
print $git_clone; print $git_clone;
$git_fetch = shell_exec('cd '.MODULES_PATH.'/wanewsletter && git fetch --all --tags'); $git_fetch = shell_exec('cd '.MODULES_PATH.'/wanewsletter && git fetch --all --tags');
@ -380,17 +382,17 @@ class Module
print $git_chown; print $git_chown;
$git_controlleur = shell_exec('cp '.CONSOLE_PATH.'/skel/module.php '.CONTROLLERS_PATH.'/wanewsletter.php'); $git_controlleur = shell_exec('cp '.CONSOLE_PATH.'/skel/module.php '.CONTROLLERS_PATH.'/wanewsletter.php');
$controlleur = file_get_contents(CONTROLLERS_PATH.'/wanewsletter.php'); $controlleur = file_get_contents(CONTROLLERS_PATH.'/wanewsletter.php');
$controlleur = preg_replace('%MODULE%','wanewsletter',$controlleur); $controlleur = preg_replace('%MODULE%', 'wanewsletter', $controlleur);
file_put_contents(CONTROLLERS_PATH.'/wanewsletter.php', $controlleur); file_put_contents(CONTROLLERS_PATH.'/wanewsletter.php', $controlleur);
print $git_controlleur; print $git_controlleur;
$git_modele = shell_exec('cp '.CONSOLE_PATH.'/skel/module.model '.MODELS_PATH.'/wanewsletter.model'); $git_modele = shell_exec('cp '.CONSOLE_PATH.'/skel/module.model '.MODELS_PATH.'/wanewsletter.model');
$controlleur = file_get_contents(MODELS_PATH.'/wanewsletter.model'); $controlleur = file_get_contents(MODELS_PATH.'/wanewsletter.model');
$controlleur = preg_replace('%MODULE%','wanewsletter',$controlleur); $controlleur = preg_replace('%MODULE%', 'wanewsletter', $controlleur);
file_put_contents(MODELS_PATH.'/wanewsletter.model', $controlleur); file_put_contents(MODELS_PATH.'/wanewsletter.model', $controlleur);
print $git_modele; print $git_modele;
$git_view = shell_exec('cp '.CONSOLE_PATH.'/skel/module.blade.php '.VIEW_PATH.'/view/wanewsletter.blade.php'); $git_view = shell_exec('cp '.CONSOLE_PATH.'/skel/module.blade.php '.VIEW_PATH.'/view/wanewsletter.blade.php');
$controlleur = file_get_contents(VIEW_PATH.'/view/wanewsletter.blade.php'); $controlleur = file_get_contents(VIEW_PATH.'/view/wanewsletter.blade.php');
$controlleur = preg_replace('%MODULE%','wanewsletter',$controlleur); $controlleur = preg_replace('%MODULE%', 'wanewsletter', $controlleur);
file_put_contents(VIEW_PATH.'/view/wanewsletter.blade.php', $controlleur); file_put_contents(VIEW_PATH.'/view/wanewsletter.blade.php', $controlleur);
print $git_view; print $git_view;
@ -437,8 +439,8 @@ class Module
."\n " ."\n "
."\n et de créer la base de données!\n"; ."\n et de créer la base de données!\n";
} }
static public function removeWanewsletter(){ public static function removeWanewsletter()
{
$git_clone = system('rm -Rf '.MODULES_PATH.'/wanewsletter', $git_clone_retval); $git_clone = system('rm -Rf '.MODULES_PATH.'/wanewsletter', $git_clone_retval);
print $git_clone_retval; print $git_clone_retval;
$git_ln_1 = system('rm -Rf '.PUBLIC_PATH.'/wanewsletter', $git_ln_1_retval); $git_ln_1 = system('rm -Rf '.PUBLIC_PATH.'/wanewsletter', $git_ln_1_retval);
@ -450,8 +452,8 @@ class Module
$git_view = system('rm -f '.VIEW_PATH.'/view/wanewsletter.blade.php', $git_view_retval); $git_view = system('rm -f '.VIEW_PATH.'/view/wanewsletter.blade.php', $git_view_retval);
print $git_view_retval; print $git_view_retval;
} }
static public function addPHPMyNewsletter($version = 'v2.0.5'){ public static function addPHPMyNewsletter($version = 'v2.0.5')
{
$git_clone = shell_exec('cd '.MODULES_PATH.' && git clone https://github.com/Arnaud69/phpmynewsletter-2.0.git phpmynewsletter'); $git_clone = shell_exec('cd '.MODULES_PATH.' && git clone https://github.com/Arnaud69/phpmynewsletter-2.0.git phpmynewsletter');
print $git_clone; print $git_clone;
$git_fetch = shell_exec('cd '.MODULES_PATH.'/phpmynewsletter && git fetch --all --tags'); $git_fetch = shell_exec('cd '.MODULES_PATH.'/phpmynewsletter && git fetch --all --tags');
@ -468,17 +470,17 @@ class Module
print $git_chown; print $git_chown;
$git_controlleur = shell_exec('cp '.CONSOLE_PATH.'/skel/module.php '.CONTROLLERS_PATH.'/phpmynewsletter.php'); $git_controlleur = shell_exec('cp '.CONSOLE_PATH.'/skel/module.php '.CONTROLLERS_PATH.'/phpmynewsletter.php');
$controlleur = file_get_contents(CONTROLLERS_PATH.'/phpmynewsletter.php'); $controlleur = file_get_contents(CONTROLLERS_PATH.'/phpmynewsletter.php');
$controlleur = preg_replace('%MODULE%','phpmynewsletter',$controlleur); $controlleur = preg_replace('%MODULE%', 'phpmynewsletter', $controlleur);
file_put_contents(CONTROLLERS_PATH.'/phpmynewsletter.php', $controlleur); file_put_contents(CONTROLLERS_PATH.'/phpmynewsletter.php', $controlleur);
print $git_controlleur; print $git_controlleur;
$git_modele = shell_exec('cp '.CONSOLE_PATH.'/skel/module.model '.MODELS_PATH.'/phpmynewsletter.model'); $git_modele = shell_exec('cp '.CONSOLE_PATH.'/skel/module.model '.MODELS_PATH.'/phpmynewsletter.model');
$controlleur = file_get_contents(MODELS_PATH.'/phpmynewsletter.model'); $controlleur = file_get_contents(MODELS_PATH.'/phpmynewsletter.model');
$controlleur = preg_replace('%MODULE%','phpmynewsletter',$controlleur); $controlleur = preg_replace('%MODULE%', 'phpmynewsletter', $controlleur);
file_put_contents(MODELS_PATH.'/phpmynewsletter.model', $controlleur); file_put_contents(MODELS_PATH.'/phpmynewsletter.model', $controlleur);
print $git_modele; print $git_modele;
$git_view = shell_exec('cp '.CONSOLE_PATH.'/skel/module.blade.php '.VIEW_PATH.'/view/phpmynewsletter.blade.php'); $git_view = shell_exec('cp '.CONSOLE_PATH.'/skel/module.blade.php '.VIEW_PATH.'/view/phpmynewsletter.blade.php');
$controlleur = file_get_contents(VIEW_PATH.'/view/phpmynewsletter.blade.php'); $controlleur = file_get_contents(VIEW_PATH.'/view/phpmynewsletter.blade.php');
$controlleur = preg_replace('%MODULE%','phpmynewsletter',$controlleur); $controlleur = preg_replace('%MODULE%', 'phpmynewsletter', $controlleur);
file_put_contents(VIEW_PATH.'/view/phpmynewsletter.blade.php', $controlleur); file_put_contents(VIEW_PATH.'/view/phpmynewsletter.blade.php', $controlleur);
print $git_view; print $git_view;
@ -525,8 +527,8 @@ class Module
."\n " ."\n "
."\n et de créer la base de données!\n"; ."\n et de créer la base de données!\n";
} }
static public function removePHPMyNewsletter(){ public static function removePHPMyNewsletter()
{
$git_clone = system('rm -Rf '.MODULES_PATH.'/phpmynewsletter', $git_clone_retval); $git_clone = system('rm -Rf '.MODULES_PATH.'/phpmynewsletter', $git_clone_retval);
print $git_clone_retval; print $git_clone_retval;
$git_ln_1 = system('rm -Rf '.PUBLIC_PATH.'/phpmynewsletter', $git_ln_1_retval); $git_ln_1 = system('rm -Rf '.PUBLIC_PATH.'/phpmynewsletter', $git_ln_1_retval);
@ -538,4 +540,4 @@ class Module
$git_view = system('rm -f '.VIEW_PATH.'/view/phpmynewsletter.blade.php', $git_view_retval); $git_view = system('rm -f '.VIEW_PATH.'/view/phpmynewsletter.blade.php', $git_view_retval);
print $git_view_retval; print $git_view_retval;
} }
} }

View file

@ -4,37 +4,39 @@ namespace MVC\Command;
class Page class Page
{ {
public static function help()
static public function help(){ {
print "explaination of the command\n\n"; print "explaination of the command\n\n";
} }
static public function add(){ public static function add()
{
print "adding page...\n\n"; print "adding page...\n\n";
print "Quel est le nom de la page a ajouter? "; print "Quel est le nom de la page a ajouter? ";
$page = trim(fgets(STDIN)); $page = trim(fgets(STDIN));
$git_controlleur = shell_exec('cp '.CONSOLE_PATH.'/skel/page.php '.CONTROLLERS_PATH.'/'.$page.'.php'); $git_controlleur = shell_exec('cp '.CONSOLE_PATH.'/skel/page.php '.CONTROLLERS_PATH.'/'.$page.'.php');
$controlleur = file_get_contents(CONTROLLERS_PATH.'/'.$page.'.php'); $controlleur = file_get_contents(CONTROLLERS_PATH.'/'.$page.'.php');
$controlleur = preg_replace('%PAGE%',$page,$controlleur); $controlleur = preg_replace('%PAGE%', $page, $controlleur);
file_put_contents(CONTROLLERS_PATH.'/'.$page.'.php', $controlleur); file_put_contents(CONTROLLERS_PATH.'/'.$page.'.php', $controlleur);
print $git_controlleur; print $git_controlleur;
$git_modele = shell_exec('cp '.CONSOLE_PATH.'/skel/page.model '.MODELS_PATH.'/'.$page.'.model'); $git_modele = shell_exec('cp '.CONSOLE_PATH.'/skel/page.model '.MODELS_PATH.'/'.$page.'.model');
$controlleur = file_get_contents(MODELS_PATH.'/'.$page.'.model'); $controlleur = file_get_contents(MODELS_PATH.'/'.$page.'.model');
$controlleur = preg_replace('%PAGE%',$page,$controlleur); $controlleur = preg_replace('%PAGE%', $page, $controlleur);
file_put_contents(MODELS_PATH.'/'.$page.'.model', $controlleur); file_put_contents(MODELS_PATH.'/'.$page.'.model', $controlleur);
print $git_modele; print $git_modele;
$git_view = shell_exec('cp '.CONSOLE_PATH.'/skel/page.blade.php '.VIEW_PATH.'/view/'.$page.'.blade.php'); $git_view = shell_exec('cp '.CONSOLE_PATH.'/skel/page.blade.php '.VIEW_PATH.'/view/'.$page.'.blade.php');
$controlleur = file_get_contents(VIEW_PATH.'/view/'.$page.'.blade.php'); $controlleur = file_get_contents(VIEW_PATH.'/view/'.$page.'.blade.php');
$controlleur = preg_replace('%PAGE%',$page,$controlleur); $controlleur = preg_replace('%PAGE%', $page, $controlleur);
file_put_contents(VIEW_PATH.'/view/'.$page.'.blade.php', $controlleur); file_put_contents(VIEW_PATH.'/view/'.$page.'.blade.php', $controlleur);
print $git_view; print $git_view;
} }
static public function remove(){ public static function remove()
{
print "removing page...\n\n"; print "removing page...\n\n";
print "Quel est le nom de la page a supprimer? "; print "Quel est le nom de la page a supprimer? ";
$handle = fopen ("php://stdin","r"); $handle = fopen("php://stdin", "r");
$page = fgets($handle); $page = fgets($handle);
$git_controlleur = system('rm -f '.CONTROLLERS_PATH.'/'.$page.'.php', $git_controlleur_retval); $git_controlleur = system('rm -f '.CONTROLLERS_PATH.'/'.$page.'.php', $git_controlleur_retval);
print $git_controlleur_retval; print $git_controlleur_retval;
@ -43,5 +45,4 @@ class Page
$git_view = system('rm -f '.VIEW_PATH.'/view/'.$page.'.blade.php', $git_view_retval); $git_view = system('rm -f '.VIEW_PATH.'/view/'.$page.'.blade.php', $git_view_retval);
print $git_view_retval; print $git_view_retval;
} }
}
}

View file

@ -4,14 +4,14 @@ namespace MVC\Command;
class Symfony class Symfony
{ {
public static function help()
static public function help(){ {
print "explaination of the command\n\n"; print "explaination of the command\n\n";
} }
static public function stabilize(){ public static function stabilize()
{
print "stabilize symfony module...\n\n"; print "stabilize symfony module...\n\n";
$symfony_module = shell_exec('sudo cp '.CONSOLE_PATH.'/skel/symfony '.VENDOR_PATH.' -Rf'); $symfony_module = shell_exec('sudo cp '.CONSOLE_PATH.'/skel/symfony '.VENDOR_PATH.' -Rf');
} }
}
}

View file

@ -1,3 +1,3 @@
<?php <?php
$app = new MVC\Classe\Modular($name,'MODULE',$url_params); $app = new MVC\Classe\Modular($name, 'MODULE', $url_params);
$templateData = array('app' => $app); $templateData = array('app' => $app);

View file

@ -3,5 +3,5 @@
use MVC\Classe\Session; use MVC\Classe\Session;
Session::start(); Session::start();
$app = new MVC\Classe\Modular($name,'MODULE',$url_params); $app = new MVC\Classe\Modular($name, 'MODULE', $url_params);
$templateData = array('app' => $app); $templateData = array('app' => $app);

View file

@ -4,4 +4,4 @@
use MVC\Classe\Logger; use MVC\Classe\Logger;
$templateData = array("templating_a"=>'blade',"templating_b"=>'twig',"templating_c"=>'edge'); $templateData = array("templating_a"=>'blade',"templating_b"=>'twig',"templating_c"=>'edge');
Logger::addLog('ok', 'Hello world'); Logger::addLog('ok', 'Hello world');

View file

@ -663,7 +663,7 @@ define('UPLOADIMAGES_DIR', 'uploadimages');
// EMBEDEXTERNALIMAGES // EMBEDEXTERNALIMAGES
// this flag will fetch images in your content that are remotely hosted and put them // this flag will fetch images in your content that are remotely hosted and put them
// inside the message that is sent. // inside the message that is sent.
define('EMBEDEXTERNALIMAGES',false); define('EMBEDEXTERNALIMAGES', false);
// Manual text part, will give you an input box for the text version of the message // Manual text part, will give you an input box for the text version of the message

View file

@ -1,6 +1,7 @@
<?php <?php
namespace App\Controller; namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;

View file

@ -1,6 +1,7 @@
<?php <?php
namespace App\Controller; namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
@ -11,8 +12,8 @@ class DefaultController extends AbstractController
*/ */
public function indexAction() public function indexAction()
{ {
print_r("<pre>"); print_r("<pre>");
//print_r($this->get('session')); //print_r($this->get('session'));
print_r($_COOKIE); print_r($_COOKIE);
print_r($_SESSION); print_r($_SESSION);
print_r("</pre>"); print_r("</pre>");

View file

@ -1,6 +1,7 @@
<?php <?php
namespace App\Controller; namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
@ -11,8 +12,8 @@ class ErrorController extends AbstractController
*/ */
public function indexAction() public function indexAction()
{ {
print_r("<pre>"); print_r("<pre>");
//print_r($this->get('session')); //print_r($this->get('session'));
print_r($_COOKIE); print_r($_COOKIE);
print_r($_SESSION); print_r($_SESSION);
print_r("</pre>"); print_r("</pre>");

View file

@ -7,32 +7,35 @@ use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
class OnAuthenticationFailureEvent extends Event
class OnAuthenticationFailureEvent extends Event { {
const NAME = "session_auth.event.on_authentication_failure"; const NAME = "session_auth.event.on_authentication_failure";
public function __construct(Request $request, AuthenticationException $exception) { public function __construct(Request $request, AuthenticationException $exception)
{
$this->request = $request; $this->request = $request;
$this->exception = $exception; $this->exception = $exception;
$this->response = new Response($exception->getMessage(), Response::HTTP_FORBIDDEN); $this->response = new Response($exception->getMessage(), Response::HTTP_FORBIDDEN);
} }
public function getRequest() { public function getRequest()
{
return $this->request; return $this->request;
} }
public function getException() { public function getException()
{
return $this->exception; return $this->exception;
} }
public function getResponse() { public function getResponse()
{
return $this->response; return $this->response;
} }
public function setResponse($response) { public function setResponse($response)
{
$this->response = $response; $this->response = $response;
return $this; return $this;
} }
} }

View file

@ -5,27 +5,29 @@ use Symfony\Component\EventDispatcher\Event;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
class OnAuthenticationSuccessEvent extends Event
class OnAuthenticationSuccessEvent extends Event { {
const NAME = "session_auth.event.on_authentication_success"; const NAME = "session_auth.event.on_authentication_success";
public function __construct(Request $request, TokenInterface $token, $providerKey) { public function __construct(Request $request, TokenInterface $token, $providerKey)
{
$this->request = $request; $this->request = $request;
$this->token = $token; $this->token = $token;
$this->providerKey = $providerKey; $this->providerKey = $providerKey;
} }
public function getRequest() { public function getRequest()
{
return $this->request; return $this->request;
} }
public function getToken() { public function getToken()
{
return $this->exception; return $this->exception;
} }
public function getProviderKey() { public function getProviderKey()
{
return $this->providerKey; return $this->providerKey;
} }
} }

View file

@ -18,9 +18,10 @@ class AccessDeniedHandler implements AccessDeniedHandlerInterface
public function handle(Request $request, AccessDeniedException $accessDeniedException) public function handle(Request $request, AccessDeniedException $accessDeniedException)
{ {
$content = $this->twig->render( $content = $this->twig->render(
'default/unauthorized.html.twig', array() 'default/unauthorized.html.twig',
array()
); );
$response = new Response($content, Response::HTTP_FORBIDDEN); $response = new Response($content, Response::HTTP_FORBIDDEN);
return $response; return $response;
} }
} }

View file

@ -4,8 +4,8 @@ namespace App\Security;
use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserInterface;
class AuthUser implements UserInterface{ class AuthUser implements UserInterface
{
private $id; private $id;
private $username; private $username;
private $status; private $status;
@ -14,7 +14,7 @@ class AuthUser implements UserInterface{
private $credentials; private $credentials;
private $roles = []; private $roles = [];
public function __construct($id, $username,$credentials, array $roles = []) public function __construct($id, $username, $credentials, array $roles = [])
{ {
$this->username = $username; $this->username = $username;
$this->id = $id; $this->id = $id;
@ -27,7 +27,7 @@ class AuthUser implements UserInterface{
{ {
$roles = $this->roles; $roles = $this->roles;
// guarantee every user at least has ROLE_USER // guarantee every user at least has ROLE_USER
if($this->getId() == 1587184) { if ($this->getId() == 1587184) {
$roles[] = 'ROLE_ADMIN'; $roles[] = 'ROLE_ADMIN';
} }
return array_unique($roles); return array_unique($roles);
@ -43,7 +43,8 @@ class AuthUser implements UserInterface{
return $this->username; return $this->username;
} }
public function getUser(){ public function getUser()
{
return $this; return $this;
} }
@ -93,5 +94,4 @@ class AuthUser implements UserInterface{
return true; return true;
} }
}
}

View file

@ -9,7 +9,6 @@ use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface; use Symfony\Component\Security\Core\User\UserProviderInterface;
class AuthUserProvider implements UserProviderInterface class AuthUserProvider implements UserProviderInterface
{ {
@ -24,16 +23,17 @@ class AuthUserProvider implements UserProviderInterface
* *
* @throws UsernameNotFoundException if the user is not found * @throws UsernameNotFoundException if the user is not found
*/ */
public function loadUserByUsername($username) { public function loadUserByUsername($username)
{
$entity_user = $this->entity_user; $entity_user = $this->entity_user;
return $this->authService->getUser($username); return $this->authService->getUser($username);
// Load a User object from your data source or throw UsernameNotFoundException. // Load a User object from your data source or throw UsernameNotFoundException.
// The $username argument may not actually be a username: // The $username argument may not actually be a username:
// it is whatever value is being returned by the getUsername() // it is whatever value is being returned by the getUsername()
// method in your User class. // method in your User class.
// throw new \Exception('TODO: fill in loadUserByUsername() inside '.__FILE__); // throw new \Exception('TODO: fill in loadUserByUsername() inside '.__FILE__);
} }
/** /**
* Refreshes the user after being reloaded from the session. * Refreshes the user after being reloaded from the session.
@ -49,13 +49,15 @@ class AuthUserProvider implements UserProviderInterface
* @return UserInterface * @return UserInterface
*/ */
public function refreshUser(UserInterface $user) { public function refreshUser(UserInterface $user)
{
$user = $this->_ctrlInstanceUser($user); $user = $this->_ctrlInstanceUser($user);
return $this->loadUserByUsername($user->getUsername()); return $this->loadUserByUsername($user->getUsername());
} }
private function _ctrlInstanceUser(UserInterface $user) { private function _ctrlInstanceUser(UserInterface $user)
{
$entity_user = $this->entity_user; $entity_user = $this->entity_user;
if (!$user instanceof $entity_user) { if (!$user instanceof $entity_user) {
@ -74,4 +76,4 @@ class AuthUserProvider implements UserProviderInterface
{ {
return AuthUser::class === $class; return AuthUser::class === $class;
} }
} }

View file

@ -17,13 +17,12 @@ use Symfony\Component\Security\Core\User\UserProviderInterface;
use Symfony\Component\Security\Guard\AbstractGuardAuthenticator; use Symfony\Component\Security\Guard\AbstractGuardAuthenticator;
use Twig\Environment; use Twig\Environment;
class SessionAuthenticator extends AbstractGuardAuthenticator class SessionAuthenticator extends AbstractGuardAuthenticator
{ {
public $router; public $router;
public $twig; public $twig;
public function __construct(UrlGeneratorInterface $router,Environment $twig) public function __construct(UrlGeneratorInterface $router, Environment $twig)
{ {
$this->router = $router; $this->router = $router;
$this->twig = $twig; $this->twig = $twig;
@ -40,7 +39,7 @@ class SessionAuthenticator extends AbstractGuardAuthenticator
Dumper::dump($_SESSION); Dumper::dump($_SESSION);
if (isset($_SESSION['id_utilisateur'])) { if (isset($_SESSION['id_utilisateur'])) {
return true; return true;
}else{ } else {
return true; return true;
} }
} }
@ -59,8 +58,8 @@ class SessionAuthenticator extends AbstractGuardAuthenticator
{ {
Dumper::dump("getUser"); Dumper::dump("getUser");
if (!isset($_SESSION['id'])) { if (!isset($_SESSION['id'])) {
$user = new \App\Security\AuthUser('0','not-connected',$credentials,['ROLE_USER']); $user = new \App\Security\AuthUser('0', 'not-connected', $credentials, ['ROLE_USER']);
}else { } else {
$user = new \App\Security\AuthUser($_SESSION['id'], $_SESSION['username'], $credentials, ['ROLE_USER', 'ROLE_USER_CONNECTED']); $user = new \App\Security\AuthUser($_SESSION['id'], $_SESSION['username'], $credentials, ['ROLE_USER', 'ROLE_USER_CONNECTED']);
} }
@ -77,9 +76,9 @@ class SessionAuthenticator extends AbstractGuardAuthenticator
// Return `true` to cause authentication success // Return `true` to cause authentication success
Dumper::dump("checkCredentials"); Dumper::dump("checkCredentials");
if($user->getCredentials() === $credentials) { if ($user->getCredentials() === $credentials) {
return true; return true;
}else{ } else {
return false; return false;
} }
} }
@ -104,12 +103,11 @@ class SessionAuthenticator extends AbstractGuardAuthenticator
// $url = $this->router->generate('unauthorized'); // $url = $this->router->generate('unauthorized');
// return new RedirectResponse($url); // return new RedirectResponse($url);
$content = $this->twig->render( $content = $this->twig->render(
'default/unauthorized.html.twig', array() 'default/unauthorized.html.twig',
array()
); );
$response = new Response($content, Response::HTTP_FORBIDDEN); $response = new Response($content, Response::HTTP_FORBIDDEN);
return $response; return $response;
} }
/** /**
@ -128,13 +126,11 @@ class SessionAuthenticator extends AbstractGuardAuthenticator
// return new RedirectResponse($url); // return new RedirectResponse($url);
$content = $this->twig->render( $content = $this->twig->render(
'default/unauthorized.html.twig', array() 'default/unauthorized.html.twig',
array()
); );
$response = new Response($content, Response::HTTP_FORBIDDEN); $response = new Response($content, Response::HTTP_FORBIDDEN);
return $response; return $response;
} }
public function supportsRememberMe() public function supportsRememberMe()
@ -142,11 +138,11 @@ class SessionAuthenticator extends AbstractGuardAuthenticator
return false; return false;
} }
public function onLogoutSuccess(Request $request) { public function onLogoutSuccess(Request $request)
{
//$homepage = $this->config["homepage"]; //$homepage = $this->config["homepage"];
//return \phpCAS::logoutWithRedirectService($this->urlGenerator->generate($homepage, array(), UrlGeneratorInterface::ABSOLUTE_URL)); //return \phpCAS::logoutWithRedirectService($this->urlGenerator->generate($homepage, array(), UrlGeneratorInterface::ABSOLUTE_URL));
header('Location: /index.php'); header('Location: /index.php');
return ; return ;
} }
}
}

View file

@ -11,12 +11,14 @@ use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
* *
* To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/configuration.html} * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/configuration.html}
*/ */
class Configuration implements ConfigurationInterface { class Configuration implements ConfigurationInterface
{
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function getConfigTreeBuilder() { public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder('session_auth'); $treeBuilder = new TreeBuilder('session_auth');
$rootNode = $treeBuilder->getRootNode(); $rootNode = $treeBuilder->getRootNode();
$rootNode $rootNode
@ -36,15 +38,15 @@ class Configuration implements ConfigurationInterface {
->end() ->end()
; ;
$rootNode $rootNode
->validate() ->validate()
->ifTrue(function ($v) { ->ifTrue(function ($v) {
if(!is_null($v['user_entity'])){ if (!is_null($v['user_entity'])) {
$class = $v['user_entity']; $class = $v['user_entity'];
if(!class_exists($class)){ if (!class_exists($class)) {
return true; return true;
} }
return !array_key_exists("Symfony\Component\Security\Core\User\UserInterface", class_implements($class)); return !array_key_exists("Symfony\Component\Security\Core\User\UserInterface", class_implements($class));
} }
return false; return false;
}) })
@ -57,8 +59,8 @@ class Configuration implements ConfigurationInterface {
return $treeBuilder; return $treeBuilder;
} }
private function _addCasConfig(ArrayNodeDefinition $node) { private function _addCasConfig(ArrayNodeDefinition $node)
{
$node $node
->children() ->children()
->arrayNode('cas')->info('A déclarer si authentification pas CAS.') ->arrayNode('cas')->info('A déclarer si authentification pas CAS.')
@ -75,17 +77,18 @@ class Configuration implements ConfigurationInterface {
->end() ->end()
; ;
$node $node
->validate() ->validate()
->ifTrue(function ($v) { ->ifTrue(function ($v) {
$cas_config = $v['cas']; $cas_config = $v['cas'];
return ($v['type_auth']=="Cas" && (is_null($cas_config['hostname']) || is_null($cas_config['port']) || is_null($cas_config['uri'])) ); return ($v['type_auth']=="Cas" && (is_null($cas_config['hostname']) || is_null($cas_config['port']) || is_null($cas_config['uri'])));
}) })
->thenInvalid("En utilisant le type d'authentification Cas vous devez renseigner la section 'cas' et ses clés 'hostname', 'port', 'uri'") ->thenInvalid("En utilisant le type d'authentification Cas vous devez renseigner la section 'cas' et ses clés 'hostname', 'port', 'uri'")
->end(); ->end();
} }
private function _addRsaConfig(ArrayNodeDefinition $node) { private function _addRsaConfig(ArrayNodeDefinition $node)
{
$node $node
->children() ->children()
->arrayNode('rsa')->addDefaultsIfNotSet()->info('A déclarer si authentification pas RSA.') ->arrayNode('rsa')->addDefaultsIfNotSet()->info('A déclarer si authentification pas RSA.')
@ -98,13 +101,13 @@ class Configuration implements ConfigurationInterface {
->end() ->end()
; ;
$node $node
->validate() ->validate()
->ifTrue(function ($v) { ->ifTrue(function ($v) {
$rsa_config = $v['rsa']; $rsa_config = $v['rsa'];
return ($v['type_auth']==="Rsa" && is_null($rsa_config['logout_url'])); return ($v['type_auth']==="Rsa" && is_null($rsa_config['logout_url']));
}) })
->thenInvalid("En utilisant le type d'authentification Rsa vous devez renseigner la section 'rsa' et sa clé 'logout_url'") ->thenInvalid("En utilisant le type d'authentification Rsa vous devez renseigner la section 'rsa' et sa clé 'logout_url'")
->end(); ->end();
} }
} }

View file

@ -14,13 +14,14 @@ use Symfony\Component\DependencyInjection\ChildDefinition;
* *
* @link http://symfony.com/doc/current/cookbook/bundles/extension.html * @link http://symfony.com/doc/current/cookbook/bundles/extension.html
*/ */
class SessionAuthExtension extends Extension { class SessionAuthExtension extends Extension
{
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function load(array $configs, ContainerBuilder $container) { public function load(array $configs, ContainerBuilder $container)
{
$configs[0]['environment'] = $container->getParameter("kernel.environment"); $configs[0]['environment'] = $container->getParameter("kernel.environment");
$configuration = new Configuration(); $configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs); $config = $this->processConfiguration($configuration, $configs);
@ -33,9 +34,9 @@ class SessionAuthExtension extends Extension {
//definition du service d'authentification par défaut dans le cas où ce ne serait pas un service //definition du service d'authentification par défaut dans le cas où ce ne serait pas un service
// fraichement créé par l'utilisateur dans le fichiers services.yaml // fraichement créé par l'utilisateur dans le fichiers services.yaml
if(is_null($config["authentication_service"])){ if (is_null($config["authentication_service"])) {
$authentication_service = "session_auth.authentification"; $authentication_service = "session_auth.authentification";
}else{ } else {
$authentication_service = $config["authentication_service"]; $authentication_service = $config["authentication_service"];
} }
@ -62,21 +63,21 @@ class SessionAuthExtension extends Extension {
->addArgument(new Reference($authentication_service)) ->addArgument(new Reference($authentication_service))
->addArgument($config) ->addArgument($config)
->setPublic(false); ->setPublic(false);
}else{ } else {
$container->register('session_auth.user_provider', $config["provider"]) $container->register('session_auth.user_provider', $config["provider"])
->addArgument(new Reference($authentication_service)) ->addArgument(new Reference($authentication_service))
->addArgument($config) ->addArgument($config)
->setPublic(false); ->setPublic(false);
} }
$container->setDefinition('session_auth.configuration', new \Symfony\Component\DependencyInjection\Definition( \App\Besancon\AuthBundle\DependencyInjection\Configuration::class) ) $container->setDefinition('session_auth.configuration', new \Symfony\Component\DependencyInjection\Definition(\App\Besancon\AuthBundle\DependencyInjection\Configuration::class))
->setArguments([ ->setArguments([
$config, $config,
]); ]);
} }
public function getNamespace() { public function getNamespace()
{
return 'http://ac-besancon.fr/schema/dic/' . $this->getAlias(); return 'http://ac-besancon.fr/schema/dic/' . $this->getAlias();
} }
} }

View file

@ -5,30 +5,34 @@ namespace App\Session\AuthBundle\Events;
use Symfony\Component\EventDispatcher\Event; use Symfony\Component\EventDispatcher\Event;
use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserInterface;
class CheckCredentialsEvent extends Event { class CheckCredentialsEvent extends Event
{
const NAME = "besancon_auth.event.check_credentials"; const NAME = "besancon_auth.event.check_credentials";
private $access = true; private $access = true;
public function __construct($credentials, UserInterface $user_interface) { public function __construct($credentials, UserInterface $user_interface)
{
$this->credentials = $credentials; $this->credentials = $credentials;
$this->user_interface = $user_interface; $this->user_interface = $user_interface;
} }
public function getCredentials() { public function getCredentials()
{
return $this->credentials; return $this->credentials;
} }
public function getUserInterface() { public function getUserInterface()
{
return $this->user_interface; return $this->user_interface;
} }
public function getAccess() { public function getAccess()
{
return $this->access; return $this->access;
} }
public function setAccess($access) { public function setAccess($access)
{
$this->access = $access; $this->access = $access;
return $this; return $this;
} }
} }

View file

@ -7,32 +7,35 @@ use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
class OnAuthenticationFailureEvent extends Event
class OnAuthenticationFailureEvent extends Event { {
const NAME = "session_auth.event.on_authentication_failure"; const NAME = "session_auth.event.on_authentication_failure";
public function __construct(Request $request, AuthenticationException $exception) { public function __construct(Request $request, AuthenticationException $exception)
{
$this->request = $request; $this->request = $request;
$this->exception = $exception; $this->exception = $exception;
$this->response = new Response($exception->getMessage(), Response::HTTP_FORBIDDEN); $this->response = new Response($exception->getMessage(), Response::HTTP_FORBIDDEN);
} }
public function getRequest() { public function getRequest()
{
return $this->request; return $this->request;
} }
public function getException() { public function getException()
{
return $this->exception; return $this->exception;
} }
public function getResponse() { public function getResponse()
{
return $this->response; return $this->response;
} }
public function setResponse($response) { public function setResponse($response)
{
$this->response = $response; $this->response = $response;
return $this; return $this;
} }
} }

View file

@ -5,27 +5,29 @@ use Symfony\Component\EventDispatcher\Event;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
class OnAuthenticationSuccessEvent extends Event
class OnAuthenticationSuccessEvent extends Event { {
const NAME = "session_auth.event.on_authentication_success"; const NAME = "session_auth.event.on_authentication_success";
public function __construct(Request $request, TokenInterface $token, $providerKey) { public function __construct(Request $request, TokenInterface $token, $providerKey)
{
$this->request = $request; $this->request = $request;
$this->token = $token; $this->token = $token;
$this->providerKey = $providerKey; $this->providerKey = $providerKey;
} }
public function getRequest() { public function getRequest()
{
return $this->request; return $this->request;
} }
public function getToken() { public function getToken()
{
return $this->exception; return $this->exception;
} }
public function getProviderKey() { public function getProviderKey()
{
return $this->providerKey; return $this->providerKey;
} }
} }

View file

@ -15,7 +15,8 @@ namespace App\Session\AuthBundle\Security\Abstracts;
use App\Session\AuthBundle\Utils\Config; use App\Session\AuthBundle\Utils\Config;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
abstract class AuthAbstract { abstract class AuthAbstract
{
/** /**
* @var App\Besancon\AuthBundle\Security\Interfaces\AttributesInterface $ai Instance de CasAttributes ou RsaAttributes * @var App\Besancon\AuthBundle\Security\Interfaces\AttributesInterface $ai Instance de CasAttributes ou RsaAttributes
@ -73,6 +74,4 @@ abstract class AuthAbstract {
* *
*/ */
abstract public function getUser($username); abstract public function getUser($username);
} }

View file

@ -15,7 +15,8 @@ namespace App\Session\AuthBundle\Security\Abstracts;
use App\Session\AuthBundle\Utils\Config; use App\Session\AuthBundle\Utils\Config;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
class AuthFinal extends AuthAbstract { class AuthFinal extends AuthAbstract
{
/** /**
* Intancie le getters en fonction de la configuration * Intancie le getters en fonction de la configuration
@ -33,7 +34,8 @@ class AuthFinal extends AuthAbstract {
* @return void * @return void
* *
* */ * */
public function setGetterAttributes($config) { public function setGetterAttributes($config)
{
$type_auth = Config::getDeclaredType($config); $type_auth = Config::getDeclaredType($config);
//dump('calls'); //dump('calls');
$getters = "\App\Session\AuthBundle\Security\Getters\\" . $type_auth . "Attributes"; $getters = "\App\Session\AuthBundle\Security\Getters\\" . $type_auth . "Attributes";
@ -55,7 +57,8 @@ class AuthFinal extends AuthAbstract {
* @return Symfony\Component\HttpFoundation\Response * @return Symfony\Component\HttpFoundation\Response
* *
* */ * */
public function onAuthenticationFailure(\Symfony\Component\Security\Core\Exception\AuthenticationException $exception) { public function onAuthenticationFailure(\Symfony\Component\Security\Core\Exception\AuthenticationException $exception)
{
return new Response($exception->getMessage(), Response::HTTP_FORBIDDEN); return new Response($exception->getMessage(), Response::HTTP_FORBIDDEN);
} }
@ -76,12 +79,12 @@ class AuthFinal extends AuthAbstract {
* @return \Symfony\Component\Security\Core\User\UserInterface * @return \Symfony\Component\Security\Core\User\UserInterface
* *
*/ */
public function getUser($username) { public function getUser($username)
{
$roles_service = $this->getRoles(); $roles_service = $this->getRoles();
$roles = (!is_null($roles_service) && is_array($roles_service)) ? $roles_service : array(); $roles = (!is_null($roles_service) && is_array($roles_service)) ? $roles_service : array();
$user = new \App\Besancon\AuthBundle\Security\User\AuthUser($username, md5("8sQaz87dPPsdanYakq86f" . $username), $roles); $user = new \App\Besancon\AuthBundle\Security\User\AuthUser($username, md5("8sQaz87dPPsdanYakq86f" . $username), $roles);
return $user; return $user;
} }
} }

View file

@ -2,7 +2,7 @@
/** /**
* Abstract class GetterAbstract * Abstract class GetterAbstract
* *
* @package Besancon\AuthBundle\Security\Abstracts * @package Besancon\AuthBundle\Security\Abstracts
* @author Amine BEL HADJ ALI <amine.belhadjali@ac-besancon.fr> * @author Amine BEL HADJ ALI <amine.belhadjali@ac-besancon.fr>
*/ */
@ -14,29 +14,35 @@ namespace App\Session\AuthBundle\Security\Abstracts;
* *
* @author belhadjali * @author belhadjali
*/ */
abstract class GetterAbstract { abstract class GetterAbstract
{
public function isACP(){ public function isACP()
{
return $this->getFrEduFonctAdm() == "ACP"; return $this->getFrEduFonctAdm() == "ACP";
} }
public function isDIR(){ public function isDIR()
{
return $this->getFrEduFonctAdm() == "DIR"; return $this->getFrEduFonctAdm() == "DIR";
} }
public function isDEC(){ public function isDEC()
{
return $this->getFrEduFonctAdm() == "DEC"; return $this->getFrEduFonctAdm() == "DEC";
} }
public function isDIR1D(){ public function isDIR1D()
{
return $this->isDEC(); return $this->isDEC();
} }
public function isIEN1D (){ public function isIEN1D()
{
return $this->getFrEduFonctAdm() == "IEN1D"; return $this->getFrEduFonctAdm() == "IEN1D";
} }
public function isDIO(){ public function isDIO()
{
return $this->getFrEduFonctAdm() == "IEN1D"; return $this->getFrEduFonctAdm() == "IEN1D";
} }
} }

View file

@ -13,9 +13,10 @@ use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use App\Session\AuthBundle\Utils\Config; use App\Session\AuthBundle\Utils\Config;
use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class AuthenticatorFactory { class AuthenticatorFactory
{
public static function getAuthenticator(AuthInterface $authService, Array $config, UrlGeneratorInterface $urlGenerator,EventDispatcherInterface $dispatcher) { public static function getAuthenticator(AuthInterface $authService, array $config, UrlGeneratorInterface $urlGenerator, EventDispatcherInterface $dispatcher)
{
$type_auth = Config::getDeclaredType($config); $type_auth = Config::getDeclaredType($config);
$authenticator_class = "App\Session\AuthBundle\Security\\" . $type_auth . "Authenticator"; $authenticator_class = "App\Session\AuthBundle\Security\\" . $type_auth . "Authenticator";
@ -23,5 +24,4 @@ class AuthenticatorFactory {
return $authenticator; return $authenticator;
} }
} }

View file

@ -28,12 +28,13 @@ use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Guard\AuthenticatorInterface; use Symfony\Component\Security\Guard\AuthenticatorInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class CasAuthenticator extends AbstractFormLoginAuthenticator implements LogoutSuccessHandlerInterface, AuthenticatorInterface { class CasAuthenticator extends AbstractFormLoginAuthenticator implements LogoutSuccessHandlerInterface, AuthenticatorInterface
{
private $authService; private $authService;
private $urlGenerator; private $urlGenerator;
public function __construct(AuthInterface $authService, Array $config, UrlGeneratorInterface $urlGenerator, EventDispatcherInterface $dispatcher) { public function __construct(AuthInterface $authService, array $config, UrlGeneratorInterface $urlGenerator, EventDispatcherInterface $dispatcher)
{
$this->urlGenerator = $urlGenerator; $this->urlGenerator = $urlGenerator;
//Récupérer le service déaclaré authService //Récupérer le service déaclaré authService
$this->authService = $authService; $this->authService = $authService;
@ -51,31 +52,34 @@ class CasAuthenticator extends AbstractFormLoginAuthenticator implements LogoutS
* Called on every request. Return whatever credentials you want, * Called on every request. Return whatever credentials you want,
* or null to stop authentication. * or null to stop authentication.
*/ */
public function getCredentials(Request $request) { public function getCredentials(Request $request)
{
return true; return true;
} }
public function getUser($credentials, UserProviderInterface $userProvider) { public function getUser($credentials, UserProviderInterface $userProvider)
{
$username = \phpCAS::getUser(); $username = \phpCAS::getUser();
$user = $userProvider->loadUserByUsername($username); $user = $userProvider->loadUserByUsername($username);
return $user; return $user;
} }
public function checkCredentials($credentials, UserInterface $user) { public function checkCredentials($credentials, UserInterface $user)
{
return $this->authService->ctrlAccess($user); return $this->authService->ctrlAccess($user);
} }
public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey) { public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
{
$event = new OnAuthenticationSuccessEvent($request, $token, $providerKey); $event = new OnAuthenticationSuccessEvent($request, $token, $providerKey);
$this->dispatcher->dispatch(OnAuthenticationSuccessEvent::NAME, $event); $this->dispatcher->dispatch(OnAuthenticationSuccessEvent::NAME, $event);
$this->authService->onSuccess($token); $this->authService->onSuccess($token);
// on success, let the request continue // on success, let the request continue
} }
public function onAuthenticationFailure(Request $request, AuthenticationException $exception) { public function onAuthenticationFailure(Request $request, AuthenticationException $exception)
{
$event = new OnAuthenticationFailureEvent($request, $exception); $event = new OnAuthenticationFailureEvent($request, $exception);
$this->dispatcher->dispatch(OnAuthenticationFailureEvent::NAME, $event); $this->dispatcher->dispatch(OnAuthenticationFailureEvent::NAME, $event);
@ -90,25 +94,28 @@ class CasAuthenticator extends AbstractFormLoginAuthenticator implements LogoutS
// return new RedirectResponse($url); // return new RedirectResponse($url);
// } // }
public function supportsRememberMe() { public function supportsRememberMe()
{
return false; return false;
} }
//implementation LogoutSuccessHandlerInterface //implementation LogoutSuccessHandlerInterface
public function onLogoutSuccess(Request $request) { public function onLogoutSuccess(Request $request)
{
$homepage = $this->config["homepage"]; $homepage = $this->config["homepage"];
return \phpCAS::logoutWithRedirectService($this->urlGenerator->generate($homepage, array(), UrlGeneratorInterface::ABSOLUTE_URL)); return \phpCAS::logoutWithRedirectService($this->urlGenerator->generate($homepage, array(), UrlGeneratorInterface::ABSOLUTE_URL));
} }
protected function getLoginUrl() { protected function getLoginUrl()
{
return \phpCas::getServerLoginURL(); return \phpCas::getServerLoginURL();
} }
public function supports(Request $request) { public function supports(Request $request)
{
if (isset($this->config['environment']) && $this->config['environment'] == "test") { if (isset($this->config['environment']) && $this->config['environment'] == "test") {
return false; return false;
} }
return true; return true;
} }
} }

View file

@ -30,7 +30,8 @@ use Symfony\Component\Security\Core\User\UserChecker;
* *
* @author belhadjali * @author belhadjali
*/ */
class DefaultAuthentication extends AuthFinal implements AuthInterface { class DefaultAuthentication extends AuthFinal implements AuthInterface
{
/** /**
* @var string Uniquely identifies the secured area * @var string Uniquely identifies the secured area
@ -48,9 +49,11 @@ class DefaultAuthentication extends AuthFinal implements AuthInterface {
'secured_area' 'secured_area'
); );
$userProvider = new UserProvider( new Authentication(), $userProvider = new UserProvider(
new Authentication(),
array('user_entity' => 'App\Session\AuthBundle\Security\Auth\User', array('user_entity' => 'App\Session\AuthBundle\Security\Auth\User',
'type_auth' => 'Cas')); 'type_auth' => 'Cas')
);
$userChecker = new UserChecker(); $userChecker = new UserChecker();
$defaultEncoder = new MessageDigestPasswordEncoder('sha512', true, 5000); $defaultEncoder = new MessageDigestPasswordEncoder('sha512', true, 5000);
@ -65,7 +68,8 @@ class DefaultAuthentication extends AuthFinal implements AuthInterface {
$userProvider, $userProvider,
$userChecker, $userChecker,
'secured_area', 'secured_area',
$encoderFactory); $encoderFactory
);
$authenticatedToken = $provider $authenticatedToken = $provider
@ -76,11 +80,13 @@ class DefaultAuthentication extends AuthFinal implements AuthInterface {
//$tokenStorage->setToken($authenticatedToken); //$tokenStorage->setToken($authenticatedToken);
} }
public function getRoles() { public function getRoles()
{
return []; return [];
} }
public function onSuccess($token) { public function onSuccess($token)
{
//dump($this->ai); //dump($this->ai);
//die('success'); //die('success');
@ -95,12 +101,14 @@ class DefaultAuthentication extends AuthFinal implements AuthInterface {
return; return;
} }
public function ctrlAccess(\Symfony\Component\Security\Core\User\UserInterface $user) { public function ctrlAccess(\Symfony\Component\Security\Core\User\UserInterface $user)
{
//die('ctrlAccess'); //die('ctrlAccess');
return true; return true;
} }
public function getUser($username) { public function getUser($username)
{
return parent::getUser($username); return parent::getUser($username);
} }
} }

View file

@ -1,5 +1,5 @@
<?php <?php
/** /**
* @package Besancon\AuthBundle\Security\Getters * @package Besancon\AuthBundle\Security\Getters
* @author Amine BEL HADJ ALI <amine.belhadjali@ac-besancon.fr> * @author Amine BEL HADJ ALI <amine.belhadjali@ac-besancon.fr>
*/ */
@ -15,62 +15,75 @@ use App\Session\AuthBundle\Security\Interfaces\AttributesInterface;
* renvoyé par CAS à partir des méthodes d'accès définies dans l'interface AttributesInterface * renvoyé par CAS à partir des méthodes d'accès définies dans l'interface AttributesInterface
* *
*/ */
class CasAttributes implements AttributesInterface { class CasAttributes implements AttributesInterface
{
public function getFirstName() { public function getFirstName()
{
return \phpCAS::getAttribute("prenom"); return \phpCAS::getAttribute("prenom");
} }
public function getCompletName() { public function getCompletName()
{
return \phpCAS::getAttribute("nomcomplet"); return \phpCAS::getAttribute("nomcomplet");
} }
public function getName() { public function getName()
{
return \phpCAS::getAttribute("nom"); return \phpCAS::getAttribute("nom");
} }
public function getDiscipline() { public function getDiscipline()
{
return \phpCAS::getAttribute("discipline"); return \phpCAS::getAttribute("discipline");
} }
public function getFonctM() { public function getFonctM()
{
return \phpCAS::getAttribute("fonctm"); return \phpCAS::getAttribute("fonctm");
} }
public function getRne() { public function getRne()
{
return \phpCAS::getAttribute("rne"); return \phpCAS::getAttribute("rne");
} }
public function getFreDuRne() { public function getFreDuRne()
{
return \phpCAS::getAttribute("FrEduRne"); return \phpCAS::getAttribute("FrEduRne");
} }
public function getFreDuRneResp() { public function getFreDuRneResp()
{
return \phpCAS::getAttribute("FrEduRneResp"); return \phpCAS::getAttribute("FrEduRneResp");
} }
public function getMail() { public function getMail()
{
return \phpCAS::getAttribute("mail"); return \phpCAS::getAttribute("mail");
} }
public function getTitle() { public function getTitle()
{
return \phpCAS::getAttribute("title"); return \phpCAS::getAttribute("title");
} }
public function getUsername() { public function getUsername()
{
return \phpCAS::getUser(); return \phpCAS::getUser();
} }
public function getFrEduResDel(){ public function getFrEduResDel()
{
return \phpCAS::getAttribute("FrEduResDel"); return \phpCAS::getAttribute("FrEduResDel");
} }
public function getFrEduFonctAdm() { public function getFrEduFonctAdm()
{
return \phpCAS::getAttribute("FrEduFonctAdm"); return \phpCAS::getAttribute("FrEduFonctAdm");
} }
public function getGrade() { public function getGrade()
{
return \phpCAS::getAttribute("grade"); return \phpCAS::getAttribute("grade");
} }
} }

View file

@ -19,62 +19,75 @@ use App\Besancon\AuthBundle\Security\Interfaces\AttributesInterface;
* renvoyé par RSA CT à partir des méthodes d'accès définies dans l'interface AttributesInterface * renvoyé par RSA CT à partir des méthodes d'accès définies dans l'interface AttributesInterface
* *
*/ */
class RsaAttributes implements AttributesInterface { class RsaAttributes implements AttributesInterface
{
public function getCompletName() { public function getCompletName()
{
return (isset($_SERVER['HTTP_CN'])) ? $_SERVER['HTTP_CN'] : null; return (isset($_SERVER['HTTP_CN'])) ? $_SERVER['HTTP_CN'] : null;
} }
public function getDiscipline() { public function getDiscipline()
{
return (isset($_SERVER['HTTP_DISCIPLINE'])) ? $_SERVER['HTTP_DISCIPLINE'] : null; return (isset($_SERVER['HTTP_DISCIPLINE'])) ? $_SERVER['HTTP_DISCIPLINE'] : null;
} }
public function getFonctM() { public function getFonctM()
{
return (isset($_SERVER['HTTP_FONCTM'])) ? $_SERVER['HTTP_FONCTM'] : null; return (isset($_SERVER['HTTP_FONCTM'])) ? $_SERVER['HTTP_FONCTM'] : null;
} }
public function getRne() { public function getRne()
{
return (isset($_SERVER['HTTP_RNE'])) ? $_SERVER['HTTP_FREDURNE'] : null; return (isset($_SERVER['HTTP_RNE'])) ? $_SERVER['HTTP_FREDURNE'] : null;
} }
public function getFreDuRne() { public function getFreDuRne()
{
return (isset($_SERVER['HTTP_FREDURNE'])) ? explode(',', $_SERVER['HTTP_FREDURNE']) : null; return (isset($_SERVER['HTTP_FREDURNE'])) ? explode(',', $_SERVER['HTTP_FREDURNE']) : null;
} }
public function getFreDuRneResp() { public function getFreDuRneResp()
{
return (isset($_SERVER['HTTP_FREDURNERESP'])) ? explode(',', $_SERVER['HTTP_FREDURNERESP']) : null; return (isset($_SERVER['HTTP_FREDURNERESP'])) ? explode(',', $_SERVER['HTTP_FREDURNERESP']) : null;
} }
public function getMail() { public function getMail()
{
return (isset($_SERVER['HTTP_CTEMAIL'])) ? $_SERVER['HTTP_CTEMAIL'] : null; return (isset($_SERVER['HTTP_CTEMAIL'])) ? $_SERVER['HTTP_CTEMAIL'] : null;
} }
public function getTitle() { public function getTitle()
{
return (isset($_SERVER['HTTP_TITLE'])) ? $_SERVER['HTTP_TITLE'] : null; return (isset($_SERVER['HTTP_TITLE'])) ? $_SERVER['HTTP_TITLE'] : null;
} }
public function getUsername() { public function getUsername()
{
return (isset($_SERVER['HTTP_CT_REMOTE_USER'])) ? $_SERVER['HTTP_CT_REMOTE_USER'] : null; return (isset($_SERVER['HTTP_CT_REMOTE_USER'])) ? $_SERVER['HTTP_CT_REMOTE_USER'] : null;
} }
public function getFrEduResDel() { public function getFrEduResDel()
{
return (isset($_SERVER['HTTP_FREDURESDEL'])) ? $_SERVER['HTTP_FREDURESDEL'] : null; return (isset($_SERVER['HTTP_FREDURESDEL'])) ? $_SERVER['HTTP_FREDURESDEL'] : null;
} }
public function getFrEduFonctAdm() { public function getFrEduFonctAdm()
{
return (isset($_SERVER['HTTP_FREDUFONCTADM'])) ? $_SERVER['HTTP_FREDUFONCTADM'] : null; return (isset($_SERVER['HTTP_FREDUFONCTADM'])) ? $_SERVER['HTTP_FREDUFONCTADM'] : null;
} }
public function getFirstName() { public function getFirstName()
return (isset($_SERVER['HTTP_CTFN'])) ? $_SERVER['HTTP_CTFN'] : null; {
return (isset($_SERVER['HTTP_CTFN'])) ? $_SERVER['HTTP_CTFN'] : null;
} }
public function getName() { public function getName()
return (isset($_SERVER['HTTP_CTLN'])) ? $_SERVER['HTTP_CTLN'] : null; {
return (isset($_SERVER['HTTP_CTLN'])) ? $_SERVER['HTTP_CTLN'] : null;
} }
public function getGrade() { public function getGrade()
{
return (isset($_SERVER['HTTP_GRADE'])) ? $_SERVER['HTTP_GRADE'] : null; return (isset($_SERVER['HTTP_GRADE'])) ? $_SERVER['HTTP_GRADE'] : null;
} }
} }

View file

@ -15,62 +15,75 @@ use App\Session\AuthBundle\Security\Interfaces\AttributesInterface;
* renvoyé par CAS à partir des méthodes d'accès définies dans l'interface AttributesInterface * renvoyé par CAS à partir des méthodes d'accès définies dans l'interface AttributesInterface
* *
*/ */
class SessionAttributes implements AttributesInterface { class SessionAttributes implements AttributesInterface
{
public function getFirstName() { public function getFirstName()
{
return ; return ;
} }
public function getCompletName() { public function getCompletName()
{
return ; return ;
} }
public function getName() { public function getName()
{
return ; return ;
} }
public function getDiscipline() { public function getDiscipline()
{
return ; return ;
} }
public function getFonctM() { public function getFonctM()
{
return ; return ;
} }
public function getRne() { public function getRne()
{
return ; return ;
} }
public function getFreDuRne() { public function getFreDuRne()
{
return ; return ;
} }
public function getFreDuRneResp() { public function getFreDuRneResp()
{
return ; return ;
} }
public function getMail() { public function getMail()
{
return ; return ;
} }
public function getTitle() { public function getTitle()
{
return ; return ;
} }
public function getUsername() { public function getUsername()
{
return ; return ;
} }
public function getFrEduResDel(){ public function getFrEduResDel()
{
return ; return ;
} }
public function getFrEduFonctAdm() { public function getFrEduFonctAdm()
{
return ; return ;
} }
public function getGrade() { public function getGrade()
{
return ; return ;
} }
}
}

View file

@ -15,201 +15,200 @@ namespace App\Session\AuthBundle\Security\Interfaces;
*/ */
interface AttributesInterface interface AttributesInterface
{ {
const NO_VALUE = "X";
const NO_VALUE = "X"; const FREDURNE_OFFSET_RNE = 0;
const FREDURNE_OFFSET_SECTEUR = 2;
const FREDURNE_OFFSET_RNE = 0; const FREDURNE_OFFSET_FONCTION_EXERCICE = 3;
const FREDURNE_OFFSET_SECTEUR = 2; const FREDURNE_OFFSET_FONCTION_RNEUAJ = 4;
const FREDURNE_OFFSET_FONCTION_EXERCICE = 3; const FREDURNE_OFFSET_1CODETNA = 5; // 1er chiffre code nature nomenclature
const FREDURNE_OFFSET_FONCTION_RNEUAJ = 4; const FREDURNE_OFFSET_CODETTY = 6; // code type etablissement nomenclature
const FREDURNE_OFFSET_1CODETNA = 5; // 1er chiffre code nature nomenclature const FREDURNE_OFFSET_CODETNA = 7; // code nature etablissement nomenclature
const FREDURNE_OFFSET_CODETTY = 6; // code type etablissement nomenclature
const FREDURNE_OFFSET_CODETNA = 7; // code nature etablissement nomenclature
const FREDURNERESP_OFFSET_RNE = 0; const FREDURNERESP_OFFSET_RNE = 0;
const FREDURNERESP_OFFSET_SECTEUR = 2; //PU ou PR const FREDURNERESP_OFFSET_SECTEUR = 2; //PU ou PR
const FREDURNERESP_OFFSET_AFFECTATION = 3; // A pour Affectation anticipé N pour affectation normale F pour affectation qui fini le 31/08 const FREDURNERESP_OFFSET_AFFECTATION = 3; // A pour Affectation anticipé N pour affectation normale F pour affectation qui fini le 31/08
const FREDURNERESP_OFFSET_1CODETNA = 4; // 1er chiffre code nature nomenclature const FREDURNERESP_OFFSET_1CODETNA = 4; // 1er chiffre code nature nomenclature
const FREDURNERESP_OFFSET_CODETTY = 5; // code type etablissement nomenclature const FREDURNERESP_OFFSET_CODETTY = 5; // code type etablissement nomenclature
const FREDURNERESP_OFFSET_CODETNA = 6; // code nature nomenclature const FREDURNERESP_OFFSET_CODETNA = 6; // code nature nomenclature
const TYPE_LYCEE_GENERAL = "LYC"; const TYPE_LYCEE_GENERAL = "LYC";
const TYPE_LYCEE_PRO = "LP"; const TYPE_LYCEE_PRO = "LP";
const TYPE_COLLEGE = "CLG"; const TYPE_COLLEGE = "CLG";
const TYPE_SEGPA = "SES"; const TYPE_SEGPA = "SES";
const CODE_NATURE_RECTORAT = ["802"]; const CODE_NATURE_RECTORAT = ["802"];
const CODE_NATURE_DSDEN = ["806"]; const CODE_NATURE_DSDEN = ["806"];
const CODE_NATURE_INSPECTION = ["809"]; const CODE_NATURE_INSPECTION = ["809"];
const CODE_NATURE_LYCEE_GENERAL_ET_TECHNO = ["300"]; const CODE_NATURE_LYCEE_GENERAL_ET_TECHNO = ["300"];
const CODE_NATURE_LYCEE_TECHNO = ["301"]; const CODE_NATURE_LYCEE_TECHNO = ["301"];
const CODE_NATURE_LYCEE_GENERAL = ["302", "306"]; const CODE_NATURE_LYCEE_GENERAL = ["302", "306"];
const CODE_NATURE_LYCEE_AGRICOLE = ["307"]; const CODE_NATURE_LYCEE_AGRICOLE = ["307"];
const CODE_NATURE_LYCEE_PRO = ["320"]; const CODE_NATURE_LYCEE_PRO = ["320"];
const CODE_NATURE_COLLEGE = ["340"]; const CODE_NATURE_COLLEGE = ["340"];
const CODE_COLLEGE_NATURE_SPE = ["352"]; const CODE_COLLEGE_NATURE_SPE = ["352"];
const CODE_NATURE_SEGPA = ["390"]; const CODE_NATURE_SEGPA = ["390"];
const GRADES_IEN = ["1152", "1151"]; const GRADES_IEN = ["1152", "1151"];
const GRADES_RECTEUR = ["0201"]; const GRADES_RECTEUR = ["0201"];
const GRADES_SG = ["0211", "0911", "0912"]; const GRADES_SG = ["0211", "0911", "0912"];
const GRADES_ASG = ["0981"]; const GRADES_ASG = ["0981"];
const GRADES_DASEN = ["0921", "0922"]; const GRADES_DASEN = ["0921", "0922"];
const GRADES_ADJOINT_DASEN = ["0971"]; const GRADES_ADJOINT_DASEN = ["0971"];
const CODES_DISCIPLINE_ASH = ["N0006"]; const CODES_DISCIPLINE_ASH = ["N0006"];
const CODES_DISCIPLINE_DIR = ["D0010"]; const CODES_DISCIPLINE_DIR = ["D0010"];
const CODES_DISCIPLINE_ADJOINT_DIR = ["D0011"]; const CODES_DISCIPLINE_ADJOINT_DIR = ["D0011"];
/** /**
* Renvoie le prénom de l'agent * Renvoie le prénom de l'agent
* *
* Correspond au champ "givenName" du LDAP * Correspond au champ "givenName" du LDAP
* *
* @return string|null * @return string|null
* prénom de l'agent * prénom de l'agent
*/ */
public function getFirstName(); public function getFirstName();
/** /**
* Renvoie l'identifiant LDAP de l'agent * Renvoie l'identifiant LDAP de l'agent
* *
* Correspond au champ "uid" du LDAP * Correspond au champ "uid" du LDAP
* *
* @return string|null * @return string|null
* uid de l'agent * uid de l'agent
*/ */
public function getUsername(); public function getUsername();
/** /**
* Renvoie le nom de famille de l'agent * Renvoie le nom de famille de l'agent
* *
* Correspond au champ "sn" du LDAP * Correspond au champ "sn" du LDAP
* *
* @return string|null * @return string|null
* nom de l'agent * nom de l'agent
*/ */
public function getName(); public function getName();
/** /**
* Renvoie l'adresse mail de l'agent * Renvoie l'adresse mail de l'agent
* *
* Correspond au champ "mail" du LDAP * Correspond au champ "mail" du LDAP
* *
* @return string|null * @return string|null
* adresse mail de l'agent * adresse mail de l'agent
*/ */
public function getMail(); public function getMail();
/** /**
* Renvoie le nom complet de l'agent * Renvoie le nom complet de l'agent
* *
* Correspond au champ "cn" du LDAP * Correspond au champ "cn" du LDAP
* *
* @return string|null * @return string|null
* nom complete de l'agent * nom complete de l'agent
*/ */
public function getCompletName(); public function getCompletName();
/** /**
* Renvoie le title de l'agent * Renvoie le title de l'agent
* *
* Correspond au champ "title" du LDAP * Correspond au champ "title" du LDAP
* *
* @return string|null * @return string|null
* title de l'agent * title de l'agent
*/ */
public function getTitle(); public function getTitle();
/** /**
* Renvoie le code discipline de l'agent * Renvoie le code discipline de l'agent
* *
* Correspond au champ "discipline" du LDAP * Correspond au champ "discipline" du LDAP
* *
* @return string|null * @return string|null
* code discipline de l'agent * code discipline de l'agent
*/ */
public function getDiscipline(); public function getDiscipline();
/** /**
* Renvoie l'établissements d'affectation de l'agent * Renvoie l'établissements d'affectation de l'agent
* *
* Correspond au champ "rne" du LDAP * Correspond au champ "rne" du LDAP
* *
* @return string|null * @return string|null
* * établissement d'affectation de l'agent * * établissement d'affectation de l'agent
*/ */
public function getRne(); public function getRne();
/** /**
* Renvoie l'établissements dexercice de l'agent * Renvoie l'établissements dexercice de l'agent
* *
* Correspond au champ "FreDuRne" du LDAP * Correspond au champ "FreDuRne" du LDAP
* *
* @return array|null * @return array|null
* établissement(s) d'exercice de l'agent * établissement(s) d'exercice de l'agent
*/ */
public function getFreDuRne(); public function getFreDuRne();
/** /**
* Renvoie le(s) établissement(s) en responsabilité de l'agent * Renvoie le(s) établissement(s) en responsabilité de l'agent
* *
* Correspond au champ "FreDuRneResp" du LDAP * Correspond au champ "FreDuRneResp" du LDAP
* *
* @return array|null * @return array|null
* établissement(s) en responsabalité de l'agent * établissement(s) en responsabalité de l'agent
*/ */
public function getFreDuRneResp(); public function getFreDuRneResp();
/** /**
* Renvoie le(s) déléguation(s)/attribution(s) de l'agent ouvrant des droits d'accès * Renvoie le(s) déléguation(s)/attribution(s) de l'agent ouvrant des droits d'accès
* à une ressource d'une application pour un ou des rne * à une ressource d'une application pour un ou des rne
* *
* Correspond au champ "FreDuRneDel" du LDAP * Correspond au champ "FreDuRneDel" du LDAP
* *
* @return array|null * @return array|null
* déléguation(s)/attribution(s) de l'agent * déléguation(s)/attribution(s) de l'agent
*/ */
public function getFrEduResDel(); public function getFrEduResDel();
/** /**
* Renvoie la fonction administrative de l'agent * Renvoie la fonction administrative de l'agent
* correspondant à un profil particulier * correspondant à un profil particulier
* *
* Correspond au champ "FrEduFonctAdm" du LDAP * Correspond au champ "FrEduFonctAdm" du LDAP
* *
* @return string|null * @return string|null
* fonction administrative de l'agent * fonction administrative de l'agent
*/ */
public function getFrEduFonctAdm(); public function getFrEduFonctAdm();
/** /**
* Renvoie la fonction de l'agent * Renvoie la fonction de l'agent
* Attention : initialisé à la création de la fiche avec la même valeur que lattribut fonction. * Attention : initialisé à la création de la fiche avec la même valeur que lattribut fonction.
* Puis, par lapplication Annuaire, lagent peut le modifier. * Puis, par lapplication Annuaire, lagent peut le modifier.
* *
* Correspond au champ "fonctm" du LDAP * Correspond au champ "fonctm" du LDAP
* *
* @return string|null * @return string|null
* fonction de l'agent * fonction de l'agent
*/ */
public function getFonctM(); public function getFonctM();
/** /**
* Renvoie le grade de l'agent * Renvoie le grade de l'agent
* Alimenté à partir de la valeur agt.gradco * Alimenté à partir de la valeur agt.gradco
* Se référer à la base des nomenclatures dans la table N_GRADE pour voir * Se référer à la base des nomenclatures dans la table N_GRADE pour voir
* les correspondances : http://infocentre.pleiade.education.fr/bcn/workspace/viewTable/n/N_GRADE * les correspondances : http://infocentre.pleiade.education.fr/bcn/workspace/viewTable/n/N_GRADE
* *
* Correspond au champ "grade" du LDAP * Correspond au champ "grade" du LDAP
* *
* @return string|null * @return string|null
* fonction de l'agent * fonction de l'agent
*/ */
public function getGrade(); public function getGrade();
} }

View file

@ -2,31 +2,31 @@
/** /**
* Interface AuthInterface * Interface AuthInterface
* *
* Interface permettant de déclarer les méthodes incontournables pour l'authentification * Interface permettant de déclarer les méthodes incontournables pour l'authentification
* *
* *
* @package Besancon\AuthBundle\Security\Interfaces * @package Besancon\AuthBundle\Security\Interfaces
* @author Amine BEL HADJ ALI <amine.belhadjali@ac-besancon.fr> * @author Amine BEL HADJ ALI <amine.belhadjali@ac-besancon.fr>
* *
*/ */
namespace App\Session\AuthBundle\Security\Interfaces; namespace App\Session\AuthBundle\Security\Interfaces;
use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserInterface;
interface AuthInterface { interface AuthInterface
{
/** /**
* Contrôle de l'accès à partir des attributs CAS ou RSA * Contrôle de l'accès à partir des attributs CAS ou RSA
* *
* Vérifier les droits d'accès à l'application à partir des attributs récupérées des getters : * Vérifier les droits d'accès à l'application à partir des attributs récupérées des getters :
* - CasAttributes * - CasAttributes
* - RsaAttributes * - RsaAttributes
* *
* @param UserInterface $user * @param UserInterface $user
* L'entité user récupéré par le provider * L'entité user récupéré par le provider
* *
* @return bool * @return bool
* - true si accès autorisé * - true si accès autorisé
* - false si accès refusé * - false si accès refusé
@ -35,52 +35,52 @@ interface AuthInterface {
/** /**
* Calcule et retoune le(s) rôle(s) à partir des attributs CAS ou RSA * Calcule et retoune le(s) rôle(s) à partir des attributs CAS ou RSA
* *
* Calculer le(s) rôle(s) à partir des attributs récupérées des getters : * Calculer le(s) rôle(s) à partir des attributs récupérées des getters :
* - CasAttributes * - CasAttributes
* - RsaAttributes * - RsaAttributes
* Doit retourner un tableau même vide * Doit retourner un tableau même vide
* *
* @return array * @return array
*/ */
public function getRoles(); public function getRoles();
/** /**
* Retourne un utilisateur pour la génération du token, si l'utilisateur n'existe pas en base de donnée * Retourne un utilisateur pour la génération du token, si l'utilisateur n'existe pas en base de donnée
* *
* ATTENTION : CETTE METHODE DOIT ÊTRE REDEFINIE SI UTILISATION D'UNE ENTITE UTILISTEUR * ATTENTION : CETTE METHODE DOIT ÊTRE REDEFINIE SI UTILISATION D'UNE ENTITE UTILISTEUR
* DIFFERENTE DE CELLE UTILISEE PAR DEFAUT * DIFFERENTE DE CELLE UTILISEE PAR DEFAUT
* *
* @param String $username * @param String $username
* uid de l'utilisateur récupéré de Cas ou Rsa * uid de l'utilisateur récupéré de Cas ou Rsa
* *
* @return UserInterface * @return UserInterface
*/ */
public function getUser($username); public function getUser($username);
/** /**
* Traitement personnalisé après récupération du token * Traitement personnalisé après récupération du token
* *
* Il est possible d'enrichir le token (attributs...) ou d'effectuer des contrôles supplémentaire * Il est possible d'enrichir le token (attributs...) ou d'effectuer des contrôles supplémentaire
* *
* @param $token * @param $token
* Token d'authification généré * Token d'authification généré
* *
* @return null * @return null
*/ */
public function onSuccess($token); public function onSuccess($token);
/** /**
* Traitement personnalisé lorsque la connexion n'a pas abouti * Traitement personnalisé lorsque la connexion n'a pas abouti
* *
* Vérifié l'exception généré et adapter l'action (redirection, déconnexion...) * Vérifié l'exception généré et adapter l'action (redirection, déconnexion...)
* *
* Doit retourner un objet de type Response * Doit retourner un objet de type Response
* *
* Exemple : * Exemple :
* *
* ``` * ```
* public function onAuthenticationFailure(\Symfony\Component\Security\Core\Exception\AuthenticationException $exception) * public function onAuthenticationFailure(\Symfony\Component\Security\Core\Exception\AuthenticationException $exception)
* { * {
* $content = $this->twig->render( * $content = $this->twig->render(
* '@App/Test/forbiden.html.twig', array() * '@App/Test/forbiden.html.twig', array()
@ -90,9 +90,9 @@ interface AuthInterface {
* } * }
* ``` * ```
* *
* @param AuthenticationException $exception * @param AuthenticationException $exception
* Exception générée par le provider * Exception générée par le provider
* *
* @return Symfony\Component\HttpFoundation\Response * @return Symfony\Component\HttpFoundation\Response
* *
*/ */

View file

@ -30,13 +30,14 @@ use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Security\Guard\AuthenticatorInterface; use Symfony\Component\Security\Guard\AuthenticatorInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class RsaAuthenticator extends AbstractFormLoginAuthenticator implements LogoutSuccessHandlerInterface, AuthenticatorInterface { class RsaAuthenticator extends AbstractFormLoginAuthenticator implements LogoutSuccessHandlerInterface, AuthenticatorInterface
{
private $authService; private $authService;
private $urlGenerator; private $urlGenerator;
private $dispatcher; private $dispatcher;
public function __construct(AuthInterface $authService, Array $config, UrlGeneratorInterface $urlGenerator, EventDispatcherInterface $dispatcher) { public function __construct(AuthInterface $authService, array $config, UrlGeneratorInterface $urlGenerator, EventDispatcherInterface $dispatcher)
{
$this->urlGenerator = $urlGenerator; $this->urlGenerator = $urlGenerator;
//Récupérer le service déaclaré authService //Récupérer le service déaclaré authService
$this->authService = $authService; $this->authService = $authService;
@ -48,7 +49,8 @@ class RsaAuthenticator extends AbstractFormLoginAuthenticator implements LogoutS
* Called on every request. Return whatever credentials you want, * Called on every request. Return whatever credentials you want,
* or null to stop authentication. * or null to stop authentication.
*/ */
public function getCredentials(Request $request) { public function getCredentials(Request $request)
{
if (!isset($_SERVER['HTTP_CT_REMOTE_USER']) || empty($_SERVER['HTTP_CT_REMOTE_USER'])) { if (!isset($_SERVER['HTTP_CT_REMOTE_USER']) || empty($_SERVER['HTTP_CT_REMOTE_USER'])) {
$this->returnRequest = $request->getUri(); $this->returnRequest = $request->getUri();
throw new \LogicException("Impossible de continuer sous RSA : L'entête HTTP_CT_REMOTE_USER est vide ou manquante"); throw new \LogicException("Impossible de continuer sous RSA : L'entête HTTP_CT_REMOTE_USER est vide ou manquante");
@ -56,22 +58,24 @@ class RsaAuthenticator extends AbstractFormLoginAuthenticator implements LogoutS
return true; return true;
} }
public function getUser($credentials, UserProviderInterface $userProvider) { public function getUser($credentials, UserProviderInterface $userProvider)
{
$username = $_SERVER['HTTP_CT_REMOTE_USER']; $username = $_SERVER['HTTP_CT_REMOTE_USER'];
$user = $userProvider->loadUserByUsername($username); $user = $userProvider->loadUserByUsername($username);
return $user; return $user;
} }
public function checkCredentials($credentials, UserInterface $user) { public function checkCredentials($credentials, UserInterface $user)
$this->authService->ctrlAccess($user); {
$this->authService->ctrlAccess($user);
// check credentials - e.g. make sure the password is valid // check credentials - e.g. make sure the password is valid
// no credential check is needed in this case // no credential check is needed in this case
// return true to cause authentication success // return true to cause authentication success
return true; return true;
} }
public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey) { public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
{
$event = new OnAuthenticationSuccessEvent($request, $token, $providerKey); $event = new OnAuthenticationSuccessEvent($request, $token, $providerKey);
$this->dispatcher->dispatch(OnAuthenticationSuccessEvent::NAME, $event); $this->dispatcher->dispatch(OnAuthenticationSuccessEvent::NAME, $event);
@ -79,8 +83,8 @@ class RsaAuthenticator extends AbstractFormLoginAuthenticator implements LogoutS
// on success, let the request continue // on success, let the request continue
} }
public function onAuthenticationFailure(Request $request, AuthenticationException $exception) { public function onAuthenticationFailure(Request $request, AuthenticationException $exception)
{
$event = new OnAuthenticationFailureEvent($request, $exception); $event = new OnAuthenticationFailureEvent($request, $exception);
$this->dispatcher->dispatch(OnAuthenticationFailureEvent::NAME, $event); $this->dispatcher->dispatch(OnAuthenticationFailureEvent::NAME, $event);
@ -95,26 +99,30 @@ class RsaAuthenticator extends AbstractFormLoginAuthenticator implements LogoutS
// return new RedirectResponse($url); // return new RedirectResponse($url);
// } // }
public function supportsRememberMe() { public function supportsRememberMe()
{
return false; return false;
} }
//implementation LogoutSuccessHandlerInterface //implementation LogoutSuccessHandlerInterface
public function onLogoutSuccess(Request $request) { public function onLogoutSuccess(Request $request)
{
$redirect = (isset($_SERVER['HTTP_FREDUURLRETOUR'])) ? $_SERVER['HTTP_FREDUURLRETOUR'] : $this->config['rsa']['logout_url']; $redirect = (isset($_SERVER['HTTP_FREDUURLRETOUR'])) ? $_SERVER['HTTP_FREDUURLRETOUR'] : $this->config['rsa']['logout_url'];
return new RedirectResponse($redirect); return new RedirectResponse($redirect);
} }
protected function getLoginUrl() { protected function getLoginUrl()
{
$return_request = urlencode($this->returnRequest); $return_request = urlencode($this->returnRequest);
$params = "?CT_ORIG_URL=" . $return_request; $params = "?CT_ORIG_URL=" . $return_request;
return $this->config['rsa']['login_url'] . $params; return $this->config['rsa']['login_url'] . $params;
} }
public function supports(Request $request) { public function supports(Request $request)
{
if (isset($this->config['environment']) && $this->config['environment'] == "test") { if (isset($this->config['environment']) && $this->config['environment'] == "test") {
return false; return false;
} }
return true; return true;
} }
} }

View file

@ -33,7 +33,7 @@ class SessionAuthenticator extends AbstractGuardAuthenticator
{ {
if (isset($_SESSION['id_utilisateur'])) { if (isset($_SESSION['id_utilisateur'])) {
return true; return true;
}else{ } else {
return true; return true;
} }
} }
@ -50,9 +50,9 @@ class SessionAuthenticator extends AbstractGuardAuthenticator
public function getUser($credentials, UserProviderInterface $userProvider) public function getUser($credentials, UserProviderInterface $userProvider)
{ {
if (!isset($_SESSION['id_utilisateur'])) { if (!isset($_SESSION['id_utilisateur'])) {
$user = new \App\Classes\AuthUser('','','','','',['ROLE_USER']); $user = new \App\Classes\AuthUser('', '', '', '', '', ['ROLE_USER']);
}else { } else {
$user = new \App\Classes\AuthUser($_SESSION['id_utilisateur'], $_SESSION['identifiant'], $_SESSION['status_compte'], $_SESSION['type_compte'],$credentials, ['ROLE_USER', 'ROLE_USER_CONNECTED']); $user = new \App\Classes\AuthUser($_SESSION['id_utilisateur'], $_SESSION['identifiant'], $_SESSION['status_compte'], $_SESSION['type_compte'], $credentials, ['ROLE_USER', 'ROLE_USER_CONNECTED']);
} }
// if a User is returned, checkCredentials() is called // if a User is returned, checkCredentials() is called
@ -65,9 +65,9 @@ class SessionAuthenticator extends AbstractGuardAuthenticator
// In case of an API token, no credential check is needed. // In case of an API token, no credential check is needed.
// Return `true` to cause authentication success // Return `true` to cause authentication success
if($user->getCredentials() === $credentials) { if ($user->getCredentials() === $credentials) {
return true; return true;
}else{ } else {
return false; return false;
} }
} }
@ -91,7 +91,6 @@ class SessionAuthenticator extends AbstractGuardAuthenticator
// return new JsonResponse($data, Response::HTTP_UNAUTHORIZED); // return new JsonResponse($data, Response::HTTP_UNAUTHORIZED);
$url = $this->router->generate('unauthorized'); $url = $this->router->generate('unauthorized');
return new RedirectResponse($url); return new RedirectResponse($url);
} }
/** /**
@ -108,8 +107,6 @@ class SessionAuthenticator extends AbstractGuardAuthenticator
$url = $this->router->generate('unauthorized'); $url = $this->router->generate('unauthorized');
return new RedirectResponse($url); return new RedirectResponse($url);
} }
public function supportsRememberMe() public function supportsRememberMe()
@ -117,11 +114,11 @@ class SessionAuthenticator extends AbstractGuardAuthenticator
return false; return false;
} }
public function onLogoutSuccess(Request $request) { public function onLogoutSuccess(Request $request)
{
//$homepage = $this->config["homepage"]; //$homepage = $this->config["homepage"];
//return \phpCAS::logoutWithRedirectService($this->urlGenerator->generate($homepage, array(), UrlGeneratorInterface::ABSOLUTE_URL)); //return \phpCAS::logoutWithRedirectService($this->urlGenerator->generate($homepage, array(), UrlGeneratorInterface::ABSOLUTE_URL));
header('Location: /index.php'); header('Location: /index.php');
return ; return ;
} }
}
}

View file

@ -17,47 +17,55 @@ namespace App\Session\AuthBundle\Security\User;
use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\EquatableInterface; use Symfony\Component\Security\Core\User\EquatableInterface;
class AuthUser implements UserInterface, EquatableInterface { class AuthUser implements UserInterface, EquatableInterface
{
private $username; private $username;
private $salt; private $salt;
private $roles = []; private $roles = [];
public function __construct($username, $salt, array $roles = []) { public function __construct($username, $salt, array $roles = [])
{
$this->username = $username; $this->username = $username;
$this->salt = $salt; $this->salt = $salt;
$this->roles = $roles; $this->roles = $roles;
} }
public function getRoles() { public function getRoles()
{
return $this->roles; return $this->roles;
} }
public function setRoles($roles) { public function setRoles($roles)
{
return $this->roles = $roles; return $this->roles = $roles;
} }
public function addRole($role) { public function addRole($role)
{
return $this->roles[] = $role; return $this->roles[] = $role;
} }
public function getPassword() { public function getPassword()
{
return; return;
} }
public function getSalt() { public function getSalt()
{
return $this->salt; return $this->salt;
} }
public function getUsername() { public function getUsername()
{
return $this->username; return $this->username;
} }
public function eraseCredentials() { public function eraseCredentials()
{
} }
public function isEqualTo(UserInterface $user) { public function isEqualTo(UserInterface $user)
{
if (!$user instanceof AuthUser) { if (!$user instanceof AuthUser) {
return false; return false;
} }
@ -72,5 +80,4 @@ class AuthUser implements UserInterface, EquatableInterface {
return true; return true;
} }
} }

View file

@ -13,9 +13,10 @@ use Symfony\Component\Security\Core\User\UserProviderInterface;
use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException; use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
class AuthUserProvider implements UserProviderInterface { class AuthUserProvider implements UserProviderInterface
{
public function __construct(AuthInterface $authService, Array $config) { public function __construct(AuthInterface $authService, array $config)
{
$this->config = $config; $this->config = $config;
if (!is_null($this->config['user_entity'])) { if (!is_null($this->config['user_entity'])) {
@ -26,33 +27,36 @@ class AuthUserProvider implements UserProviderInterface {
$this->authService = $authService; $this->authService = $authService;
} }
public function loadUserByUsername($username) { public function loadUserByUsername($username)
{
$entity_user = $this->entity_user; $entity_user = $this->entity_user;
return $this->authService->getUser($username); return $this->authService->getUser($username);
} }
private function _ctrlInstanceUser(UserInterface $user) { private function _ctrlInstanceUser(UserInterface $user)
{
$entity_user = $this->entity_user; $entity_user = $this->entity_user;
if (!$user instanceof $entity_user) { if (!$user instanceof $entity_user) {
throw new UnsupportedUserException( throw new UnsupportedUserException(
sprintf('Instances of "%s" are not supported.', get_class($user)) sprintf('Instances of "%s" are not supported.', get_class($user))
); );
} }
return $user; return $user;
} }
public function refreshUser(UserInterface $user) { public function refreshUser(UserInterface $user)
{
$user = $this->_ctrlInstanceUser($user); $user = $this->_ctrlInstanceUser($user);
return $this->loadUserByUsername($user->getUsername()); return $this->loadUserByUsername($user->getUsername());
} }
public function supportsClass($class) { public function supportsClass($class)
{
$entity_user = $this->entity_user; $entity_user = $this->entity_user;
return $this->entity_class === $class; return $this->entity_class === $class;
} }
} }

View file

@ -1,5 +1,6 @@
<?php <?php
namespace App\Session\AuthBundle\Utils; namespace App\Session\AuthBundle\Utils;
/* /*
* To change this license header, choose License Headers in Project Properties. * To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates * To change this template file, choose Tools | Templates
@ -11,9 +12,10 @@ namespace App\Session\AuthBundle\Utils;
* *
* @author belhadjali * @author belhadjali
*/ */
class Config { class Config
{
public static function getDeclaredType($config) { public static function getDeclaredType($config)
{
if (!isset($config['type_auth'])) { if (!isset($config['type_auth'])) {
throw new \LogicException('Paramètre type_auth manquant'); throw new \LogicException('Paramètre type_auth manquant');
} }
@ -25,11 +27,13 @@ class Config {
return self::formatType($type); return self::formatType($type);
} }
public static function formatType($type) { public static function formatType($type)
{
return ucfirst(strtolower($type)); return ucfirst(strtolower($type));
} }
public static function typeIsSupported($type) { public static function typeIsSupported($type)
{
$type_auth = self::formatType($type); $type_auth = self::formatType($type);
if (!in_array($type_auth, ['Rsa', 'Cas'])) { if (!in_array($type_auth, ['Rsa', 'Cas'])) {
throw new \LogicException('Seuls Cas et Rsa sont supportés pour le moment'); throw new \LogicException('Seuls Cas et Rsa sont supportés pour le moment');

View file

@ -14,9 +14,10 @@ namespace App\Utils;
* *
* @author belhadjali * @author belhadjali
*/ */
class Config { class Config
{
public static function getDeclaredType($config) { public static function getDeclaredType($config)
{
// if (!isset($config['type_auth'])) { // if (!isset($config['type_auth'])) {
// throw new \LogicException('Paramètre type_auth manquant'); // throw new \LogicException('Paramètre type_auth manquant');
// } // }
@ -26,15 +27,17 @@ namespace App\Utils;
// self::typeIsSupported($type); // self::typeIsSupported($type);
// //
// return self::formatType($type); // return self::formatType($type);
return true; return true;
} }
public static function formatType($type) { public static function formatType($type)
{
// return ucfirst(strtolower($type)); // return ucfirst(strtolower($type));
return; return;
} }
public static function typeIsSupported($type) { public static function typeIsSupported($type)
{
// $type_auth = self::formatType($type); // $type_auth = self::formatType($type);
// if (!in_array($type_auth, ['Rsa', 'Cas'])) { // if (!in_array($type_auth, ['Rsa', 'Cas'])) {
// throw new \LogicException('Seuls Cas et Rsa sont supportés pour le moment'); // throw new \LogicException('Seuls Cas et Rsa sont supportés pour le moment');

View file

@ -52,7 +52,8 @@ class FilesystemTagAwareAdapter extends AbstractTagAwareAdapter implements Prune
return $ok; return $ok;
} }
set_error_handler(static function () {}); set_error_handler(static function () {
});
$chars = '+-ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $chars = '+-ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
try { try {
@ -197,7 +198,8 @@ class FilesystemTagAwareAdapter extends AbstractTagAwareAdapter implements Prune
continue; continue;
} }
set_error_handler(static function () {}); set_error_handler(static function () {
});
try { try {
if (rename($tagFolder, $renamed = substr_replace($tagFolder, bin2hex(random_bytes(4)), -9))) { if (rename($tagFolder, $renamed = substr_replace($tagFolder, bin2hex(random_bytes(4)), -9))) {

View file

@ -118,7 +118,9 @@ final class LockRegistry
} }
static $signalingException, $signalingCallback; static $signalingException, $signalingCallback;
$signalingException = $signalingException ?? unserialize("O:9:\"Exception\":1:{s:16:\"\0Exception\0trace\";a:0:{}}"); $signalingException = $signalingException ?? unserialize("O:9:\"Exception\":1:{s:16:\"\0Exception\0trace\";a:0:{}}");
$signalingCallback = $signalingCallback ?? function () use ($signalingException) { throw $signalingException; }; $signalingCallback = $signalingCallback ?? function () use ($signalingException) {
throw $signalingException;
};
try { try {
$value = $pool->get($item->getKey(), $signalingCallback, 0); $value = $pool->get($item->getKey(), $signalingCallback, 0);
@ -142,7 +144,8 @@ final class LockRegistry
if (null !== $h = self::$openedFiles[$key] ?? null) { if (null !== $h = self::$openedFiles[$key] ?? null) {
return $h; return $h;
} }
set_error_handler(function () {}); set_error_handler(function () {
});
try { try {
$h = fopen(self::$files[$key], 'r+'); $h = fopen(self::$files[$key], 'r+');
} finally { } finally {

View file

@ -82,7 +82,9 @@ class ArrayCache implements Psr16CacheInterface, LoggerAwareInterface, Resettabl
} }
} }
return $this->generateItems($keys, microtime(true), function ($k, $v, $hit) use ($default) { return $hit ? $v : $default; }); return $this->generateItems($keys, microtime(true), function ($k, $v, $hit) use ($default) {
return $hit ? $v : $default;
});
} }
/** /**

View file

@ -86,7 +86,9 @@ trait MemcachedTrait
if (!static::isSupported()) { if (!static::isSupported()) {
throw new CacheException('Memcached >= 2.2.0 is required'); throw new CacheException('Memcached >= 2.2.0 is required');
} }
set_error_handler(function ($type, $msg, $file, $line) { throw new \ErrorException($msg, 0, $type, $file, $line); }); set_error_handler(function ($type, $msg, $file, $line) {
throw new \ErrorException($msg, 0, $type, $file, $line);
});
try { try {
$options += static::$defaultClientOptions; $options += static::$defaultClientOptions;
$client = new \Memcached($options['persistent_id']); $client = new \Memcached($options['persistent_id']);

View file

@ -61,7 +61,9 @@ trait RedisTrait
if ($redisClient instanceof \Predis\ClientInterface && $redisClient->getOptions()->exceptions) { if ($redisClient instanceof \Predis\ClientInterface && $redisClient->getOptions()->exceptions) {
$options = clone $redisClient->getOptions(); $options = clone $redisClient->getOptions();
\Closure::bind(function () { $this->options['exceptions'] = false; }, $options, $options)(); \Closure::bind(function () {
$this->options['exceptions'] = false;
}, $options, $options)();
$redisClient = new $redisClient($redisClient->getConnection(), $options); $redisClient = new $redisClient($redisClient->getConnection(), $options);
} }
@ -177,7 +179,9 @@ trait RedisTrait
throw new InvalidArgumentException(sprintf('Redis connection failed (%s): %s', $e->getMessage(), $dsn)); throw new InvalidArgumentException(sprintf('Redis connection failed (%s): %s', $e->getMessage(), $dsn));
} }
set_error_handler(function ($type, $msg) use (&$error) { $error = $msg; }); set_error_handler(function ($type, $msg) use (&$error) {
$error = $msg;
});
$isConnected = $redis->isConnected(); $isConnected = $redis->isConnected();
restore_error_handler(); restore_error_handler();
if (!$isConnected) { if (!$isConnected) {

View file

@ -44,7 +44,9 @@ class ExprBuilder
*/ */
public function always(\Closure $then = null) public function always(\Closure $then = null)
{ {
$this->ifPart = function ($v) { return true; }; $this->ifPart = function ($v) {
return true;
};
if (null !== $then) { if (null !== $then) {
$this->thenPart = $then; $this->thenPart = $then;
@ -65,7 +67,9 @@ class ExprBuilder
public function ifTrue(\Closure $closure = null) public function ifTrue(\Closure $closure = null)
{ {
if (null === $closure) { if (null === $closure) {
$closure = function ($v) { return true === $v; }; $closure = function ($v) {
return true === $v;
};
} }
$this->ifPart = $closure; $this->ifPart = $closure;
@ -80,7 +84,9 @@ class ExprBuilder
*/ */
public function ifString() public function ifString()
{ {
$this->ifPart = function ($v) { return is_string($v); }; $this->ifPart = function ($v) {
return is_string($v);
};
return $this; return $this;
} }
@ -92,7 +98,9 @@ class ExprBuilder
*/ */
public function ifNull() public function ifNull()
{ {
$this->ifPart = function ($v) { return null === $v; }; $this->ifPart = function ($v) {
return null === $v;
};
return $this; return $this;
} }
@ -104,7 +112,9 @@ class ExprBuilder
*/ */
public function ifEmpty() public function ifEmpty()
{ {
$this->ifPart = function ($v) { return empty($v); }; $this->ifPart = function ($v) {
return empty($v);
};
return $this; return $this;
} }
@ -116,7 +126,9 @@ class ExprBuilder
*/ */
public function ifArray() public function ifArray()
{ {
$this->ifPart = function ($v) { return is_array($v); }; $this->ifPart = function ($v) {
return is_array($v);
};
return $this; return $this;
} }
@ -130,7 +142,9 @@ class ExprBuilder
*/ */
public function ifInArray(array $array) public function ifInArray(array $array)
{ {
$this->ifPart = function ($v) use ($array) { return in_array($v, $array, true); }; $this->ifPart = function ($v) use ($array) {
return in_array($v, $array, true);
};
return $this; return $this;
} }
@ -144,7 +158,9 @@ class ExprBuilder
*/ */
public function ifNotInArray(array $array) public function ifNotInArray(array $array)
{ {
$this->ifPart = function ($v) use ($array) { return !in_array($v, $array, true); }; $this->ifPart = function ($v) use ($array) {
return !in_array($v, $array, true);
};
return $this; return $this;
} }
@ -156,8 +172,12 @@ class ExprBuilder
*/ */
public function castToArray() public function castToArray()
{ {
$this->ifPart = function ($v) { return !is_array($v); }; $this->ifPart = function ($v) {
$this->thenPart = function ($v) { return array($v); }; return !is_array($v);
};
$this->thenPart = function ($v) {
return array($v);
};
return $this; return $this;
} }
@ -183,7 +203,9 @@ class ExprBuilder
*/ */
public function thenEmptyArray() public function thenEmptyArray()
{ {
$this->thenPart = function ($v) { return array(); }; $this->thenPart = function ($v) {
return array();
};
return $this; return $this;
} }
@ -201,7 +223,9 @@ class ExprBuilder
*/ */
public function thenInvalid($message) public function thenInvalid($message)
{ {
$this->thenPart = function ($v) use ($message) {throw new \InvalidArgumentException(sprintf($message, json_encode($v))); }; $this->thenPart = function ($v) use ($message) {
throw new \InvalidArgumentException(sprintf($message, json_encode($v)));
};
return $this; return $this;
} }
@ -215,7 +239,9 @@ class ExprBuilder
*/ */
public function thenUnset() public function thenUnset()
{ {
$this->thenPart = function ($v) { throw new UnsetKeyException('Unsetting key'); }; $this->thenPart = function ($v) {
throw new UnsetKeyException('Unsetting key');
};
return $this; return $this;
} }

View file

@ -47,7 +47,8 @@ class EnumNode extends ScalarNode
'The value %s is not allowed for path "%s". Permissible values: %s', 'The value %s is not allowed for path "%s". Permissible values: %s',
json_encode($value), json_encode($value),
$this->getPath(), $this->getPath(),
implode(', ', array_map('json_encode', $this->values)))); implode(', ', array_map('json_encode', $this->values))
));
$ex->setPath($this->getPath()); $ex->setPath($this->getPath());
throw $ex; throw $ex;

View file

@ -86,7 +86,8 @@ class FileLocator implements FileLocatorInterface
private function isAbsolutePath($file) private function isAbsolutePath($file)
{ {
if ($file[0] === '/' || $file[0] === '\\' if ($file[0] === '/' || $file[0] === '\\'
|| (strlen($file) > 3 && ctype_alpha($file[0]) || (
strlen($file) > 3 && ctype_alpha($file[0])
&& $file[1] === ':' && $file[1] === ':'
&& ($file[2] === '\\' || $file[2] === '/') && ($file[2] === '\\' || $file[2] === '/')
) )

View file

@ -26,7 +26,7 @@ interface LoaderInterface
* *
* @throws \Exception If something went wrong * @throws \Exception If something went wrong
*/ */
public function load($resource, string $type = NULL); public function load($resource, string $type = null);
/** /**
* Returns whether this class supports the given resource. * Returns whether this class supports the given resource.
@ -36,7 +36,7 @@ interface LoaderInterface
* *
* @return bool True if this class supports the given resource, false otherwise * @return bool True if this class supports the given resource, false otherwise
*/ */
public function supports($resource, string $type = NULL); public function supports($resource, string $type = null);
/** /**
* Gets the loader resolver. * Gets the loader resolver.

View file

@ -101,7 +101,9 @@ class GlobResource implements \IteratorAggregate, SelfCheckingResourceInterface,
$files = iterator_to_array(new \RecursiveIteratorIterator( $files = iterator_to_array(new \RecursiveIteratorIterator(
new \RecursiveCallbackFilterIterator( new \RecursiveCallbackFilterIterator(
new \RecursiveDirectoryIterator($path, \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS), new \RecursiveDirectoryIterator($path, \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS),
function (\SplFileInfo $file) { return '.' !== $file->getBasename()[0]; } function (\SplFileInfo $file) {
return '.' !== $file->getBasename()[0];
}
), ),
\RecursiveIteratorIterator::LEAVES_ONLY \RecursiveIteratorIterator::LEAVES_ONLY
)); ));

View file

@ -34,13 +34,17 @@ class ExprBuilderTest extends TestCase
$this->assertFinalizedValueIs('new_value', $test, array('key' => true)); $this->assertFinalizedValueIs('new_value', $test, array('key' => true));
$test = $this->getTestBuilder() $test = $this->getTestBuilder()
->ifTrue(function ($v) { return true; }) ->ifTrue(function ($v) {
return true;
})
->then($this->returnClosure('new_value')) ->then($this->returnClosure('new_value'))
->end(); ->end();
$this->assertFinalizedValueIs('new_value', $test); $this->assertFinalizedValueIs('new_value', $test);
$test = $this->getTestBuilder() $test = $this->getTestBuilder()
->ifTrue(function ($v) { return false; }) ->ifTrue(function ($v) {
return false;
})
->then($this->returnClosure('new_value')) ->then($this->returnClosure('new_value'))
->end(); ->end();
$this->assertFinalizedValueIs('value', $test); $this->assertFinalizedValueIs('value', $test);

View file

@ -35,7 +35,10 @@ class XmlReferenceDumperTest extends TestCase
private function getConfigurationAsString() private function getConfigurationAsString()
{ {
return str_replace("\n", PHP_EOL, <<<'EOL' return str_replace(
"\n",
PHP_EOL,
<<<'EOL'
<!-- Namespace: http://example.org/schema/dic/acme_root --> <!-- Namespace: http://example.org/schema/dic/acme_root -->
<!-- scalar-required: Required --> <!-- scalar-required: Required -->
<!-- enum-with-default: One of "this"; "that" --> <!-- enum-with-default: One of "this"; "that" -->

View file

@ -30,7 +30,9 @@ class NormalizationTest extends TestCase
->node('encoders', 'array') ->node('encoders', 'array')
->useAttributeAsKey('class') ->useAttributeAsKey('class')
->prototype('array') ->prototype('array')
->beforeNormalization()->ifString()->then(function ($v) { return array('algorithm' => $v); })->end() ->beforeNormalization()->ifString()->then(function ($v) {
return array('algorithm' => $v);
})->end()
->children() ->children()
->node('algorithm', 'scalar')->end() ->node('algorithm', 'scalar')->end()
->end() ->end()
@ -135,7 +137,9 @@ class NormalizationTest extends TestCase
), ),
); );
return array_map(function ($v) { return array($v); }, $configs); return array_map(function ($v) {
return array($v);
}, $configs);
} }
/** /**
@ -166,7 +170,9 @@ class NormalizationTest extends TestCase
), ),
); );
return array_map(function ($v) { return array($v); }, $configs); return array_map(function ($v) {
return array($v);
}, $configs);
} }
/** /**

View file

@ -24,12 +24,12 @@ class FileLoaderTest extends TestCase
$locatorMockForAdditionalLoader = $this->getMockBuilder('Symfony\Component\Config\FileLocatorInterface')->getMock(); $locatorMockForAdditionalLoader = $this->getMockBuilder('Symfony\Component\Config\FileLocatorInterface')->getMock();
$locatorMockForAdditionalLoader->expects($this->any())->method('locate')->will($this->onConsecutiveCalls( $locatorMockForAdditionalLoader->expects($this->any())->method('locate')->will($this->onConsecutiveCalls(
array('path/to/file1'), // Default array('path/to/file1'), // Default
array('path/to/file1', 'path/to/file2'), // First is imported array('path/to/file1', 'path/to/file2'), // First is imported
array('path/to/file1', 'path/to/file2'), // Second is imported array('path/to/file1', 'path/to/file2'), // Second is imported
array('path/to/file1'), // Exception array('path/to/file1'), // Exception
array('path/to/file1', 'path/to/file2') // Exception array('path/to/file1', 'path/to/file2') // Exception
)); ));
$fileLoader = new TestFileLoader($locatorMock); $fileLoader = new TestFileLoader($locatorMock);
$fileLoader->setSupports(false); $fileLoader->setSupports(false);

View file

@ -34,7 +34,8 @@ class LoaderResolverTest extends TestCase
$loader = $this->getMockBuilder('Symfony\Component\Config\Loader\LoaderInterface')->getMock(); $loader = $this->getMockBuilder('Symfony\Component\Config\Loader\LoaderInterface')->getMock();
$loader->expects($this->once())->method('supports')->will($this->returnValue(true)); $loader->expects($this->once())->method('supports')->will($this->returnValue(true));
$resolver = new LoaderResolver(array($loader)); $resolver = new LoaderResolver(array($loader));
$this->assertEquals($loader, $resolver->resolve(function () {}), '->resolve() returns the loader for the given resource'); $this->assertEquals($loader, $resolver->resolve(function () {
}), '->resolve() returns the loader for the given resource');
} }
public function testLoaders() public function testLoaders()

View file

@ -56,7 +56,9 @@ EOF
public function testExistsKo() public function testExistsKo()
{ {
spl_autoload_register($autoloader = function ($class) use (&$loadedClass) { $loadedClass = $class; }); spl_autoload_register($autoloader = function ($class) use (&$loadedClass) {
$loadedClass = $class;
});
try { try {
$res = new ClassExistenceResource('MissingFooClass'); $res = new ClassExistenceResource('MissingFooClass');

View file

@ -220,7 +220,8 @@ class XmlUtils
{ {
$errors = array(); $errors = array();
foreach (libxml_get_errors() as $error) { foreach (libxml_get_errors() as $error) {
$errors[] = sprintf('[%s %s] %s (in %s - line %d, column %d)', $errors[] = sprintf(
'[%s %s] %s (in %s - line %d, column %d)',
LIBXML_ERR_WARNING == $error->level ? 'WARNING' : 'ERROR', LIBXML_ERR_WARNING == $error->level ? 'WARNING' : 'ERROR',
$error->code, $error->code,
trim($error->message), trim($error->message),

View file

@ -290,12 +290,16 @@ class ExpressionLanguageTest extends TestCase
return [ return [
[ [
function (ExpressionLanguage $el) { function (ExpressionLanguage $el) {
$el->register('fn', function () {}, function () {}); $el->register('fn', function () {
}, function () {
});
}, },
], ],
[ [
function (ExpressionLanguage $el) { function (ExpressionLanguage $el) {
$el->addFunction(new ExpressionFunction('fn', function () {}, function () {})); $el->addFunction(new ExpressionFunction('fn', function () {
}, function () {
}));
}, },
], ],
[ [

View file

@ -91,7 +91,8 @@ class ParserTest extends TestCase
'3 - 3', '3 - 3',
], ],
[ [
new Node\BinaryNode('*', new Node\BinaryNode(
'*',
new Node\BinaryNode('-', new Node\ConstantNode(3), new Node\ConstantNode(3)), new Node\BinaryNode('-', new Node\ConstantNode(3), new Node\ConstantNode(3)),
new Node\ConstantNode(2) new Node\ConstantNode(2)
), ),
@ -142,9 +143,15 @@ class ParserTest extends TestCase
$this->createGetAttrNode( $this->createGetAttrNode(
$this->createGetAttrNode( $this->createGetAttrNode(
$this->createGetAttrNode(new Node\NameNode('foo'), 'bar', Node\GetAttrNode::METHOD_CALL), $this->createGetAttrNode(new Node\NameNode('foo'), 'bar', Node\GetAttrNode::METHOD_CALL),
'foo', Node\GetAttrNode::METHOD_CALL), 'foo',
'baz', Node\GetAttrNode::PROPERTY_CALL), Node\GetAttrNode::METHOD_CALL
'3', Node\GetAttrNode::ARRAY_CALL), ),
'baz',
Node\GetAttrNode::PROPERTY_CALL
),
'3',
Node\GetAttrNode::ARRAY_CALL
),
'foo.bar().foo().baz[3]', 'foo.bar().foo().baz[3]',
['foo'], ['foo'],
], ],

View file

@ -601,7 +601,8 @@ class Filesystem
public function isAbsolutePath($file) public function isAbsolutePath($file)
{ {
return strspn($file, '/\\', 0, 1) return strspn($file, '/\\', 0, 1)
|| (\strlen($file) > 3 && ctype_alpha($file[0]) || (
\strlen($file) > 3 && ctype_alpha($file[0])
&& ':' === $file[1] && ':' === $file[1]
&& strspn($file, '/\\', 2, 1) && strspn($file, '/\\', 2, 1)
) )

View file

@ -94,8 +94,12 @@ abstract class AbstractFindAdapter extends AbstractAdapter
$command->setErrorHandler( $command->setErrorHandler(
$this->ignoreUnreadableDirs $this->ignoreUnreadableDirs
// If directory is unreadable and finder is set to ignore it, `stderr` is ignored. // If directory is unreadable and finder is set to ignore it, `stderr` is ignored.
? function ($stderr) { return; } ? function ($stderr) {
: function ($stderr) { throw new AccessDeniedException($stderr); } return;
}
: function ($stderr) {
throw new AccessDeniedException($stderr);
}
); );
$paths = $this->shell->testCommand('uniq') ? $command->add('| uniq')->execute() : array_unique($command->execute()); $paths = $this->shell->testCommand('uniq') ? $command->add('| uniq')->execute() : array_unique($command->execute());
@ -181,7 +185,8 @@ abstract class AbstractFindAdapter extends AbstractAdapter
$command $command
->add($i > 0 ? '-or' : null) ->add($i > 0 ? '-or' : null)
->add($expr->isRegex() ->add(
$expr->isRegex()
? ($expr->isCaseSensitive() ? '-regex' : '-iregex') ? ($expr->isCaseSensitive() ? '-regex' : '-iregex')
: ($expr->isCaseSensitive() ? '-name' : '-iname') : ($expr->isCaseSensitive() ? '-name' : '-iname')
) )
@ -223,7 +228,8 @@ abstract class AbstractFindAdapter extends AbstractAdapter
$command $command
->add($i > 0 ? '-or' : null) ->add($i > 0 ? '-or' : null)
->add($expr->isRegex() ->add(
$expr->isRegex()
? ($expr->isCaseSensitive() ? '-regex' : '-iregex') ? ($expr->isCaseSensitive() ? '-regex' : '-iregex')
: ($expr->isCaseSensitive() ? '-path' : '-ipath') : ($expr->isCaseSensitive() ? '-path' : '-ipath')
) )

View file

@ -273,7 +273,9 @@ class Command
array_map(function ($bit) { array_map(function ($bit) {
return $bit instanceof Command ? $bit->join() : ($bit ?: null); return $bit instanceof Command ? $bit->join() : ($bit ?: null);
}, $this->bits), }, $this->bits),
function ($bit) { return null !== $bit; } function ($bit) {
return null !== $bit;
}
)); ));
} }

View file

@ -264,7 +264,9 @@ class FinderTest extends Iterator\RealIteratorTestCase
public function testSort($adapter) public function testSort($adapter)
{ {
$finder = $this->buildFinder($adapter); $finder = $this->buildFinder($adapter);
$this->assertSame($finder, $finder->sort(function (\SplFileInfo $a, \SplFileInfo $b) { return strcmp($a->getRealpath(), $b->getRealpath()); })); $this->assertSame($finder, $finder->sort(function (\SplFileInfo $a, \SplFileInfo $b) {
return strcmp($a->getRealpath(), $b->getRealpath());
}));
$this->assertIterator($this->toAbsolute(array('foo', 'foo bar', 'foo/bar.tmp', 'test.php', 'test.py', 'toto')), $finder->in(self::$tmpDir)->getIterator()); $this->assertIterator($this->toAbsolute(array('foo', 'foo bar', 'foo/bar.tmp', 'test.php', 'test.py', 'toto')), $finder->in(self::$tmpDir)->getIterator());
} }
@ -274,7 +276,9 @@ class FinderTest extends Iterator\RealIteratorTestCase
public function testFilter($adapter) public function testFilter($adapter)
{ {
$finder = $this->buildFinder($adapter); $finder = $this->buildFinder($adapter);
$this->assertSame($finder, $finder->filter(function (\SplFileInfo $f) { return preg_match('/test/', $f) > 0; })); $this->assertSame($finder, $finder->filter(function (\SplFileInfo $f) {
return preg_match('/test/', $f) > 0;
}));
$this->assertIterator($this->toAbsolute(array('test.php', 'test.py')), $finder->in(self::$tmpDir)->getIterator()); $this->assertIterator($this->toAbsolute(array('test.php', 'test.py')), $finder->in(self::$tmpDir)->getIterator());
} }
@ -374,7 +378,9 @@ class FinderTest extends Iterator\RealIteratorTestCase
$finder = $this->buildFinder($adapter); $finder = $this->buildFinder($adapter);
$a = iterator_to_array($finder->directories()->in(self::$tmpDir)); $a = iterator_to_array($finder->directories()->in(self::$tmpDir));
$a = array_values(array_map(function ($a) { return (string) $a; }, $a)); $a = array_values(array_map(function ($a) {
return (string) $a;
}, $a));
sort($a); sort($a);
$this->assertEquals($expected, $a, 'implements the \IteratorAggregate interface'); $this->assertEquals($expected, $a, 'implements the \IteratorAggregate interface');
} }
@ -632,7 +638,9 @@ class FinderTest extends Iterator\RealIteratorTestCase
public function getAdaptersTestData() public function getAdaptersTestData()
{ {
return array_map( return array_map(
function ($adapter) { return array($adapter); }, function ($adapter) {
return array($adapter);
},
$this->getValidAdapters() $this->getValidAdapters()
); );
} }

View file

@ -38,8 +38,12 @@ class CustomFilterIteratorTest extends IteratorTestCase
public function getAcceptData() public function getAcceptData()
{ {
return array( return array(
array(array(function (\SplFileInfo $fileinfo) { return false; }), array()), array(array(function (\SplFileInfo $fileinfo) {
array(array(function (\SplFileInfo $fileinfo) { return preg_match('/^test/', $fileinfo) > 0; }), array('test.php', 'test.py')), return false;
}), array()),
array(array(function (\SplFileInfo $fileinfo) {
return preg_match('/^test/', $fileinfo) > 0;
}), array('test.php', 'test.py')),
array(array('is_dir'), array()), array(array('is_dir'), array()),
); );
} }

View file

@ -49,28 +49,32 @@ class FilecontentFilterIteratorTest extends IteratorTestCase
{ {
$inner = new MockFileListIterator(); $inner = new MockFileListIterator();
$inner[] = new MockSplFileInfo(array( $inner[] = new MockSplFileInfo(
array(
'name' => 'a.txt', 'name' => 'a.txt',
'contents' => 'Lorem ipsum...', 'contents' => 'Lorem ipsum...',
'type' => 'file', 'type' => 'file',
'mode' => 'r+', ) 'mode' => 'r+', )
); );
$inner[] = new MockSplFileInfo(array( $inner[] = new MockSplFileInfo(
array(
'name' => 'b.yml', 'name' => 'b.yml',
'contents' => 'dolor sit...', 'contents' => 'dolor sit...',
'type' => 'file', 'type' => 'file',
'mode' => 'r+', ) 'mode' => 'r+', )
); );
$inner[] = new MockSplFileInfo(array( $inner[] = new MockSplFileInfo(
array(
'name' => 'some/other/dir/third.php', 'name' => 'some/other/dir/third.php',
'contents' => 'amet...', 'contents' => 'amet...',
'type' => 'file', 'type' => 'file',
'mode' => 'r+', ) 'mode' => 'r+', )
); );
$inner[] = new MockSplFileInfo(array( $inner[] = new MockSplFileInfo(
array(
'name' => 'unreadable-file.txt', 'name' => 'unreadable-file.txt',
'contents' => false, 'contents' => false,
'type' => 'file', 'type' => 'file',

Some files were not shown because too many files have changed in this diff Show more