Skip to content

Commit b4cc48b

Browse files
committed
Add Session and Cookie Object
1 parent 7ecc768 commit b4cc48b

File tree

18 files changed

+253
-53
lines changed

18 files changed

+253
-53
lines changed

app.test/app/Controllers/Auth/Login.php

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,41 +6,61 @@
66
use App\Helpers\Validator;
77
use App\Interfaces\ControllerInterface;
88
use App\Models\Users;
9+
use App\Helpers\Session;
10+
use App\Helpers\Cookie;
911

1012
class Login extends Controller implements ControllerInterface
1113
{
1214
public function get()
1315
{
14-
if (1 === session()->get('auth.loggedin')) {
15-
$username = session()->get('user.username');
16+
if (1 === Session::get('loggedin')) {
17+
$username = Session::get('username');
1618
header("Location: /users/{$username}");
1719
exit;
1820
}
1921

22+
if (cookie()->has(['username', 'remember_token'])) {
23+
$username = Cookie::get('username');
24+
$remember_token = Cookie::get('remember_token');
25+
$user = (new Users())->findUserByUsername($username);
26+
27+
if (hash_equals($remember_token, $user['remember_token'])) {
28+
Session::set('loggedin', 1);
29+
Session::set('userid', $user['id']);
30+
Session::set('username', $user['username']);
31+
Session::set('is_admin', $user['is_admin']);
32+
33+
header("Location: /users/{$user['username']}");
34+
exit;
35+
}
36+
}
37+
2038
echo $this->view('pages.auth.login');
2139
}
2240

2341
public function post()
2442
{
2543
$data = $this->data;
2644

27-
$users = new Users();
2845
$newer = Validator::safe($_POST['user']);
29-
$older = $user = $users->findUserByUsername($newer['username']);
46+
$older = $user = (new Users())->findUserByUsername($newer['username']);
3047

3148
if ($user && password_verify($newer['password'], $older['password'])) {
32-
if ($user['deleted_at']) {
33-
// $data['status'] = 'fail';
34-
// $data['errors'][] = ['message' => 'User account has been deleted.'];
35-
} else {
36-
$_SESSION['auth']['loggedin'] = 1;
37-
$_SESSION['user']['id'] = $user['id'];
38-
$_SESSION['user']['username'] = $user['username'];
39-
$_SESSION['user']['is_admin'] = $user['is_admin'];
49+
Session::set('loggedin', 1);
50+
Session::set('userid', $user['id']);
51+
Session::set('username', $user['username']);
52+
Session::set('is_admin', $user['is_admin']);
4053

41-
header("Location: /users/{$user['username']}");
42-
exit;
54+
if (dot($newer)->get('remember_me') === 'on' && !cookie()->has(['username', 'remember_token'])) {
55+
Cookie::set('username', $user['username'], '+30 days');
56+
Cookie::set('remember_token', $user['remember_token'], '+30 days');
57+
} else {
58+
Cookie::del('username');
59+
Cookie::del('remember_token');
4360
}
61+
62+
header("Location: /users/{$user['username']}");
63+
exit;
4464
}
4565

4666
$data['status'] = 'fail';
@@ -64,4 +84,4 @@ public function delete()
6484
public function options()
6585
{
6686
}
67-
}
87+
}

app.test/app/Controllers/Auth/Logout.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44

55
use App\Controllers\Controller;
66
use App\Interfaces\ControllerInterface;
7+
use App\Helpers\Cookie;
78

89
class Logout extends Controller implements ControllerInterface
910
{
1011
public function get()
1112
{
1213
session_destroy();
13-
14+
Cookie::del('username');
15+
Cookie::del('remember_token');
1416
echo $this->view('pages.auth.logout');
1517
}
1618

@@ -33,4 +35,4 @@ public function delete()
3335
public function options()
3436
{
3537
}
36-
}
38+
}

app.test/app/Controllers/Auth/Register.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use App\Interfaces\ControllerInterface;
88
use App\Models\Users;
99
use Database\Factories\UserFactory;
10+
use App\Helpers\Session;
1011

1112
class Register extends Controller implements ControllerInterface
1213
{
@@ -42,8 +43,8 @@ public function post()
4243

4344
session_regenerate_id();
4445

45-
$_SESSION['user']['id'] = $user['id'];
46-
$_SESSION['user']['welcomed'] = $user['welcomed'];
46+
Session::set('userid', $user['id']);
47+
Session::set('welcomed', $user['welcomed']);
4748

4849
header('Location: /welcome');
4950
exit;
@@ -67,4 +68,4 @@ public function delete()
6768
public function options()
6869
{
6970
}
70-
}
71+
}

app.test/app/Controllers/Auth/Welcome.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@
55
use App\Controllers\Controller;
66
use App\Interfaces\ControllerInterface;
77
use App\Models\Users;
8+
use App\Helpers\Session;
89

910
class Welcome extends Controller implements ControllerInterface
1011
{
1112
public function get()
1213
{
13-
$id = session()->get('user.id');
14+
$id = Session::get('userid');
1415
$users = new Users();
1516
$users->updateWelcomedById(1, $id);
1617

@@ -38,4 +39,4 @@ public function delete()
3839
public function options()
3940
{
4041
}
41-
}
42+
}

app.test/app/Controllers/Users/Account.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,21 @@
66
use App\Helpers\Validator;
77
use App\Interfaces\ControllerInterface;
88
use App\Models\Users;
9+
use App\Helpers\Session;
910

1011
class Account extends Controller implements ControllerInterface
1112
{
1213
public function get()
1314
{
14-
$id = session()->get('user.id');
15+
$id = Session::get('userid');
1516
$user = (new Users())->findUserById($id);
1617

1718
echo $this->view('pages.users.account', compact('user'));
1819
}
1920

2021
public function post()
2122
{
22-
$id = session()->get('user.id');
23+
$id = Session::get('userid');
2324
$data['account'] = $this->data;
2425

2526
$users = new Users();
@@ -58,4 +59,4 @@ public function delete()
5859
public function options()
5960
{
6061
}
61-
}
62+
}

app.test/app/Controllers/Users/Overview.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@
55
use App\Controllers\Controller;
66
use App\Interfaces\ControllerInterface;
77
use App\Models\Users;
8+
use App\Helpers\Session;
89

910
class Overview extends Controller implements ControllerInterface
1011
{
1112
public function get()
1213
{
13-
$id = session()->get('user.id');
14+
$id = Session::get('userid');
1415
$user = (new Users())->findUserById($id);
1516

1617
echo $this->view('pages.users.overview', compact('user'));
@@ -35,4 +36,4 @@ public function delete()
3536
public function options()
3637
{
3738
}
38-
}
39+
}

app.test/app/Controllers/Users/Profile.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,21 @@
66
use App\Helpers\Validator;
77
use App\Interfaces\ControllerInterface;
88
use App\Models\Users;
9+
use App\Helpers\Session;
910

1011
class Profile extends Controller implements ControllerInterface
1112
{
1213
public function get()
1314
{
14-
$id = session()->get('user.id');
15+
$id = Session::get('userid');
1516
$user = (new Users())->findUserById($id);
1617

1718
echo $this->view('pages.users.profile', compact('user'));
1819
}
1920

2021
public function post()
2122
{
22-
$id = session()->get('user.id');
23+
$id = Session::get('userid');
2324
$data = $this->data;
2425

2526
$users = new Users();
@@ -65,4 +66,4 @@ public function delete()
6566
public function options()
6667
{
6768
}
68-
}
69+
}

app.test/app/Controllers/Users/Security.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@
66
use App\Helpers\Validator;
77
use App\Interfaces\ControllerInterface;
88
use App\Models\Users;
9+
use App\Helpers\Session;
910

1011
class Security extends Controller implements ControllerInterface
1112
{
1213
public function get()
1314
{
14-
$id = session()->get('user.id');
15+
$id = Session::get('userid');
1516
$user = (new Users())->findUserById($id);
1617

1718
// $users = new Users();
@@ -22,7 +23,7 @@ public function get()
2223

2324
public function post()
2425
{
25-
$id = session()->get('user.id');
26+
$id = Session::get('userid');
2627
$data = $this->data;
2728

2829
$users = new Users();
@@ -61,4 +62,4 @@ public function delete()
6162
public function options()
6263
{
6364
}
64-
}
65+
}

app.test/app/Controllers/Users/Withdrawal.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use App\Helpers\Validator;
77
use App\Interfaces\ControllerInterface;
88
use App\Models\Users;
9+
use App\Helpers\Session;
910

1011
class Withdrawal extends Controller implements ControllerInterface
1112
{
@@ -15,7 +16,7 @@ public function get()
1516

1617
public function post()
1718
{
18-
$id = session()->get('user.id');
19+
$id = Session::get('userid');
1920
$data['withdrawal'] = $this->data;
2021

2122
$users = new Users();
@@ -56,4 +57,4 @@ public function delete()
5657
public function options()
5758
{
5859
}
59-
}
60+
}

app.test/app/Helpers/Arr.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace App\Helpers;
4+
5+
class Arr
6+
{
7+
public static function assignArrayByPath(array &$array, string $path, mixed $value, string $separator = '.'): void
8+
{
9+
$keys = explode($separator, $path);
10+
11+
foreach ($keys as $key) {
12+
$array = &$array[$key];
13+
}
14+
15+
$array = $value;
16+
}
17+
18+
public static function getArrayByPath(array &$array, string $path, string $separator = '.'): mixed
19+
{
20+
$keys = explode($separator, $path);
21+
22+
foreach ($keys as $key) {
23+
$array = &$array[$key];
24+
}
25+
26+
return $array;
27+
}
28+
29+
public static function unsetArrayByPath(array &$array, string $path, string $separator = '.'): void
30+
{
31+
$keys = explode($separator, $path);
32+
$length = count($keys);
33+
34+
foreach ($keys as $i => $key) {
35+
if ($i === $length - 1) {
36+
unset($array[$key]);
37+
} else {
38+
$array = &$array[$key];
39+
}
40+
}
41+
}
42+
}

0 commit comments

Comments
 (0)