2026-10-18 18:42:24 -04:00
|
|
|
<?php
|
|
|
|
|
|
2026-10-18 19:27:17 -04:00
|
|
|
class SignUp extends Base {
|
2026-10-18 18:42:24 -04:00
|
|
|
|
|
|
|
|
public function createAccount() {
|
2026-10-21 06:53:45 -04:00
|
|
|
$kind=$_POST['registration_kind']??(($_GET['membership']??'')==='invited'?'invited':'new_club');
|
|
|
|
|
$params = ['REGISTRATION_KIND'=>$kind,'BTN_SUBMIT' => 'main.php', 'REGISTER_ACTION' => 'SignUp.createAccount'];
|
2026-10-18 19:27:17 -04:00
|
|
|
if (($_SERVER['REQUEST_METHOD'] ?? 'GET') === 'POST') {
|
|
|
|
|
$this->requireCsrf();
|
|
|
|
|
try {
|
|
|
|
|
$auth = new AuthService();
|
|
|
|
|
if (!$auth->allowAttempt('signup-ip', $_SERVER['REMOTE_ADDR'] ?? '', 5, 3600)) {
|
|
|
|
|
throw new InvalidArgumentException('Too many account requests. Please try again later.');
|
2026-10-18 18:42:24 -04:00
|
|
|
}
|
2026-10-21 06:53:45 -04:00
|
|
|
if(!in_array($kind,['new_club','invited'],true))throw new InvalidArgumentException('Choose a valid signup option.');
|
|
|
|
|
$input=$_POST;$input['registration_kind']=$kind;$auth->register($input);
|
2026-10-20 06:45:30 -04:00
|
|
|
try{(new EmailVerification())->request($_POST['user_email']);}
|
|
|
|
|
catch(Throwable $e){error_log('Signup verification delivery failed: '.$e->getMessage());}
|
2026-10-21 06:53:45 -04:00
|
|
|
$_SESSION['signup_success'] = $kind;
|
2026-10-18 19:27:17 -04:00
|
|
|
header('Location: main.php?Xaction=signup', true, 303);
|
|
|
|
|
exit;
|
|
|
|
|
} catch (InvalidArgumentException $e) {
|
|
|
|
|
$params['SIGNUP_ERROR'] = $e->getMessage();
|
2026-10-21 06:53:45 -04:00
|
|
|
foreach (['user_first_name', 'user_last_name', 'user_email', 'user_name', 'club_name'] as $field) {
|
2026-10-18 19:27:17 -04:00
|
|
|
$params[strtoupper($field)] = $_POST[$field] ?? '';
|
2026-10-18 18:42:24 -04:00
|
|
|
}
|
2026-10-18 19:27:17 -04:00
|
|
|
}
|
2026-10-18 18:42:24 -04:00
|
|
|
}
|
2026-10-18 19:27:17 -04:00
|
|
|
if (!empty($_SESSION['signup_success'])) {
|
2026-10-21 06:53:45 -04:00
|
|
|
$params['REGISTRATION_KIND'] = $_SESSION['signup_success'];
|
2026-10-18 19:27:17 -04:00
|
|
|
$params['SIGNUP_SUCCESSFUL'] = 'TRUE';
|
|
|
|
|
unset($_SESSION['signup_success']);
|
|
|
|
|
}
|
|
|
|
|
echo $this->applyXSL('<XML/>', $this->getXSL('createAccount'), $params);
|
|
|
|
|
exit;
|
2026-10-18 18:42:24 -04:00
|
|
|
}
|
|
|
|
|
}
|