115 lines
2.7 KiB
PHP
115 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace api\module;
|
|
|
|
|
|
use \error\core\Error;
|
|
use \error\core\Err;
|
|
use \database\core\Repo;
|
|
use \api\core\AuthSystemDefault;
|
|
|
|
|
|
class user{
|
|
|
|
public function __construct(){}
|
|
|
|
public function __destruct(){}
|
|
|
|
|
|
public function POST_login($argv){
|
|
extract($argv);
|
|
|
|
|
|
/* (1) Logout by default
|
|
---------------------------------------------------------*/
|
|
$_SESSION['TOKEN'] = [];
|
|
|
|
|
|
/* (2) Search for @id_user from username
|
|
---------------------------------------------------------*/
|
|
/* (1) Fetch by username */
|
|
$fetched_user = Repo::request('user', 'getByUsername', $username);
|
|
|
|
/* (2) If not found -> error */
|
|
if( !is_array($fetched_user) || !isset($fetched_user['id_user']) || !is_numeric($fetched_user['id_user']) )
|
|
return ['connected' => false];
|
|
|
|
/* (3) Extract @id_user */
|
|
$id_user = intval( $fetched_user['id_user'] );
|
|
|
|
|
|
/* (3) Check password for user
|
|
---------------------------------------------------------*/
|
|
/* (1) Check password */
|
|
$valid_pass = Repo::request('user', 'checkPassword', $id_user, $password);
|
|
|
|
/* (2) If wrong password -> error */
|
|
if( !$valid_pass )
|
|
return ['connected' => false];
|
|
|
|
|
|
/* (4) Update session to be connected
|
|
---------------------------------------------------------*/
|
|
/* (1) Update session */
|
|
$_SESSION['TOKEN'] = 'u'.$fetched_user['token'];
|
|
$_SESSION['WS'] = true; // to tell websocket we are connected
|
|
new AuthSystemDefault;
|
|
|
|
/* (2) Return status */
|
|
return ['connected' => true];
|
|
}
|
|
|
|
|
|
|
|
|
|
public function POST_signup($argv){
|
|
extract($argv);
|
|
|
|
|
|
/* (1) Logout by default
|
|
---------------------------------------------------------*/
|
|
$_SESSION['TOKEN'] = [];
|
|
|
|
|
|
/* (2) Check if @username is unique
|
|
---------------------------------------------------------*/
|
|
/* (1) Fetch by username */
|
|
$fetched_user = Repo::request('user', 'getByUsername', $username);
|
|
|
|
/* (2) If found -> error */
|
|
if( $fetched_user !== false )
|
|
return ['error' => new Error(Err::AlreadyExists)];
|
|
|
|
|
|
/* (3) Check if @mail is unique
|
|
---------------------------------------------------------*/
|
|
/* (1) Fetch by mail */
|
|
$fetched_user = Repo::request('user', 'getByMail', $mail);
|
|
|
|
/* (2) If found -> error */
|
|
if( $fetched_user !== false )
|
|
return ['error' => new Error(Err::AlreadyExists)];
|
|
|
|
|
|
/* (4) Create user
|
|
---------------------------------------------------------*/
|
|
/* (1) Create repo request */
|
|
$id_created = Repo::request('user', 'create', $username, $mail, $password);
|
|
|
|
/* (2) If error -> dispatch */
|
|
if( $id_created === false )
|
|
return [ 'error' => new Error(Err::RepoError) ];
|
|
|
|
/* (3) Return status */
|
|
return [ 'registered' => $id_created ];
|
|
|
|
}
|
|
|
|
|
|
|
|
public function DELETE_logout(){
|
|
$_SESSION = [];
|
|
}
|
|
|
|
}
|