[Fixed] Auto-input pour code de view:users/edit[Done] Managed anti-duplication username|code pour `userDefault/create` et `userDefault/edit` (interne à warehouse)

This commit is contained in:
xdrm-brackets 2017-02-20 11:59:44 +01:00
parent 203f1c9d59
commit dd2e94d979
4 changed files with 67 additions and 11 deletions

View File

@ -4,6 +4,7 @@
use \database\core\DatabaseDriver; use \database\core\DatabaseDriver;
use \manager\sessionManager; use \manager\sessionManager;
use \error\core\Error; use \error\core\Error;
use \error\core\Err;
use \database\core\Repo; use \database\core\Repo;
class userDefault{ class userDefault{
@ -25,6 +26,26 @@
public function create($params){ public function create($params){
extract($params); extract($params);
/* [1] Vérification unicitié (dans warehouse)
=========================================================*/
/* (1) Vérification username */
$byUsername_r = new Repo('user/getByUsername', [$_SESSION['WAREHOUSE']['id'], $username]);
$byUsername = $byUsername_r->answer();
/* (2) Si existe déja -> erreur */
if( $byUsername != false )
return ['error' => new Error(Err::AlreadyExists, 'username')];
/* (3) Vérification username */
$byCode_r = new Repo('user/getByCode', [$_SESSION['WAREHOUSE']['id'], $code]);
$byCode = $byCode_r->answer();
/* (4) Si existe déja -> erreur */
if( $byCode != false )
return ['error' => new Error(Err::AlreadyExists, 'code')];
/* [1] Creation de l'utilisateur /* [1] Creation de l'utilisateur
=========================================================*/ =========================================================*/
$create_user = new Repo('user/create', [ $create_user = new Repo('user/create', [
@ -39,7 +60,7 @@
// Si une erreur est retournee, on retourne une erreur // Si une erreur est retournee, on retourne une erreur
if( $id_user === false ) if( $id_user === false )
return ['error' => new Error(Err::error)]; return ['error' => new Error(Err::RepoError)];
/* [2] Gestion du retour /* [2] Gestion du retour
@ -222,7 +243,7 @@
$_SESSION['WAREHOUSE']['id'], $_SESSION['WAREHOUSE']['id'],
$username $username
]); ]);
$answer = $request->answer(); $answer = $request->answer();
// Si aucun resultat, on retourne une erreur // Si aucun resultat, on retourne une erreur
if( $answer === false ) if( $answer === false )
@ -293,7 +314,23 @@
if( !is_array($user_data) ) if( !is_array($user_data) )
return ['error' => new Error(Err::NoMatchFound)]; return ['error' => new Error(Err::NoMatchFound)];
/* [2] Vérification de l'unicité
=========================================================*/
/* (1) Vérification username */
$byUsername_r = new Repo('user/getByUsername', [$_SESSION['WAREHOUSE']['id'], $username]);
$byUsername = $byUsername_r->answer();
/* (2) Si existe déja */
if( $byUsername != false && $byUsername['id_user'] != $id_user )
return ['error' => new Error(Err::AlreadyExists, 'username')];
/* (3) Vérification username */
$byCode_r = new Repo('user/getByCode', [$_SESSION['WAREHOUSE']['id'], $code]);
$byCode = $byCode_r->answer();
/* (4) Si existe déja */
if( $byCode != false && $byCode['id_user'] != $id_user )
return ['error' => new Error(Err::AlreadyExists, 'code')];
/* [2] Normalisation + verification des donnees /* [2] Normalisation + verification des donnees
=========================================================*/ =========================================================*/

View File

@ -104,6 +104,9 @@
/* (4) Erreur inconnue */ /* (4) Erreur inconnue */
const UnknownError = 28; const UnknownError = 28;
/* (5) Entrée existante */
const AlreadyExists = 29;
} }
?> ?>

View File

@ -74,7 +74,7 @@
case Err::UncallableModule: return $this->UncallableModule(); break; case Err::UncallableModule: return $this->UncallableModule(); break;
case Err::UncallableMethod: return $this->UncallableMethod(); break; case Err::UncallableMethod: return $this->UncallableMethod(); break;
case Err::UnknownHttpMethod: return $this->UnknownHttpMethod(); break; case Err::UnknownHttpMethod: return $this->UnknownHttpMethod(); break;
case Err::ConfigError: return $this->ConfigError(); break; case Err::ConfigError: return $this->ConfigError(); break;
case Err::MissingParam: return $this->MissingParam(); break; case Err::MissingParam: return $this->MissingParam(); break;
case Err::WrongParam: return $this->WrongParam(); break; case Err::WrongParam: return $this->WrongParam(); break;
case Err::ModuleError: return $this->ModuleError(); break; case Err::ModuleError: return $this->ModuleError(); break;
@ -88,6 +88,7 @@
case Err::UnknownTemplate: return $this->UnknownTemplate(); break; case Err::UnknownTemplate: return $this->UnknownTemplate(); break;
case Err::UnknownAddress: return $this->UnknownAddress(); break; case Err::UnknownAddress: return $this->UnknownAddress(); break;
case Err::UnknownError: return $this->UnknownError(); break; case Err::UnknownError: return $this->UnknownError(); break;
case Err::AlreadyExists: return $this->AlreadyExists(); break;
default: return $this->UnknownDebugError(); break; default: return $this->UnknownDebugError(); break;
} }
@ -98,7 +99,7 @@
return 'all right'; return 'all right';
}private function ParsingFailed(){ }private function ParsingFailed(){
if( count($this->arguments) > 0 ) if( count($this->arguments) > 0 )
return $this->arguments[0].' parsing failed'; return "{$this->arguments[0]} parsing failed";
else else
return 'parsing failed'; return 'parsing failed';
}private function UnreachableResource(){ }private function UnreachableResource(){
@ -119,22 +120,22 @@
return 'wrong module\'s path'; return 'wrong module\'s path';
}private function UnknownModule(){ }private function UnknownModule(){
if( count($this->arguments) > 0 ) if( count($this->arguments) > 0 )
return 'unknown module \''.$this->arguments[0].'\''; return "unknown module '{$this->arguments[0]}'";
else else
return 'unknown module'; return 'unknown module';
}private function UnknownMethod(){ }private function UnknownMethod(){
if( count($this->arguments) > 0 ) if( count($this->arguments) > 0 )
return 'unknown method \''.$this->arguments[0].'\''; return "unknown method '{$this->arguments[0]}'";
else else
return 'unknown method'; return 'unknown method';
}private function UncallableModule(){ }private function UncallableModule(){
if( count($this->arguments) > 0 ) if( count($this->arguments) > 0 )
return 'uncallable module \''.$this->arguments[0].'\''; return "uncallable module '{$this->arguments[0]}'";
else else
return 'uncallable module'; return 'uncallable module';
}private function UncallableMethod(){ }private function UncallableMethod(){
if( count($this->arguments) > 0 ) if( count($this->arguments) > 0 )
return 'uncallable method \''.$this->arguments[0].'\''; return "uncallable method '{$this->arguments[0]}'";
else else
return 'uncallable method'; return 'uncallable method';
}private function UnknownHttpMethod(){ }private function UnknownHttpMethod(){
@ -143,15 +144,15 @@
return 'configuration error'; return 'configuration error';
}private function MissingParam(){ }private function MissingParam(){
if( count($this->arguments) > 0 ) if( count($this->arguments) > 0 )
return 'missing param \''.$this->arguments[0].'\''; return "missing param '{$this->arguments[0]}'";
else else
return 'missing param'; return 'missing param';
}private function WrongParam(){ }private function WrongParam(){
if( count($this->arguments) > 0 ) if( count($this->arguments) > 0 )
if( count($this->arguments) > 1 ) if( count($this->arguments) > 1 )
return 'wrong param \''.$this->arguments[0].'\' expected to be of type \''.$this->arguments[1].'\''; return "wrong param '{$this->arguments[0]}' expected to be of type '{$this->arguments[1]}'";
else else
return 'wrong param \''.$this->arguments[0].'\''; return "wrong param '{$this->arguments[0]}'";
else else
return 'wrong param'; return 'wrong param';
}private function ModuleError(){ }private function ModuleError(){
@ -178,6 +179,11 @@
return 'unknown error'; return 'unknown error';
}private function UnknownDebugError(){ }private function UnknownDebugError(){
return 'unknown debug error'; return 'unknown debug error';
}private function AlreadyExists(){
if( count($this->arguments) > 0 )
return "'{$this->arguments[0]}' already exists";
return 'entry already exists';
} }

View File

@ -590,6 +590,16 @@ if( section.edit.element != null ){
submit: document.querySelector(section.edit.text + '#edit_submit') submit: document.querySelector(section.edit.text + '#edit_submit')
}; };
/* (1) Gestion du code RFID */
createChecker.append( section.edit.input.code, format_code, '01-AB-CD-23');
section.edit.input.code.addEventListener('keyup', function(e){
e.target.value = e.target.value.toUpperCase();
if( !createChecker.check(e.target) )
createChecker.correct(e.target, false);
}, false);
/* (2) Gestion de l'auto-remplissage par lien /* (2) Gestion de l'auto-remplissage par lien
---------------------------------------------------------*/ ---------------------------------------------------------*/