Changer le regex, et ranger les fonctions.php
This commit is contained in:
parent
1648e2bf46
commit
e7830a516a
1 changed files with 255 additions and 107 deletions
|
|
@ -7,63 +7,15 @@
|
||||||
require("./entities/project_entity.php");
|
require("./entities/project_entity.php");
|
||||||
|
|
||||||
class UserCtrl extends MotherCtrl {
|
class UserCtrl extends MotherCtrl {
|
||||||
|
|
||||||
public function login(){
|
/**
|
||||||
|
* Fonction d'inscription d'un utilisateur
|
||||||
$strMail = $_POST['user_mail']??"";
|
* Effectue les validations du formulaire,
|
||||||
$strPwd = $_POST['user_password']??"";
|
* vérifie l'unicité du mail et du pseudo,
|
||||||
|
* puis insère l'utilisateur en base de données
|
||||||
// Tester le formulaire
|
* @return void
|
||||||
$arrError = [];
|
*/
|
||||||
if (count($_POST) > 0) {
|
public function signup(){
|
||||||
// Vérifier le formulaire
|
|
||||||
if ($strMail == ""){
|
|
||||||
$arrError['mail'] = "Le mail est obligatoire";
|
|
||||||
}
|
|
||||||
if ($strPwd == ""){
|
|
||||||
$arrError['pwd'] = "Le mot de passe est obligatoire";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Si le formulaire est rempli correctement
|
|
||||||
if (count($arrError) == 0){
|
|
||||||
// Vérifier l'utilisateur en BDD
|
|
||||||
$objUserModel = new UserModel;
|
|
||||||
$arrResult = $objUserModel->verifUser($strMail, $strPwd);
|
|
||||||
//var_dump($arrResult);
|
|
||||||
if ($arrResult === false){ // Si la base de données ne renvoie rien
|
|
||||||
$arrError[] = "Mail ou mot de passe invalide";
|
|
||||||
}else{
|
|
||||||
// Ajoute l'utilisateur en session
|
|
||||||
$_SESSION['user'] = $arrResult;
|
|
||||||
$_SESSION['success'] = "Bienvenue, vous êtes bien connecté";
|
|
||||||
|
|
||||||
header("Location:index.php");
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$this->_arrData['arrError'] = $arrError;
|
|
||||||
$this->_display("login");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function logout(){
|
|
||||||
session_start();
|
|
||||||
/*session_destroy();
|
|
||||||
session_start();*/
|
|
||||||
|
|
||||||
// on supprime l'utilisateur en session
|
|
||||||
unset($_SESSION['user']);
|
|
||||||
|
|
||||||
$_SESSION['success'] = "Vous êtes bien déconnecté";
|
|
||||||
|
|
||||||
header("Location:index.php");
|
|
||||||
exit;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public function signin(){
|
|
||||||
|
|
||||||
// Entité pour réafficher les valeurs dans le formulaire
|
// Entité pour réafficher les valeurs dans le formulaire
|
||||||
$objUser = new User();
|
$objUser = new User();
|
||||||
|
|
@ -101,33 +53,40 @@ class UserCtrl extends MotherCtrl {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trim($objUser->getMail()) === "") {
|
if (trim($objUser->getMail()) === "") {
|
||||||
$arrError['user_mail'] = "Le mail est obligatoire";
|
$arrError['user_mail'] = "L'adresse e-mail est obligatoire";
|
||||||
} elseif (!filter_var($objUser->getMail(), FILTER_VALIDATE_EMAIL)) {
|
} elseif (!filter_var($objUser->getMail(), FILTER_VALIDATE_EMAIL)) {
|
||||||
$arrError['user_mail'] = "Le format du mail n'est pas correct";
|
$arrError['user_mail'] = "Le format de l'adresse e-mail est invalide";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trim($objUser->getPseudo()) === "") {
|
if (trim($objUser->getPseudo()) === "") {
|
||||||
$arrError['user_pseudo'] = "Le pseudo est obligatoire";
|
$arrError['user_pseudo'] = "Le pseudo est obligatoire";
|
||||||
}
|
}
|
||||||
|
|
||||||
$strRegex = "/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{16,}$/";
|
$strRegex = "/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{15,}$/";
|
||||||
if ($objUser->getPwd() == ""){
|
if ($objUser->getPwd() == ""){
|
||||||
$arrError['user_password'] = "Le mot de passe est obligatoire";
|
$arrError['user_password'] = "Le mot de passe est obligatoire";
|
||||||
}else if (!preg_match($strRegex, $objUser->getPwd())){
|
}else if (!preg_match($strRegex, $objUser->getPwd())){
|
||||||
$arrError['user_password'] = "Le mot de passe ne correspond pas aux règles";
|
$arrError['user_password'] = "Le mot de passe ne respecte pas les critères";
|
||||||
}else if($objUser->getPwd() != $strPwdConfirm){
|
}else if($objUser->getPwd() != $strPwdConfirm){
|
||||||
$arrError['pwd_confirm'] = "Le mot de passe et sa confirmation ne sont pas identiques";
|
$arrError['pwd_confirm'] = "La confirmation du mot de passe ne correspond pas";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Si pas d'erreurs => insertion
|
// Si pas d'erreurs => insertion
|
||||||
if (count($arrError) === 0) {
|
if (count($arrError) === 0) {
|
||||||
$objUserModel = new UserModel();
|
$objUserModel = new UserModel();
|
||||||
|
|
||||||
|
// Vérif mail
|
||||||
if ($objUserModel->mailExists($objUser->getMail())) {
|
if ($objUserModel->mailExists($objUser->getMail())) {
|
||||||
|
$arrError['user_mail'] = "Impossible de créer le compte avec ces informations";
|
||||||
|
}
|
||||||
|
|
||||||
$arrError['user_mail'] = "Ce mail existe déjà";
|
// Vérif pseudo
|
||||||
} else {
|
if ($objUserModel->pseudoExists($objUser->getPseudo())) {
|
||||||
|
$arrError['user_pseudo'] = "Ce pseudo existe déjà";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si aucune erreur => insert
|
||||||
|
if (count($arrError) === 0) {
|
||||||
$boolInsert = $objUserModel->insert($objUser);
|
$boolInsert = $objUserModel->insert($objUser);
|
||||||
|
|
||||||
if ($boolInsert === true) {
|
if ($boolInsert === true) {
|
||||||
|
|
@ -142,47 +101,236 @@ class UserCtrl extends MotherCtrl {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Affichage de la vue inscription
|
// Affichage de la vue inscription
|
||||||
$this->_arrData["arrError"] = $arrError;
|
$this->_arrData['objUser'] = $objUser;
|
||||||
$this->_display("inscription");
|
$this->_arrData['arrError'] = $arrError;
|
||||||
}
|
$this->_display("signup");
|
||||||
|
}
|
||||||
/**
|
|
||||||
* le controlleur affichage de la page user
|
|
||||||
*/
|
|
||||||
public function user(){
|
|
||||||
|
|
||||||
$intId = isset($_GET['id']) ? (int)$_GET['id'] : 0;
|
|
||||||
|
|
||||||
if ($intId <= 0) {
|
|
||||||
header("Location:index.php");
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
//affichage info utilisateur
|
|
||||||
$objUserModel = new UserModel;
|
|
||||||
$arrUserData = $objUserModel->findUserById($intId);
|
|
||||||
|
|
||||||
if ($arrUserData === false) {
|
|
||||||
header("Location:index.php");
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
$objUser = new User;
|
|
||||||
$objUser->hydrate($arrUserData);
|
|
||||||
|
|
||||||
//affichage projet de l'utilisateur
|
|
||||||
$objProjectModel = new ProjectModel;
|
|
||||||
$arrProjects = $objProjectModel->findAll(0,'',$intId);
|
|
||||||
|
|
||||||
$arrProjectToDisplay = array();
|
|
||||||
foreach($arrProjects as $projectData) {
|
|
||||||
$objProject = new Project();
|
|
||||||
$objProject->hydrate($projectData);
|
|
||||||
$arrProjectToDisplay[] = $objProject;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->_arrData['user'] = $objUser;
|
|
||||||
$this->_arrData['arrProjectToDisplay'] = $arrProjectToDisplay;
|
|
||||||
$this->_display("user");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction de connexion d'un utilisateur
|
||||||
|
* Vérifie les informations envoyées par le formulaire
|
||||||
|
* et crée la session si les identifiants sont valides
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function login(){
|
||||||
|
|
||||||
|
$strMail = $_POST['user_mail']??"";
|
||||||
|
$strPwd = $_POST['user_password']??"";
|
||||||
|
|
||||||
|
// Tester le formulaire
|
||||||
|
$arrError = [];
|
||||||
|
if (count($_POST) > 0) {
|
||||||
|
// Vérifier le formulaire
|
||||||
|
if ($strMail == ""){
|
||||||
|
$arrError['mail'] = "L'adresse e-mail est obligatoire";
|
||||||
|
}
|
||||||
|
if ($strPwd == ""){
|
||||||
|
$arrError['pwd'] = "Le mot de passe est obligatoire";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si le formulaire est rempli correctement
|
||||||
|
if (count($arrError) == 0){
|
||||||
|
// Vérifier l'utilisateur en BDD
|
||||||
|
$objUserModel = new UserModel;
|
||||||
|
$arrResult = $objUserModel->verifUser($strMail, $strPwd);
|
||||||
|
//var_dump($arrResult);
|
||||||
|
if ($arrResult === false){ // Si la base de données ne renvoie rien
|
||||||
|
$arrError[] = "Identifiants incorrects";
|
||||||
|
}else{
|
||||||
|
// Ajoute l'utilisateur en session
|
||||||
|
$_SESSION['user'] = $arrResult;
|
||||||
|
$_SESSION['success'] = "Bienvenue, vous êtes bien connecté";
|
||||||
|
|
||||||
|
header("Location:index.php");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->_arrData['arrError'] = $arrError;
|
||||||
|
$this->_display("login");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function logout(){
|
||||||
|
session_start();
|
||||||
|
/*session_destroy();
|
||||||
|
session_start();*/
|
||||||
|
|
||||||
|
// on supprime l'utilisateur en session
|
||||||
|
unset($_SESSION['user']);
|
||||||
|
|
||||||
|
$_SESSION['success'] = "Vous êtes bien déconnecté";
|
||||||
|
|
||||||
|
header("Location:index.php");
|
||||||
|
exit;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* le controlleur affichage de la page user
|
||||||
|
*/
|
||||||
|
public function user(){
|
||||||
|
|
||||||
|
/**$intId = isset($_GET['id']) ? (int)$_GET['id'] : 0;
|
||||||
|
|
||||||
|
if ($intId <= 0) {
|
||||||
|
header("Location: index.php");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
//affichage info utilisateur
|
||||||
|
$objUserModel = new UserModel;
|
||||||
|
$arrUserData = $objUserModel->findUserById($intId);
|
||||||
|
|
||||||
|
if ($arrUserData === false) {
|
||||||
|
header("Location: index.php");
|
||||||
|
exit;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
$strPseudo = $_GET['pseudo']??'';
|
||||||
|
|
||||||
|
$objUserModel = new UserModel;
|
||||||
|
$arrUserData = $objUserModel->findUserByPseudo($strPseudo);
|
||||||
|
|
||||||
|
if ($arrUserData === false) {
|
||||||
|
header("Location: index.php");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$objUser = new User;
|
||||||
|
$objUser->hydrate($arrUserData);
|
||||||
|
|
||||||
|
//affichage projet de l'utilisateur
|
||||||
|
$objProjectModel = new ProjectModel;
|
||||||
|
$arrProjects = $objProjectModel->findAll(0,'',$objUser->getId());
|
||||||
|
|
||||||
|
$arrProjectToDisplay = array();
|
||||||
|
foreach($arrProjects as $projectData) {
|
||||||
|
$objProject = new Project();
|
||||||
|
$objProject->hydrate($projectData);
|
||||||
|
$arrProjectToDisplay[] = $objProject;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->_arrData['user'] = $objUser;
|
||||||
|
$this->_arrData['arrProjectToDisplay'] = $arrProjectToDisplay;
|
||||||
|
$this->_display("user");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function edit(){
|
||||||
|
if(!isset($_SESSION['user'])){
|
||||||
|
header("Location: index.php");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$objUserModel = new UserModel;
|
||||||
|
$arrError = [];
|
||||||
|
$objUser = new User;
|
||||||
|
$arrUserData = $objUserModel->findUserById($_SESSION['user']['user_id']);
|
||||||
|
$objUser->hydrate($arrUserData);
|
||||||
|
if (!empty($_POST)) {
|
||||||
|
if ($objUserModel->mailExists($_POST['user_mail']) && ($_POST['user_mail'] != $objUser->getMail())) {
|
||||||
|
|
||||||
|
$arrError['user_mail'] = "Ce mail est déjà associé";
|
||||||
|
} else {
|
||||||
|
if ($objUserModel->pseudoExists($_POST['user_pseudo']) && ($_POST['user_pseudo'] != $objUser->getPseudo())){
|
||||||
|
$arrError['user_pseudo'] = "Ce pseudo est déjà utiliser";
|
||||||
|
}else{
|
||||||
|
$objUser->hydrate($_POST);
|
||||||
|
$objUser->setId($_SESSION['user']['user_id']);
|
||||||
|
|
||||||
|
// Vérification de l'image
|
||||||
|
$arrTypeAllowed = array('image/jpeg', 'image/png', 'image/webp');
|
||||||
|
$boolImageOk = true;
|
||||||
|
|
||||||
|
if ($_FILES['image']['error'] != 4) {
|
||||||
|
if (!in_array($_FILES['image']['type'], $arrTypeAllowed)) {
|
||||||
|
$arrError['image'] = "Le type de fichier n'est pas autorisé";
|
||||||
|
} else {
|
||||||
|
switch ($_FILES['image']['error']) {
|
||||||
|
case 0:
|
||||||
|
$strImageName = uniqid() . ".webp";
|
||||||
|
$strOldImg = $objUser->getImage();
|
||||||
|
$objUser->setImage($strImageName);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
$arrError['image'] = "Le fichier est trop volumineux";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$arrError['image'] = "Le fichier a été partiellement téléchargé";
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
$arrError['image'] = "Le répertoire temporaire est manquant";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$arrError['image'] = "Erreur sur l'image";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Traitement de l'image si pas d'erreur
|
||||||
|
if (count($arrError) == 0 && isset($strImageName)) {
|
||||||
|
$strDest = $_ENV['IMG_USER_PATH'] . $strImageName;
|
||||||
|
$strSource = $_FILES['image']['tmp_name'];
|
||||||
|
list($intWidth, $intHeight) = getimagesize($strSource);
|
||||||
|
|
||||||
|
$intDestWidth = 200; $intDestHeight = 200;
|
||||||
|
$fltDestRatio = $intDestWidth / $intDestHeight;
|
||||||
|
$fltSourceRatio = $intWidth / $intHeight;
|
||||||
|
|
||||||
|
if ($fltSourceRatio > $fltDestRatio) {
|
||||||
|
$intCropHeight = $intHeight;
|
||||||
|
$intCropWidth = (int)round($intHeight * $fltDestRatio);
|
||||||
|
$intCropX = (int)(($intWidth - $intCropWidth) / 2);
|
||||||
|
$intCropY = 0;
|
||||||
|
} else {
|
||||||
|
$intCropWidth = $intWidth;
|
||||||
|
$intCropHeight = (int)round($intWidth / $fltDestRatio);
|
||||||
|
$intCropX = 0;
|
||||||
|
$intCropY = (int)(($intHeight - $intCropHeight) / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
$objDest = imagecreatetruecolor($intDestWidth, $intDestHeight);
|
||||||
|
switch ($_FILES['image']['type']) {
|
||||||
|
case 'image/jpeg': $objSource = imagecreatefromjpeg($strSource); break;
|
||||||
|
case 'image/png': $objSource = imagecreatefrompng($strSource); break;
|
||||||
|
case 'image/webp': $objSource = imagecreatefromwebp($strSource); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
imagecopyresampled($objDest, $objSource, 0, 0, $intCropX, $intCropY, $intDestWidth, $intDestHeight, $intCropWidth, $intCropHeight);
|
||||||
|
$boolImageOk = imagewebp($objDest, $strDest);
|
||||||
|
imagedestroy($objDest);
|
||||||
|
imagedestroy($objSource);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$boolInsert = $objUserModel->update($objUser);
|
||||||
|
|
||||||
|
if ($boolInsert === true) {
|
||||||
|
if (isset($strOldImg) && !empty($strOldImg) && isset($strImageName)) {
|
||||||
|
$strOldFile = $_ENV['IMG_USER_PATH'] . $strOldImg;
|
||||||
|
if (file_exists($strOldFile)) unlink($strOldFile);
|
||||||
|
}
|
||||||
|
$arrNewInfo = $objUserModel->findUserByPseudo($objUser->getPseudo());
|
||||||
|
$_SESSION['user'] = $arrNewInfo;
|
||||||
|
$_SESSION['success'] = "Compte modifier avec succès";
|
||||||
|
header("Location:?ctrl=user&action=user&pseudo=".$objUser->getPseudo());
|
||||||
|
exit;
|
||||||
|
} else {
|
||||||
|
$arrError['global'] = "Erreur lors de l'update";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->_arrData["arrError"] = $arrError;
|
||||||
|
$this->_arrData['objUser'] = $objUser;
|
||||||
|
$this->_display("useredit");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue