69 lines
2.1 KiB
PHP
69 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers;
|
|
|
|
use App\Models\RememberTokenModel;
|
|
|
|
/**
|
|
* Logowanie jednego uzytkownika wprost z .env (user_email + user_password).
|
|
* ponytail: jawne haslo z .env, narzedzie jednoosobowe. Podniesc do password_hash,
|
|
* jesli kiedys pojawi sie wielu uzytkownikow / tabela users.
|
|
*/
|
|
class Auth extends BaseController
|
|
{
|
|
public function login()
|
|
{
|
|
if (session()->get('logged_in')) {
|
|
return redirect()->to('/dashboard');
|
|
}
|
|
|
|
if (strtolower($this->request->getMethod()) === 'post') {
|
|
$email = trim((string) $this->request->getPost('email'));
|
|
$pass = (string) $this->request->getPost('password');
|
|
|
|
$okEmail = (string) env('user_email');
|
|
$okPass = (string) env('user_password');
|
|
|
|
if ($okEmail !== '' && hash_equals($okEmail, $email) && hash_equals($okPass, $pass)) {
|
|
session()->set([
|
|
'logged_in' => true,
|
|
'user_email' => $email,
|
|
]);
|
|
|
|
$response = redirect()->to('/dashboard');
|
|
if ($this->request->getPost('remember') === '1') {
|
|
$response->setCookie(
|
|
'remember_token',
|
|
(new RememberTokenModel())->issueToken(),
|
|
RememberTokenModel::LIFETIME_SECONDS,
|
|
'',
|
|
'/',
|
|
'',
|
|
ENVIRONMENT === 'production',
|
|
true,
|
|
'Lax'
|
|
);
|
|
}
|
|
|
|
return $response;
|
|
}
|
|
|
|
return redirect()->back()->with('error', 'Nieprawidłowy email lub hasło.');
|
|
}
|
|
|
|
return view('auth/login');
|
|
}
|
|
|
|
public function logout()
|
|
{
|
|
$token = (string) $this->request->getCookie('remember_token');
|
|
if ($token !== '') {
|
|
(new RememberTokenModel())->deleteToken($token);
|
|
}
|
|
|
|
session()->destroy();
|
|
|
|
return redirect()->to('/login')->deleteCookie('remember_token', '', '/');
|
|
}
|
|
}
|