Découpage du traitement en ercore plus de classes
This commit is contained in:
+212
-1
@@ -1 +1,212 @@
|
||||
<?phpclass Membre{ const DEFAULT_BANNER = "pictures/bande.png"; protected $id; protected $password; protected $pseudo; protected $adminLevel; protected $dateCreation; protected $requiredBanner; protected $personnalMessage; protected $connected; public function __construct($id = NULL,$pass = NULL){ $this->id = $id ?? $_SESSION['session_id']; $this->password = $pass ?? $_SESSION['session_mdp']; $connected = FALSE; } public function connect(){ $req = $GLOBALS ['bdd']->prepare ( 'SELECT * FROM users WHERE ID=?' ); $req->execute (array($this->id)); if ($rep = $req->fetch ()){ $connected = password_verify ( $this->pass, $rep ['mdp'] ); $this->adminLevel = $connected?$result ['administration']:-1; $this->pseudo = $connected?$result['pseudo']:NULL; if($connected)decodeData($rep['data']); return $this->connected = $connected; }else{ $req->closeCursor (); return $this->connected = FALSE; } } public function hasPersonnalMessage(){ return isset($this->personnalMessage); } public function showPersonnalMessage(){ $msg = $this->personnalMessage; $this->personnalMessage = NULL; return $msg; } private function decodeData($data) { $jsonData = json_decode($data); //Set the data's required_banner if it is defined , otherwise sets the DEFAULT_BANNER $this->requiredBanner = $jsonData['requiredBanner'] ?? self::DEFAULT_BANNER; $this->personnalMessage = $jsonData['personnalMessage'] ?? NULL; } private function encodeData(){ $jsonArray = array(); //Set requiredBanner only if it is different from DEFAULT_BANNER $jsonArray['requiredBanner'] = $this->requiredBanner !== self::DEFAULT_BANNER ? $this->requiredBanner : NULL; $jsonArray['personnalMessage'] = $this->personnalMessage ?? NULL; return json_encode($jsonArray); } public function getAdminLevel(){ return $this->adminLevel; } public function getBanner() { return $this->requiredBanner; } public function isConnected(){ return $connected; } public static function tryToConnect($pseudo = NULL,$mdp = NULL){ $pseudo = $pseudo ?? $_POST ['pseudo']; $mdp = $mdp ?? $_POST ['mdp']; $req = $GLOBALS ['bdd']->prepare ( 'SELECT * FROM users WHERE pseudo=?' ); $req->execute ( array ( $pseudo ) ); $reponce = $req->fetch (); if ($reponce != NULL) { if (password_verify ( $mdp, $reponce ['mdp'] )) { $req->closeCursor (); return $reponce ['ID']; } else { $req->closeCursor (); return 'errormdp'; } } else { $req->closeCursor (); return 'errorpseudo'; } } public static function registerPerson($pseudo, $mdp) { $req = $GLOBALS ['bdd']->prepare ( "SELECT * FROM users WHERE pseudo=?" ); $req->execute (array($_POST ['pseudo'])); if ($req->fetch ()) return 'usedPseudo'; $req = $GLOBALS ['bdd']->prepare ( 'INSERT INTO users(pseudo,mdp,date_creation) VALUES (?,?,NOW())' ); $req->execute(array($_POST ['pseudo'],password_hash ( $_POST ['mdp'], PASSWORD_DEFAULT))); return 'ok'; }}
|
||||
<?php
|
||||
class Membre {
|
||||
const DEFAULT_BANNER = "pictures/bande.png";
|
||||
|
||||
protected $ID;
|
||||
protected $pseudo;
|
||||
protected $hashedPassword;
|
||||
protected $adminLevel;
|
||||
protected $dateCreation;
|
||||
protected $requiredBanner;
|
||||
protected $personnalMessage;
|
||||
|
||||
protected $connected;
|
||||
protected $valid;
|
||||
|
||||
public function __construct($ID) {
|
||||
$this->ID = $ID;
|
||||
$this->connected = FALSE;
|
||||
$req = $GLOBALS['bdd']->prepare('SELECT * FROM membres WHERE ID=?');
|
||||
$req->execute(array($ID));
|
||||
if($rep = $req->fetch()){
|
||||
$this->valid = TRUE;
|
||||
$this->pseudo = $rep['pseudo'];
|
||||
$this->adminLevel = $rep['adminLevel'];
|
||||
$this->dateCreation = $rep['dateCreation'];
|
||||
$this->hashedPassword = $rep['hashedPassword'];
|
||||
$this->decodeData($rep['data']);
|
||||
}else{
|
||||
$this->valid = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
public function connect($password) {
|
||||
$this->connected = password_verify ( $this->pass, $rep ['mdp'] );
|
||||
|
||||
return $this->connected;
|
||||
|
||||
}
|
||||
|
||||
public function __toString(){
|
||||
$out = 'Membre\n';
|
||||
$out .= '\tID:' . $this->ID . '\n';
|
||||
$out .= '\tPseudo:' . $this->pseudo . '\n';
|
||||
$out .= '\tAdmin level:' . $this->adminLevel . '\n';
|
||||
$out .= '\tDate of creation:' . $this->dateCreation . '\n';
|
||||
$out .= '\tRequired banner:' . $this->requiredBanner . '\n';
|
||||
$out .= '\tPersonnal message:' . $this->personnalMessage . '\n';
|
||||
return out;
|
||||
}
|
||||
|
||||
public function isConnected(){
|
||||
return $this->connected;
|
||||
}
|
||||
|
||||
public function exists(){
|
||||
return $this->valid;
|
||||
}
|
||||
|
||||
private function decodeData($data) {
|
||||
$jsonData = json_decode ( $data );
|
||||
// Set the data's required_banner if it is defined , otherwise sets the DEFAULT_BANNER
|
||||
$this->requiredBanner = $jsonData ['requiredBanner'] ?? self::DEFAULT_BANNER;
|
||||
$this->personnalMessage = $jsonData ['personnalMessage'] ?? NULL;
|
||||
}
|
||||
|
||||
|
||||
//Getters
|
||||
public function getID(){
|
||||
return $this->ID;
|
||||
}
|
||||
|
||||
public function getPseudo(){
|
||||
return $this->pseudo;
|
||||
}
|
||||
|
||||
public function getAdminLevel() {
|
||||
return $this->adminLevel;
|
||||
}
|
||||
|
||||
public function getDateCreation(){
|
||||
return $this->dateCreation;
|
||||
}
|
||||
|
||||
public function getRequiredBanner() {
|
||||
return $this->requiredBanner;
|
||||
}
|
||||
|
||||
public function getPersonnalMessage(){
|
||||
return $this->personnalMessage;
|
||||
}
|
||||
|
||||
|
||||
//Useful getters
|
||||
public function isAdminLevelLowerThan($max){
|
||||
return $this->adminLevel<$max;
|
||||
}
|
||||
|
||||
public function isAdminLevelGreaterThan($min){
|
||||
return $this->adminLevel>$max;
|
||||
}
|
||||
|
||||
public function isAdminLevelLowerOrEqualThan($max){
|
||||
return $this->adminLevel<$max;
|
||||
}
|
||||
|
||||
public function isAdminLevelGreaterOrEqualThan($min){
|
||||
return $this->adminLevel>$max;
|
||||
}
|
||||
|
||||
public function hasPersonnalMessage() {
|
||||
return isset ( $this->personnalMessage );
|
||||
}
|
||||
|
||||
public function showPersonnalMessage() {
|
||||
$msg = $this->personnalMessage;
|
||||
$this->setPersonnalMessage = NULL;
|
||||
return $msg;
|
||||
}
|
||||
|
||||
//Setters
|
||||
public function changePassword($newPassword){
|
||||
if(strlen($newPassword)>255)
|
||||
return Membre::PASSWORD_TOO_LONG;
|
||||
$req = $GLOBALS['bdd']->prepare('UPDATE membres SET mdp=? WHERE ID=?');
|
||||
$req->execute(array(password_hash ( $newPassword, PASSWORD_DEFAULT ),$this->ID));
|
||||
return Membre::PASSWORD_CHANGED;
|
||||
}
|
||||
|
||||
|
||||
//Membre getters
|
||||
private static function memberGetterOutput($req){
|
||||
$out = array();
|
||||
while($rep = $req->fetch())
|
||||
$out[] = new Membre($rep['ID']);
|
||||
switch(count($out)){
|
||||
case 0:
|
||||
return NULL;
|
||||
case 1:
|
||||
return $out[0];
|
||||
default:
|
||||
return $out;
|
||||
}
|
||||
}
|
||||
|
||||
public static function getFromPseudo($pseudo){
|
||||
$req = $GLOBALS['bdd']->prepare('SELECT * FROM membres WHERE pseudo=?');
|
||||
$req->execute(array($pseudo));
|
||||
return membreGetterOutput($req);
|
||||
}
|
||||
|
||||
public static function getFromAdminLevel($level){
|
||||
$req = $GLOBALS['bdd']->prepare('SELECT * FROM membres WHERE adminLevel=?');
|
||||
$req->execute(array($level));
|
||||
return membreGetterOutput($req);
|
||||
}
|
||||
|
||||
public static function getFromDateCreation($date){
|
||||
$req = $GLOBALS['bdd']->prepare('SELECT * FROM membres WHERE dateCreation=?');
|
||||
$req->execute(array($date));
|
||||
return membreGetterOutput($req);
|
||||
}
|
||||
|
||||
public static function getCreatedLaterThan($date){
|
||||
$req = $GLOBALS['bdd']->prepare('SELECT * FROM membres WHERE dateCreation>?');
|
||||
$req->execute(array($date));
|
||||
return membreGetterOutput($req);
|
||||
}
|
||||
|
||||
public static function getCreatedEarlierThan($date){
|
||||
$req = $GLOBALS['bdd']->prepare('SELECT * FROM membres WHERE dateCreation<?');
|
||||
$req->execute(array($date));
|
||||
return membreGetterOutput($req);
|
||||
}
|
||||
|
||||
public static function getAdminGreaterThan($min){
|
||||
$req = $GLOBALS['bdd']->prepare('SELECT * FROM membres WHERE adminLevel>?');
|
||||
$req->execute(array($min));
|
||||
return membreGetterOutput($req);
|
||||
}
|
||||
|
||||
public static function getAdminLowerThan($max){
|
||||
$req = $GLOBALS['bdd']->prepare('SELECT * FROM membres WHERE adminLevel<?');
|
||||
$req->execute(array($max));
|
||||
return membreGetterOutput($req);
|
||||
}
|
||||
|
||||
|
||||
//Membre creator
|
||||
public static function registerPerson($pseudo, $mdp) {
|
||||
if (Membre::getFromPseudo($pseudo))
|
||||
return Membre::USED_USERNAME;
|
||||
$req = $GLOBALS ['bdd']->prepare ('INSERT INTO membres(pseudo,mdp,date_creation) VALUES (?,?,NOW())');
|
||||
$req->execute (array($pseudo,password_hash( $mdp, PASSWORD_DEFAULT)));
|
||||
return Membre::USERNAME_CHANGED;
|
||||
}
|
||||
|
||||
|
||||
//Outputs texts
|
||||
|
||||
//changePassword
|
||||
const PASSWORD_TOO_LONG = 'Le mot de passe est trop long ! (Max : 255 caractères)';
|
||||
const PASSWORD_CHANGED = 'Le mot de passe a bien été changé';
|
||||
|
||||
//registerPerson
|
||||
const USED_USERNAME = 'Le pseudonyme est déjà utilisé';
|
||||
const PERSON_REGISTERED = 'Le membre a bien été inscrit !';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user