diff --git a/src/App.php b/src/App.php index 8a8f04470e814d07f1c8fc85e306da03618e6588..0d56323af7c9afec1192811c372170b9f6a28ecd 100644 --- a/src/App.php +++ b/src/App.php @@ -6,6 +6,7 @@ use app\Router; use app\base\BaseController; use app\controllers\LoginController; use app\controllers\MainController; +use app\controllers\RegisterController; use app\repositories\UserRepository; use app\services\UserService; @@ -26,5 +27,6 @@ class App $this->router->addRoute('/', MainController::class); $this->router->addRoute('/login', LoginController::class); $this->router->addRoute('/logout', LoginController::class); + $this->router->addRoute('/register', RegisterController::class); } } diff --git a/src/controllers/LoginController.php b/src/controllers/LoginController.php index e70d9f941655646291f5c2902852c5b24df7c19f..7ca40f431f4b0fd314bf28b6978fda4127ff7e43 100644 --- a/src/controllers/LoginController.php +++ b/src/controllers/LoginController.php @@ -27,7 +27,7 @@ class LoginController extends BaseController } } else if ($uri == "/logout") { $this->service->logout(); - parent::redirect("/login"); + parent::redirect("/"); } } protected function post($urlParams) diff --git a/src/controllers/RegisterController.php b/src/controllers/RegisterController.php new file mode 100644 index 0000000000000000000000000000000000000000..57ee1f8680506f52561a1d11d42704ed6d34f708 --- /dev/null +++ b/src/controllers/RegisterController.php @@ -0,0 +1,34 @@ +<?php + +namespace app\controllers; + +use app\base\BaseController; +use app\Request; +use app\services\UserService; +use Exception; + +class RegisterController extends BaseController +{ + public function __construct() + { + parent::__construct(UserService::getInstance()); + } + + protected function get($urlParams) + { + if (isset($_SESSION['user_id'])) { + parent::redirect("/"); + } else { + parent::render($urlParams, "register", "layouts/base"); + } + } + protected function post($urlParams) + { + $username = $_POST['username']; + $email = $_POST['email']; + $password = $_POST['password']; + $confirm_password = $_POST['confirm-password']; + $response = $this->service->register($username, $email, $password, $confirm_password); + parent::redirect("/login"); + } +} diff --git a/src/services/UserService.php b/src/services/UserService.php index 237182f009ad4869970782b390a395a18c6f5439..7da39c4977ceb8d51063a2908e341752395a2180 100644 --- a/src/services/UserService.php +++ b/src/services/UserService.php @@ -46,8 +46,11 @@ class UserService extends BaseService throw new BadRequestException("Password does not match"); } - if ($this->isUsernameExist($username) and $this->isEmailExist($email)) { + if (!$this->isUsernameExist($username) and !$this->isEmailExist($email)) { $user = new UserModel(); + if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { + throw new BadRequestException("Email is not valid!"); + } $user->set('email', $email)->set('username', $username)->set('password', password_hash($password, PASSWORD_DEFAULT))->set('role', 'User'); $id = $this->repository->insert($user, array( @@ -94,6 +97,7 @@ class UserService extends BaseService $_SESSION["user_id"] = $user->get('user_id'); $_SESSION["role"] = $user->get('role'); + $_SESSION["username"] = $user->get('username'); return $user; } diff --git a/views/layouts/base.php b/views/layouts/base.php index 7f136bfa3f171707b2fb7e961895910c59629b58..5b66d8ea89bcd2c67a91b08926c4e5432dcd3222 100644 --- a/views/layouts/base.php +++ b/views/layouts/base.php @@ -27,14 +27,13 @@ <?php if (!isset($_SESSION['user_id'])) { echo "<li><a href='/login'>SIGN IN</a></li>"; + echo "<li><a href='/register'>CREATE ACCOUNT</a></li>"; } else { - $user_id = $_SESSION['user_id']; - echo "<li><a href='/'>$user_id</a></li>"; + $username = $_SESSION['username']; + echo "<li><a href='/'>$username</a></li>"; echo "<li><a href='/logout'>LOG OUT</a></li>"; } - ?> - <li><a href='/'>CREATE ACCOUNT</a></li> <li><a href='/'>FILMS</a></li> <li><a href='/'>LISTS</a></li> <li><a href='/'>MEMBERS</a></li> diff --git a/views/register.php b/views/register.php new file mode 100644 index 0000000000000000000000000000000000000000..7fd86fc731aef32cdab576ff811670776ecd33a5 --- /dev/null +++ b/views/register.php @@ -0,0 +1,28 @@ +<div class="register-container"> + <h2>Register</h2> + <form class="register-form" method="post"> + <div class="form-group"> + <label for="username">Username</label> + <br> + <input type="text" id="username" name="username" required> + </div> + <div class="form-group"> + <label for="email">Email</label> + <br> + <input type="text" id="email" name="email" required> + </div> + <div class="form-group"> + <label for="password">Password</label> + <br> + <input type="password" id="password" name="password" required> + </div> + <div class="form-group"> + <label for="confirm-password">Confirm Password</label> + <br> + <input type="password" id="confirm-password" name="confirm-password" required> + </div> + <div class="form-group"> + <button type="submit">Register</button> + </div> + </form> +</div> \ No newline at end of file