This commit is contained in:
count-null 2025-02-15 00:21:37 -05:00
parent 9b15ac9fd3
commit 27df1a73b5
28 changed files with 1695 additions and 247 deletions

View file

@ -4,6 +4,7 @@ namespace app\controllers;
use app\models\addresses;
use app\models\users;
use app\models\user_addresses;
use app\models\magic_links;
class account
{
@ -12,8 +13,8 @@ class account
if (!isset($_SESSION['user_id'])) {
header('Location: /account/login');
}
$email = $_SESSION['user_email'];
$user = users::getByEmail($email);
$user_id = $_SESSION['user_id'];
$user = users::getById($user_id);
$default_shipping = null;
$default_billing = null;
$ship_addrs = [];
@ -60,8 +61,8 @@ class account
$bill_id = addresses::add(
$bill['name'],
$bill['company'],
$bill['street'],
$bill['boxapt'],
$bill['addressLine1'],
$bill['addressLine2'],
$bill['city'],
$bill['state'],
$bill['zip'],
@ -76,8 +77,8 @@ class account
$_SESSION['success'] = "Billing address saved!";
header('Location: /account/billing');
}
$email = $_SESSION['user_email'];
$user = users::getByEmail($email);
$user_id = $_SESSION['user_id'];
$user = users::getById($user_id);
$default_billing = null;
$bill_addrs = [];
$bill_addresses = user_addresses::getBillingByUserId($_SESSION['user_id']);
@ -115,8 +116,42 @@ class account
header('Location: /account');
}
}
public static function email()
{
$user_id = $_SESSION['user_id'] ?? null;
if (empty($user_id)){
header('Location: /account/login');
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$email = $_POST['email'] ?? null;
if (empty($email)) {
$_SESSION['error'] = "Enter your email to get a login link";
header('Location: /account');
exit;
} else {
$token = magic_links::add($email, $user_id);
users::updateReplaceEmailTokenById($user_id, $token);
header('Location: /account');
exit;
}
}
}
public static function login($defaults)
{
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$email = $_POST['email'] ?? false;
if (empty($email)) {
$_SESSION['error'] = "Enter your email to get a login link";
header('Location: /account/login');
exit;
} else {
$token = magic_links::add($email, null);
header('Location: /account/login');
exit;
}
}
if (isset($_SESSION['user_id'])) {
header('Location: /account');
}
@ -131,12 +166,14 @@ class account
]
]));
}
public static function logout()
{
session_unset();
session_destroy();
header('Location: /');
}
public static function orders($defaults)
{
if (!isset($_SESSION['user_id'])) {
@ -185,8 +222,8 @@ class account
$ship_id = addresses::add(
$ship['name'],
$ship['company'],
$ship['street'],
$ship['boxapt'],
$ship['addressLine1'],
$ship['addressLine2'],
$ship['city'],
$ship['state'],
$ship['zip'],
@ -201,8 +238,8 @@ class account
$_SESSION['success'] = "Shipping address saved!";
header('Location: /account/shipping');
}
$email = $_SESSION['user_email'];
$user = users::getByEmail($email);
$user_id = $_SESSION['user_id'];
$user = users::getById($user_id);
$addresses = user_addresses::getShippingByUserId($user['id']);
$default_shipping = null;
$ship_addrs = [];
@ -235,27 +272,30 @@ class account
{
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$email = $_POST['email'];
if (empty($email)) {
$_SESSION['error'] = 'Email is required.';
}
$existingUser = users::getByEmail($email);
if ($existingUser) {
$_SESSION['error'] = 'Email already exists. Please choose a different email or log in.';
$_SESSION['last_post'] = $_POST;
header('Location: /account/signup');
exit;
}
if (empty($email)) {
$_SESSION['error'] = 'Email is required.';
}
if (isset($_SESSION['error'])) {
$useShipping = $_POST['use_shipping'] ?? false;
$ship = addresses::validatePost("shipping");
if (!isset($ship['name'])){
$_SESSION['error'] = "Shipping address verification failed. Check your entry for errors.";
$_SESSION['last_post'] = $_POST;
header('Location: /account/signup');
}
$useShipping = $_POST['use_shipping'] ?? false;
if ($useShipping) {
$ship = addresses::validatePost("shipping");
} else {
$ship = addresses::validatePost("shipping");
if (!$useShipping) {
$bill = addresses::validatePost("billing");
}
if (empty($email)) {
$_SESSION['error'] = 'Email is required.';
if (!isset($bill['name'])){
$_SESSION['error'] = "Billing address verification failed. Check your entry for errors.";
$_SESSION['last_post'] = $_POST;
header('Location: /account/signup');
}
}
if (isset($_SESSION['error'])) {
$_SESSION['last_post'] = $_POST;
@ -264,8 +304,8 @@ class account
$ship_id = addresses::add(
$ship['name'],
$ship['company'],
$ship['street'],
$ship['boxapt'],
$ship['addressLine1'],
$ship['addressLine2'],
$ship['city'],
$ship['state'],
$ship['zip'],
@ -278,8 +318,8 @@ class account
$bill_id = addresses::add(
$bill['name'],
$bill['company'],
$bill['street'],
$bill['boxapt'],
$bill['addressLine1'],
$bill['addressLine2'],
$bill['city'],
$bill['state'],
$bill['zip'],