86 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| class AuthController extends Controller  {
 | |
|     public function signin() {
 | |
|         if($_SERVER['REQUEST_METHOD'] === 'POST') {
 | |
|             $email = $_POST['email'] ?? '';
 | |
|             $password = $_POST['password'] ?? '';
 | |
| 
 | |
|             $validator = new Validator();
 | |
|             $validator->required('email', $email);
 | |
|             $validator->email('email', $email);
 | |
|             $validator->required('password', $password);
 | |
| 
 | |
|             if (!$validator->passes()) {
 | |
|                 $this->view('auth/signup', [
 | |
|                     'error' => 'Please correct the errors below.',
 | |
|                     'validationErrors' => $validator->errors() ?: [],
 | |
|                 ]);
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             $user = new User();
 | |
|             $result = $user->login($email, $password);
 | |
| 
 | |
|             if($result === true) {
 | |
|                 $this->redirect('/dashboard');
 | |
|             } else {
 | |
|                 $this->view('auth/signin', ['error' => $result], 'noheader');
 | |
|             }
 | |
|         } else {
 | |
|             $this->view('auth/signin', ['title' => 'Log In'], 'noheader');
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function signup() {
 | |
|         if ($_SERVER['REQUEST_METHOD'] === 'POST') {
 | |
|             $username = $_POST['username'] ?? '';
 | |
|             $email = $_POST['email'] ?? '';
 | |
|             $password = $_POST['password'] ?? '';
 | |
|             $password2 = $_POST['password-2'] ?? '';
 | |
| 
 | |
|             $validator = new Validator();
 | |
|             $validator->required('username', $username);
 | |
|             $validator->email('email', $email);
 | |
|             $validator->required('password', $password);
 | |
|             $validator->minLength('password', $password, 8);
 | |
|             $validator->alphanumeric('password', $password);
 | |
| 
 | |
|             if ($password !== $password2) {
 | |
|                 $validator->errors()['password_confirmation'] = 'Passwords do not match.';
 | |
|             }
 | |
| 
 | |
|             if (!$validator->passes()) {
 | |
|                 $this->view('auth/signup', [
 | |
|                     'error' => 'Please correct the errors below.',
 | |
|                     'validationErrors' => $validator->errors() ?: [],
 | |
|                 ], 'noheader');
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             $user = new User();
 | |
|             $result = $user->register($username, $email, $password);
 | |
| 
 | |
|             if ($result === true) {
 | |
|                 $this->redirect('/auth/signin');
 | |
|             } else {
 | |
|                 $this->view('auth/signup', [
 | |
|                     'error' => $result,
 | |
|                     'validationErrors' => [],
 | |
|                 ], 'noheader');
 | |
|             }
 | |
|         } else {
 | |
|             $this->view('auth/signup', [
 | |
|                 'title' => 'Register',
 | |
|                 'validationErrors' => [],
 | |
|             ], 'noheader');
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function logout() {
 | |
|         session_unset(); 
 | |
|         session_destroy();
 | |
|         $this->redirect('/auth/signin');
 | |
|     }
 | |
| }
 |