diff --git a/README.md b/README.md deleted file mode 100644 index 1fa0367e2ecae3e87768ecd0aa321ffd31c22332..0000000000000000000000000000000000000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# CockPit - diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php new file mode 100644 index 0000000000000000000000000000000000000000..77281a6d15f81333662c99e0ef8c474cae465ef9 --- /dev/null +++ b/app/Http/Controllers/UserController.php @@ -0,0 +1,191 @@ +<?php + +namespace App\Http\Controllers; + +use App\Models\Model_Base; +use App\Models\User; +use App\Models\Liste; +use PDO; +use Illuminate\Http\Request; + +class UserController extends Controller +{ + /** + * Create a new controller instance. + * + * @return void + */ + public function __construct() + { + // + } + + public function authenticate(Request $request){ + + if ($request->has('login') && $request->has('mdp')){ + + $user = new User($request->input('login'),$request->input('mdp')); + + if($user->exists()){ + $_SESSION['user'] = $user; + return redirect('/account/welcome'); + } + $_SESSION['message'] = "Login ou mot de passe incorrect"; + + } + return redirect('/singin'); + } + + public function signout(){ + session_destroy(); + return redirect('/singin'); + } + + public function adduser(Request $request){ + + if ($request->has('login') && $request->has('mdp') && $request->has('mdpConf') && $request->has('nom') + && $request->has('prenom') && $request->has('admin')){ + + if($request->input('mdp') == $request->input('mdpConf')){ + + if(User::create($request->input('login'), $request->input('mdp'), $request->input('nom'), + $request->input('prenom'), $request->input('admin'))){ + $_SESSION['message'] = "Utilisateur creer avec succes"; + return redirect('/singin'); + } + $_SESSION['message'] = "Erreur a la creation de l'utilisateur"; + } + else{ + $_SESSION['message'] = "La confirmation du mot de passe a echoue"; + } + } + return redirect('/signup'); + } + + public function changepassword(Request $request){ + + if ($request->has('newMdp') && $request->has('confMdp')){ + + if($request->input('newMdp') == $request->input('confMdp')){ + + $user = $_SESSION['user']; + + if($user->changePassword($request->input('newMdp'))){ + $_SESSION['message'] = "Mot de passe modifie avec succes"; + return redirect('/account/welcome'); + } + $_SESSION['message'] = "Erreur a la modification du mot de passe"; + } + else{ + $_SESSION['message'] = "La confiramation du mot de passe a echoue"; + } + } + return redirect('/account/formpassword'); + } + + public function deleteuser(Request $request){ + + if(isset($_SESSION['connected'])){ + + $user = $_SESSION['user']; + + if($user->delete()){ + $_SESSION['message'] = "Utilisateur supprime avec succes"; + unset($_SESSION['user']); + return redirect('/singin'); + } + $_SESSION['message'] = "Erreur a la suppression de l'utilisateur"; + + } + return redirect('/account/welcome'); + } + + public function mylists(){ + + $user = $_SESSION['user']; + + return view('mylists', ['lists' => $user->getLists()] ); + } + + public function addlist(Request $request){ + if($request->has('name')){ + + $user = $_SESSION['user']; + + if($user->addlist($request->input('name'))){ + $_SESSION['message'] = "Liste cree"; + } + else{ + $_SESSION['message'] = "Erreur a la creation de la liste"; + } + } + return redirect('/account/mylists'); + } + + public function deletelist($id){ + + $user = $_SESSION['user']; + + if($user->deletelist($id)){ + $_SESSION['message'] = "Liste supprimee"; + } + else{ + $_SESSION['message'] = "Erreur a la suppression de la liste"; + } + return redirect('/account/mylists'); + } + + public function editlist(){ + + $list = $_SESSION['currentList']; + + return view('editlist',["list" => $list, "listItems" => $list->getContent()]); + } + + public function changeName($idList, Request $request){ + if($request->has('name')){ + $list = $_SESSION['currentList']; + + if(!$list->changeName($request->input('name'))){ + $_SESSION['message'] = "Erreur a la creation de l'element"; + } + } + + return redirect('/account/list/editlist/'.$idList); + } + + public function addItemToList($idList, Request $request){ + + if($request->has('name')){ + $list = $_SESSION['currentList']; + + if(!$list->addItem($request->input('name'))){ + $_SESSION['message'] = "Erreur a la creation de l'element"; + } + } + + return redirect('/account/list/editlist/'.$idList); + } + + public function removeItemToList($idList, $idItem){ + + $list = $_SESSION['currentList']; + + if(!$list->removeItem($idItem)){ + $_SESSION['message'] = "Erreur a la suppression de l'element"; + } + + return redirect('/account/list/editlist/'.$idList); + } + + public function changeItemState($idList, $idItem){ + + $list = $_SESSION['currentList']; + + if(!$list->changeItemState($idItem)){ + $_SESSION['message'] = "Erreur a la modification de l'element"; + } + + return redirect('/account/list/editlist/'.$idList); + } +} \ No newline at end of file diff --git a/app/Http/Middleware/AccountMiddleware.php b/app/Http/Middleware/AccountMiddleware.php new file mode 100644 index 0000000000000000000000000000000000000000..2c91ad73c0e0a96617c9df3b0592aed976bb34ad --- /dev/null +++ b/app/Http/Middleware/AccountMiddleware.php @@ -0,0 +1,26 @@ +<?php + +namespace App\Http\Middleware; + +use Closure; +use App\Models\Model_Base; +use PDO; + +class AccountMiddleware +{ + /** + * Handle an incoming request. + * + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @return mixed + */ + public function handle($request, Closure $next) + { + if (!isset($_SESSION['user'])){ + return redirect('/singin'); + } + + return $next($request); + } +} \ No newline at end of file diff --git a/app/Http/Middleware/SessionMiddleware.php b/app/Http/Middleware/SessionMiddleware.php new file mode 100644 index 0000000000000000000000000000000000000000..a63aa4492f41f5bd1fd7536bb9402217c437a192 --- /dev/null +++ b/app/Http/Middleware/SessionMiddleware.php @@ -0,0 +1,32 @@ +<?php + +namespace App\Http\Middleware; + +use Closure; +use App\Models\Model_Base; +use PDO; + +class SessionMiddleware +{ + /** + * Handle an incoming request. + * + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @return mixed + */ + public function handle($request, Closure $next) + { + session_start(); + + try { + Model_Base::set_db(new PDO(env("DB_DSN"), env("DB_USERNAME"), env("DB_PASSWORD"))); + } + catch( PDOException $e ) { + echo 'Erreur : ' . $e->getMessage(); + exit; + } + + return $next($request); + } +} diff --git a/app/Models/Model_Base.php b/app/Models/Model_Base.php index 46b632a8c01a55e561964188a3cf30f865bac6a2..83c05f1ce7d356d59273138f1e94ccca81777234 100644 --- a/app/Models/Model_Base.php +++ b/app/Models/Model_Base.php @@ -7,8 +7,8 @@ class Model_Base { protected static $_db; -public static function set_db(PDO $db) { - self::$_db = $db; -} + public static function set_db(PDO $db) { + self::$_db = $db; + } } ?> diff --git a/app/Models/User.php b/app/Models/User.php index 641ebdaaf133c82c2b28f666379a53bcc847b9fc..366ff590f5c6c74e13646187016cb76fb6425fb3 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -109,37 +109,33 @@ class User extends Model_Base public static function create($login, $mdp, $nom, $prenom, $admin) { $q = self::$_db->prepare('INSERT INTO '.USER::USER_TABLE.' SET login = :login, mdp= :mdp, nom = :nom, prenom = :prenom, admin = :admin'); - $ok = $q->bindValue(':login', $login, PDO::PARAM_STR); - $ok &= $q->bindValue(':mdp', password_hash($mdp,PASSWORD_DEFAULT), PDO::PARAM_STR); - $ok = $q->bindValue(':nom', $nom, PDO::PARAM_STR); - $ok = $q->bindValue(':prenom', $prenom, PDO::PARAM_STR); - $ok = $q->bindValue(':admin', $admin, PDO::PARAM_BOOL); - $ok &= $q->execute(); + $q->bindValue(':login', $login, PDO::PARAM_STR); + $q->bindValue(':mdp', password_hash($mdp,PASSWORD_DEFAULT), PDO::PARAM_STR); + $q->bindValue(':nom', $nom, PDO::PARAM_STR); + $q->bindValue(':prenom', $prenom, PDO::PARAM_STR); + $q->bindValue(':admin', $admin, PDO::PARAM_BOOL); - if ( !$ok ) - throw new \Exception("Error : user creation in DB failed."); + return $q->execute(); } public function changePassword( string $newpassword ) { $q = self::$_db->prepare('UPDATE '.USER::USER_TABLE.' SET mdp = :mdp WHERE login = :login'); - $ok = $q->bindValue(':login', $this->_login, PDO::PARAM_STR); - $ok &= $q->bindValue(':mdp', password_hash($newpassword,PASSWORD_DEFAULT), PDO::PARAM_STR); - $ok &= $q->execute(); - - if ( !$ok ) - throw new \Exception("Error : user updating in DB failed."); - else + $q->bindValue(':login', $this->_login, PDO::PARAM_STR); + $q->bindValue(':mdp', password_hash($newpassword,PASSWORD_DEFAULT), PDO::PARAM_STR); + + if ( $q->execute() ){ $this->_mdp = $newpassword; + return true; + } + + return false; } public function delete() { $q = self::$_db->prepare('DELETE FROM '.USER::USER_TABLE.' WHERE login = :login'); - $ok = $q->bindValue(':login', $this->_login, PDO::PARAM_STR); - $ok &= $q->execute(); - - if ( !$ok ) - throw new \Exception("Error : user deletion from DB failed."); + $q->bindValue(':login', $this->_login, PDO::PARAM_STR); + return $q->execute(); } } diff --git a/bootstrap/app.php b/bootstrap/app.php index 0b949d0bca280ba422d5589fba8e9ada044dceba..bcc4a4c2abe06d5f52a0e84af202c4ac42f3ee4c 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -59,13 +59,13 @@ $app->singleton( | */ -// $app->middleware([ -// App\Http\Middleware\ExampleMiddleware::class -// ]); +$app->middleware([ + App\Http\Middleware\SessionMiddleware::class +]); -// $app->routeMiddleware([ -// 'auth' => App\Http\Middleware\Authenticate::class, -// ]); +$app->routeMiddleware([ + 'account' => App\Http\Middleware\AccountMiddleware::class, +]); /* |-------------------------------------------------------------------------- diff --git a/readme.md b/readme.md deleted file mode 100644 index 3584cb7a60751296d0e87819e02624fb6d8b6bf5..0000000000000000000000000000000000000000 --- a/readme.md +++ /dev/null @@ -1,21 +0,0 @@ -# Lumen PHP Framework - -[](https://travis-ci.org/laravel/lumen-framework) -[](https://packagist.org/packages/laravel/lumen-framework) -[](https://packagist.org/packages/laravel/lumen-framework) -[](https://packagist.org/packages/laravel/lumen-framework) -[](https://packagist.org/packages/laravel/lumen-framework) - -Laravel Lumen is a stunningly fast PHP micro-framework for building web applications with expressive, elegant syntax. We believe development must be an enjoyable, creative experience to be truly fulfilling. Lumen attempts to take the pain out of development by easing common tasks used in the majority of web projects, such as routing, database abstraction, queueing, and caching. - -## Official Documentation - -Documentation for the framework can be found on the [Lumen website](https://lumen.laravel.com/docs). - -## Security Vulnerabilities - -If you discover a security vulnerability within Lumen, please send an e-mail to Taylor Otwell at taylor@laravel.com. All security vulnerabilities will be promptly addressed. - -## License - -The Lumen framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).