Skip to content

Commit

Permalink
big update :
Browse files Browse the repository at this point in the history
 - ajout des objets de sessions afin de permettre les alertes, les retours à la page précédente, les token contre le xss, le chargement asynchrone de css ou de javascript
 - ajout de la favico de sand
 - ajout de l'acces denied en fonction de la session et des accès de l'utilisateur
 - ajout de l'affichage des erreurs pdo dans les environnements de test et de dev
 - ajout de la constante d'environnement
  • Loading branch information
Emmanuel ROY committed Feb 3, 2021
1 parent fc111ab commit 3f0d453
Show file tree
Hide file tree
Showing 50 changed files with 416 additions and 58 deletions.
7 changes: 6 additions & 1 deletion application/class/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,16 @@ public function __construct()

public function launch()
{
//print_r($this->route);
//on declare la session lors du chargement du controlleur,
// ainsi on instancie la page précédente et le javascript et le css asynchrone
\MVC\Object\Session::createAndTestSession();

$controlleur = new Controlleur($this);
//si la page n'est un controlleur d'action alors on affiche l'écran
if (!$this->url->page['control']) {
print($controlleur->vue->ecran);
//si on affiche l'écran alors on vide les alertes de la session
\MVC\Object\Alert::remove();
}
}
}
38 changes: 0 additions & 38 deletions application/class/Asynchonous.php

This file was deleted.

10 changes: 10 additions & 0 deletions application/class/Bdd.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ public function __construct($bdd = 'bdd1')
public function faireSQLRequete($sql)
{
$req = $this->bdd->query($sql);
// Print Pdo::ERRORs
if (!$req && (ENV == 'TEST' || ENV == 'DEV')) {
echo "\nPDO::errorInfo():\n";
print_r($this->bdd->errorInfo());
}
return $req;
}

Expand Down Expand Up @@ -57,6 +62,11 @@ public function faireBindRequete($sql, array $params = null)
}
}
$req->execute();
// Print Pdo::ERRORs
if (!$req && (ENV == 'TEST' || ENV == 'DEV')) {
echo "\nPDO::errorInfo():\n";
print_r($this->bdd->errorInfo());
}
//$req->closeCursor();
return $req;
}
Expand Down
6 changes: 4 additions & 2 deletions application/config/app-parameters.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,7 @@
// ou : "my-app/dev/
define("BASE_SERVER_DIRECTORY", "");

// Optionnel! il n'est nécessaire que si vous l'utilisez dans les fichier de traitement
define('PATH_URL', $_SERVER['REQUEST_SCHEME'] . "://www.domain.org");
// Optionnel! il n'est nécessaire que si vous l'utilisez dans les fichiers de traitement
define('PATH_URL', $_SERVER['REQUEST_SCHEME'] . "://www.domain.org");

define('ENV', "TEST");
4 changes: 2 additions & 2 deletions application/include/actions/DefaultAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,15 +53,15 @@ public function variableSlug($data)
return $this->render('action', array('var1' => $var1, 'var2' => $var2, 'var3' => $var3));
}

public function makeHttp11($data)
public function makeHttp11()
{
$data = array('myval' => 25);
//Dumper::dump($data);
\MVC\Classe\Logger::addLog('action', 'http11 make request');
$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']))->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);
}
}
3 changes: 2 additions & 1 deletion application/include/controlleurs/admin.php
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
<?php

\MVC\Object\Alert::addAlert('NOT OK!','You should not go to the admin access.','warning');
\MVC\Object\Session::checkACL_admin();
5 changes: 5 additions & 0 deletions application/include/controlleurs/error-access-denied.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?php

/**
* Controlleur permettant d'afficher la page d'erreur 403 accès restreint
*/
5 changes: 5 additions & 0 deletions application/include/modeles/error-access-denied.model
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
name : error-access-denied
page_title : Page 403 (Accès restreint) de l'application
description : Page 403 (Accès restreint) de l'application
params : module_params

5 changes: 2 additions & 3 deletions application/include/modeles/error.model
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
name : error
page_title: Erreurs de l'application
description : abracadabla
engine : blade
page_title: Page 404 (Page Non Trouvé) de l'application
description : Page 404 (Page Non Trouvé) de l'application
params : params
15 changes: 15 additions & 0 deletions application/include/vues/layout/body-nomenu.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
@extends('system')

@section('body')
<!-- Body Inner -->
<div class="body-inner">

<section id="page-content">
<div class="container">
@yield('content')
</div>
</section>

</div>
<!-- end: Body Inner -->
@endsection
23 changes: 21 additions & 2 deletions application/include/vues/layout/body.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<div class="container">
<ul class="top-menu">
<li @if($name == 'docs_route' || $name == 'docs_name_route') class="actual" @endif ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'docs', []) }}">Documentation</a></li>
<li @if($name == 'depots') class="actual" @endif ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'gitlist/SAND-FrameWork', []) }}">Dépot</a></li>
<li @if($name == 'depots') class="actual" @endif ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'gitlist/SAND-FrameWork', []) }}">Dépot</a></li>
<li @if($name == 'donate') class="actual" @endif ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'Donate', []) }}">Donate</a></li>
<li @if($name == 'cgu') class="actual" @endif ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'CGU', []) }}"> CGU Terms</a></li>
<li @if($name == 'policy') class="actual" @endif ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'Policy', []) }}">Policy</a></li>
Expand Down Expand Up @@ -50,10 +50,29 @@
</div>
</header>
<!-- end: Header -->

<!-- Subbar -->
<div id="sub-bar" class="fullwidth">
<div class="container">
<span style="float:left;">Vous êtes connecté en tant que {{$_SESSION['user_login']}}</span>
<span style="float:right;"><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'Logout', []) }}">Se Deconnecter</a></span>
</div>
</div>
<!-- end: Subbar -->
<section id="page-content">
<div class="container">

<!--Alerts-->
@if(isset($_SESSION['alerts']))
@foreach($_SESSION['alerts'] as $alert)
<div class="alert alert-{{$alert['type']}} alert-dismissible fade show" role="alert">
<strong>{{$alert['title']}}</strong> {{$alert['message']}}.
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
@endforeach
@endif
<!--end: Alerts-->
@yield('content')

</div>
</section>

Expand Down
18 changes: 18 additions & 0 deletions application/include/vues/system/system.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,24 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="description" lang="fr" content="{{$description}}"/>

<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/manifest.json">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
<meta name="theme-color" content="#ffffff">

@section('top-css')
<link rel="stylesheet" href="{{ \MVC\Classe\Url::asset_rewrite('assets/bootstrap-5.0.0-beta1-dist/css/bootstrap.min.css')}}">
<link rel="stylesheet" href="{{ \MVC\Classe\Url::asset_rewrite('assets/css/custom.css')}}">
Expand Down
34 changes: 34 additions & 0 deletions application/include/vues/view/error-access-denied.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{{-- Vue Blade de la page d'erreur 403 accès restreint--}}
@extends('body-nomenu')

@section('content')
<div id="access-denied">
<div class="container">
<h1>Accès non Autorisé</h1>
<p>
Vous ne possédez pas les accès à cette application.
<br/>
Si c'est une erreur : veuillez bien contacter l'administrateur de l'application afin qu'il vous alloue un accès
<br/>
<a href="mailto:administrateur@sand-framework.fr">administrateur@sand-framework.fr</a>
</p>
<br /><br />
<div id="gears">
<svg xmlns="http://www.w3.org/2000/svg" width="120px" height="120px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="uil-gears">
<rect x="0" y="0" width="100" height="100" fill="none" class="bk"/>
<g transform="translate(-20,-20)">
<path d="M79.9,52.6C80,51.8,80,50.9,80,50s0-1.8-0.1-2.6l-5.1-0.4c-0.3-2.4-0.9-4.6-1.8-6.7l4.2-2.9c-0.7-1.6-1.6-3.1-2.6-4.5 L70,35c-1.4-1.9-3.1-3.5-4.9-4.9l2.2-4.6c-1.4-1-2.9-1.9-4.5-2.6L59.8,27c-2.1-0.9-4.4-1.5-6.7-1.8l-0.4-5.1C51.8,20,50.9,20,50,20 s-1.8,0-2.6,0.1l-0.4,5.1c-2.4,0.3-4.6,0.9-6.7,1.8l-2.9-4.1c-1.6,0.7-3.1,1.6-4.5,2.6l2.1,4.6c-1.9,1.4-3.5,3.1-5,4.9l-4.5-2.1 c-1,1.4-1.9,2.9-2.6,4.5l4.1,2.9c-0.9,2.1-1.5,4.4-1.8,6.8l-5,0.4C20,48.2,20,49.1,20,50s0,1.8,0.1,2.6l5,0.4 c0.3,2.4,0.9,4.7,1.8,6.8l-4.1,2.9c0.7,1.6,1.6,3.1,2.6,4.5l4.5-2.1c1.4,1.9,3.1,3.5,5,4.9l-2.1,4.6c1.4,1,2.9,1.9,4.5,2.6l2.9-4.1 c2.1,0.9,4.4,1.5,6.7,1.8l0.4,5.1C48.2,80,49.1,80,50,80s1.8,0,2.6-0.1l0.4-5.1c2.3-0.3,4.6-0.9,6.7-1.8l2.9,4.2 c1.6-0.7,3.1-1.6,4.5-2.6L65,69.9c1.9-1.4,3.5-3,4.9-4.9l4.6,2.2c1-1.4,1.9-2.9,2.6-4.5L73,59.8c0.9-2.1,1.5-4.4,1.8-6.7L79.9,52.6 z M50,65c-8.3,0-15-6.7-15-15c0-8.3,6.7-15,15-15s15,6.7,15,15C65,58.3,58.3,65,50,65z" fill="#8f7f59" transform="rotate(32.43 50 50)">
<animateTransform attributeName="transform" type="rotate" from="90 50 50" to="0 50 50" dur="1s" repeatCount="indefinite"/>
</path>
</g>
<g transform="translate(20,20) rotate(15 50 50)">
<path d="M79.9,52.6C80,51.8,80,50.9,80,50s0-1.8-0.1-2.6l-5.1-0.4c-0.3-2.4-0.9-4.6-1.8-6.7l4.2-2.9c-0.7-1.6-1.6-3.1-2.6-4.5 L70,35c-1.4-1.9-3.1-3.5-4.9-4.9l2.2-4.6c-1.4-1-2.9-1.9-4.5-2.6L59.8,27c-2.1-0.9-4.4-1.5-6.7-1.8l-0.4-5.1C51.8,20,50.9,20,50,20 s-1.8,0-2.6,0.1l-0.4,5.1c-2.4,0.3-4.6,0.9-6.7,1.8l-2.9-4.1c-1.6,0.7-3.1,1.6-4.5,2.6l2.1,4.6c-1.9,1.4-3.5,3.1-5,4.9l-4.5-2.1 c-1,1.4-1.9,2.9-2.6,4.5l4.1,2.9c-0.9,2.1-1.5,4.4-1.8,6.8l-5,0.4C20,48.2,20,49.1,20,50s0,1.8,0.1,2.6l5,0.4 c0.3,2.4,0.9,4.7,1.8,6.8l-4.1,2.9c0.7,1.6,1.6,3.1,2.6,4.5l4.5-2.1c1.4,1.9,3.1,3.5,5,4.9l-2.1,4.6c1.4,1,2.9,1.9,4.5,2.6l2.9-4.1 c2.1,0.9,4.4,1.5,6.7,1.8l0.4,5.1C48.2,80,49.1,80,50,80s1.8,0,2.6-0.1l0.4-5.1c2.3-0.3,4.6-0.9,6.7-1.8l2.9,4.2 c1.6-0.7,3.1-1.6,4.5-2.6L65,69.9c1.9-1.4,3.5-3,4.9-4.9l4.6,2.2c1-1.4,1.9-2.9,2.6-4.5L73,59.8c0.9-2.1,1.5-4.4,1.8-6.7L79.9,52.6 z M50,65c-8.3,0-15-6.7-15-15c0-8.3,6.7-15,15-15s15,6.7,15,15C65,58.3,58.3,65,50,65z" fill="#9f9fab" transform="rotate(57.57 50 50)">
<animateTransform attributeName="transform" type="rotate" from="0 50 50" to="90 50 50" dur="1s" repeatCount="indefinite"/>
</path>
</g>
</svg>
</div>
</div>
</div>

@endsection
2 changes: 1 addition & 1 deletion application/include/vues/view/gitlist.blade.php
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{{$app->load('gitlist')}}
{{$app->load('gitlist')}}
23 changes: 23 additions & 0 deletions application/objets/Alert.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

namespace MVC\Object;

class Alert
{

public static function addAlert($title,$message,$type)
{
$alert = array(
'title' => $title,
'message' => $message,
'type' => $type
);

$_SESSION['alerts'][] = $alert;
}

public static function remove(){
$_SESSION['alerts'] = array();
}

}
36 changes: 36 additions & 0 deletions application/objets/Asynchronous.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?php


namespace MVC\Object;

class Asynchronous
{

public static function declare()
{
$_SESSION['css'] = "";
$_SESSION['javascript'] = "";
}

public static function addCss($code)
{
$_SESSION['css'] .= "\n";
$_SESSION['css'] .= $code;
}

public static function addJs($code)
{
$_SESSION['javascript'] .= "\n";
$_SESSION['javascript'] .= $code;
}

public static function printCss()
{
echo $_SESSION['css'];
}

public static function printJs()
{
echo $_SESSION['javascript'];
}
}
22 changes: 22 additions & 0 deletions application/objets/History.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace MVC\Object;

class History
{

public static function setPagePrecedente(){
if(!isset($_SESSION['pagePrecedente'])){
$_SESSION['pagePrecedente'] = '';
$_SESSION['pageActuelle'] = $_SERVER['REQUEST_URI'];
}else{
$_SESSION['pagePrecedente'] = $_SESSION['pageActuelle'];
$_SESSION['pageActuelle'] = $_SERVER['REQUEST_URI'];
}
}

public static function getPagePrecedente(){
return $_SESSION['pagePrecedente'];
}

}
Loading

0 comments on commit 3f0d453

Please sign in to comment.