Skip to content

Commit 3d7d105

Browse files
author
erickfirmo
committed
Autenticação guest e admin com middleware
1 parent 2180e26 commit 3d7d105

37 files changed

+760
-61
lines changed

App/Admin.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
namespace App;
4+
5+
use Core\Model;
6+
use App\User;
7+
8+
class Admin extends Model
9+
{
10+
public $table = 'admins';
11+
12+
public $id;
13+
public $name;
14+
public $lastname;
15+
public $email;
16+
public $password;
17+
18+
public $fields = [
19+
'name',
20+
'lastname',
21+
'email',
22+
'password',
23+
];
24+
25+
26+
}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
<?php
2+
3+
namespace App\Controllers\Auth;
4+
5+
use App\Controllers\Controller;
6+
use App\Controllers\Auth\AuthController;
7+
use Core\Request;
8+
use App\Admin;
9+
10+
11+
class AdminController extends Controller
12+
{
13+
14+
public function showRegisterForm()
15+
{
16+
return $this->view('/admin/register_form');
17+
}
18+
19+
public function showLoginForm()
20+
{
21+
return $this->view('/admin/login_form');
22+
}
23+
24+
public function register()
25+
{
26+
$admin = new Admin;
27+
$admin->name = $this->request()->input('name');
28+
$admin->lastname = $this->request()->input('lastname');
29+
$admin->email = $this->request()->input('email');
30+
if($this->request()->input('password') == $this->request()->input('confirm_password'))
31+
{
32+
$admin->password = md5($this->request()->input('password'));
33+
$admin->save();
34+
35+
36+
$_SESSION['login@admin'] = $admin;
37+
38+
39+
} else {
40+
$this->alert('success', 'Senhas não correspondem !');
41+
return $this->route()->back();
42+
43+
44+
}
45+
46+
47+
return $this->route()->redirect('/');
48+
49+
50+
51+
}
52+
53+
public function login()
54+
{
55+
56+
$email = $this->request()->input('email');
57+
58+
$admin = (new Admin())->findBy('email', $email);
59+
60+
61+
62+
if($admin->password == md5($this->request()->input('password')))
63+
{
64+
$_SESSION['login@admin'] = $admin;
65+
}
66+
67+
return $this->route()->redirect('/');
68+
}
69+
70+
public function logout()
71+
{
72+
$_SESSION['login@admin'] = NULL;
73+
74+
return $this->route()->redirect('/admin/login');
75+
}
76+
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?php
2+
3+
namespace App\Controllers\Auth;
4+
5+
use App\Controllers\Controller;
6+
use App\Controllers\Auth\AuthController;
7+
use Core\Request;
8+
use App\User;
9+
10+
class UserController extends Controller
11+
{
12+
13+
public function showRegisterForm()
14+
{
15+
return $this->view('/user/register_form');
16+
}
17+
18+
public function showLoginForm()
19+
{
20+
return $this->view('/user/login_form');
21+
}
22+
23+
public function register()
24+
{
25+
$user = new User;
26+
$user->name = $this->request()->input('name');
27+
$user->lastname = $this->request()->input('lastname');
28+
$user->email = $this->request()->input('email');
29+
if($this->request()->input('password') == $this->request()->input('confirm_password'))
30+
{
31+
$user->password = md5($this->request()->input('password'));
32+
$user->save();
33+
34+
35+
$_SESSION['login@user'] = $user;
36+
37+
38+
} else {
39+
$this->alert('success', 'Senhas não correspondem !');
40+
return $this->route()->back();
41+
42+
43+
}
44+
45+
46+
return $this->route()->redirect('/');
47+
48+
49+
50+
}
51+
52+
public function login()
53+
{
54+
55+
$email = $this->request()->input('email');
56+
57+
$user = (new User())->findBy('email', $email);
58+
59+
60+
61+
if($user->password == md5($this->request()->input('password')))
62+
{
63+
$_SESSION['login@user'] = $user;
64+
}
65+
66+
return $this->route()->redirect('/');
67+
}
68+
69+
public function logout()
70+
{
71+
if($_SESSION['login@user'])
72+
{
73+
$_SESSION['login@user'] = NULL;
74+
}
75+
return $this->route()->redirect('/login');
76+
}
77+
}

App/Controllers/ClienteController.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88

99
class ClienteController extends Controller
1010
{
11+
public function __construct()
12+
{
13+
$this->middleware('admin');
14+
}
15+
1116
public function index()
1217
{
1318
$clientes = (new Cliente())->all();

App/Controllers/Controller.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Core\Request;
66
use Core\View;
77
use Core\Router;
8+
use Core\Auth;
89

910
class Controller
1011
{
@@ -35,4 +36,15 @@ public function alert($status, $alert)
3536
return (new View())->alert($status, $alert);
3637
}
3738

39+
public function middleware($permission)
40+
{
41+
switch ($permission) {
42+
case 'guest':
43+
return (new \App\Middleware\UserMiddleware());
44+
break;
45+
case 'admin':
46+
return (new \App\Middleware\AdminMiddleware());
47+
}
48+
}
49+
3850
}

App/Controllers/DividaController.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111

1212
class DividaController extends Controller
1313
{
14+
15+
public function __construct()
16+
{
17+
$this->middleware('admin');
18+
}
1419
public function index()
1520
{
1621
$dividas = (new Divida())->paginate(2)->all();

App/Controllers/HomeController.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@
66

77
class HomeController extends Controller
88
{
9+
public function __construct()
10+
{
11+
$this->middleware('admin');
12+
}
13+
914
public function index()
1015
{
1116
return $this->view('/index');
1217
}
13-
14-
1518
}

App/Middleware/AdminMiddleware.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace App\Middleware;
4+
5+
use User;
6+
use Controller;
7+
8+
class AdminMiddleware {
9+
10+
public function __construct()
11+
{
12+
$this->redirectIfNotAuthenticated();
13+
}
14+
15+
public function redirectIfNotAuthenticated()
16+
{
17+
if($_SESSION['login@admin'] == NULL || !isset($_SESSION['login@admin']))
18+
{
19+
return (new \App\Controllers\Controller())->route()->redirect('/admin/login');
20+
}
21+
}
22+
}

App/Middleware/AuthMiddleware.php

Lines changed: 0 additions & 9 deletions
This file was deleted.

App/Middleware/UserMiddleware.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace App\Middleware;
4+
5+
use User;
6+
use Controller;
7+
8+
class UserMiddleware {
9+
10+
public function __construct()
11+
{
12+
$this->redirectIfNotAuthenticated();
13+
}
14+
15+
public function redirectIfNotAuthenticated()
16+
{
17+
if($_SESSION['login@user'] == NULL || !isset($_SESSION['login@user']))
18+
{
19+
return (new \App\Controllers\Controller())->route()->redirect('/login');
20+
}
21+
}
22+
}

0 commit comments

Comments
 (0)