4 changed files with 66 additions and 3 deletions
@ -0,0 +1,61 @@ |
|||
<?php |
|||
|
|||
use App\Enumerators\SessionElement; |
|||
use App\Wrappers\CAPTCHAWrapper; |
|||
use App\Wrappers\DatabaseInteractions; |
|||
use App\Wrappers\SQLQueryBuilderWrapper; |
|||
use Ramsey\Uuid\Uuid; |
|||
|
|||
require_once __DIR__ . "/../../vendor/autoload.php"; |
|||
|
|||
|
|||
$captchaResponse = $_POST['g-recaptcha-response']; |
|||
CAPTCHAWrapper::HandleCaptchaResponse($captchaResponse); |
|||
|
|||
if(!isset($_POST['Username'])) die('No username'); |
|||
if(!isset($_POST['Password1'])) die('No password'); |
|||
if(!isset($_POST['Password2'])) die('No confirm password'); |
|||
|
|||
if($_POST['Password1'] != $_POST['Password2']) die('Passwords do not match'); |
|||
|
|||
|
|||
|
|||
$sha512Hash = hash(algo: 'sha512', data: $_POST['Password1'], binary: false); |
|||
$hashedPassword = password_hash(password: $sha512Hash, algo: PASSWORD_BCRYPT); |
|||
|
|||
$db = new DatabaseInteractions(); |
|||
|
|||
$existingUser = $db->RunSelect( |
|||
queryBuilder: SQLQueryBuilderWrapper::SELECT( |
|||
table: 'Users' |
|||
) |
|||
->where(cond: 'T.Username LIKE :__username__') |
|||
->bindValue(name: '__username__', value: $_POST['Username']) |
|||
->limit(limit: 1) |
|||
); |
|||
|
|||
if (!empty($existingUser)) { |
|||
echo "Username already exists. Please choose a different username."; |
|||
die(); |
|||
} |
|||
|
|||
$userID = Uuid::uuid4()->toString(); |
|||
|
|||
$db->RunInsert( |
|||
queryBuilder: SQLQueryBuilderWrapper::INSERT( |
|||
table: 'Users', |
|||
) |
|||
->set(col: 'ID', value: ':__user_id__') |
|||
->set(col: 'Username', value: ':__username__') |
|||
->set(col: 'PasswordHash', value: ':__password_hash__') |
|||
->bindValue(name: '__user_id__', value: $userID) |
|||
->bindValue(name: '__username__', value: $_POST['Username']) |
|||
->bindValue(name: '__password_hash__', value: $hashedPassword) |
|||
); |
|||
|
|||
$_SESSION[SessionElement::IS_LOGGED_IN->value] = true; |
|||
$_SESSION[SessionElement::USER_ID->value] = $userID; |
|||
$_SESSION[SessionElement::USERNAME->value] = $_POST['Username']; |
|||
|
|||
header("Location: /profile"); |
|||
die(); |
Loading…
Reference in new issue