diff --git a/app/Auth.php b/app/Auth.php new file mode 100644 index 0000000000000000000000000000000000000000..9cd773fbdc2d2a6d49e867e59c75fed357399c85 --- /dev/null +++ b/app/Auth.php @@ -0,0 +1,38 @@ +<?php + +namespace App; + +use Illuminate\Support\Facades\Auth as BaseAuth; + +class Auth extends BaseAuth +{ + public static function isCommonUser() + { + $user = self::user(); + if ($user && ($user->role == User::ROLE_USER)) { + return true; + } else { + return false; + } + } + + public static function isAdmin() + { + $user = self::user(); + if ($user && ($user->role == User::ROLE_ADMIN)) { + return true; + } else { + return false; + } + } + + public static function isPencatat() + { + $user = self::user(); + if ($user && ($user->role == User::ROLE_PENCATAT)) { + return true; + } else { + return false; + } + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Core/AdminController.php b/app/Http/Controllers/Core/AdminController.php new file mode 100644 index 0000000000000000000000000000000000000000..90cd00d5961d44c263489fc6b09a8358d6a7d6dc --- /dev/null +++ b/app/Http/Controllers/Core/AdminController.php @@ -0,0 +1,27 @@ +<?php + +namespace App\Http\Controllers\Core; + +use App\Http\Controllers\Controller; +use App\User; +use Illuminate\Http\Request; + +class AdminController extends Controller +{ + public function authenticate(Request $request) + { + if (!$request->session()->has('user.id') || ($request->session()->get('user.role') != User::ROLE_ADMIN)) { + return false; + } else { + return true; + } + } + + protected function user(Request $request) + { + $userId = $request->session()->get('user.id'); + $user = User::find($userId); + + return $user; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Core/CommonUserController.php b/app/Http/Controllers/Core/CommonUserController.php new file mode 100644 index 0000000000000000000000000000000000000000..5df0c7e2868b85a89fa8682ce2cf43a013b8ce2d --- /dev/null +++ b/app/Http/Controllers/Core/CommonUserController.php @@ -0,0 +1,28 @@ +<?php + +namespace App\Http\Controllers\Core; + +use App\Http\Controllers\Controller; +use App\User; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Redirect; + +class CommonUserController extends Controller +{ + public function authenticate(Request $request) + { + if (($request->session()->has('user.id') == NULL) || ($request->session()->get('user.role') != User::ROLE_USER)) { + return false; + } else { + return true; + } + } + + protected function user(Request $request) + { + $userId = $request->session()->get('user.id'); + $user = User::find($userId); + + return $user; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Core/GuestController.php b/app/Http/Controllers/Core/GuestController.php new file mode 100644 index 0000000000000000000000000000000000000000..8ec7bc71ad17dcbc9d523a90094d4a710d0c92f4 --- /dev/null +++ b/app/Http/Controllers/Core/GuestController.php @@ -0,0 +1,33 @@ +<?php + +namespace App\Http\Controllers\Core; + +use App\Http\Controllers\Controller; +use App\User; +use Illuminate\Http\Request; + +class GuestController extends Controller +{ + public function authenticate(Request $request) + { + if ($request->session()->has('user.id')) { + $role = $request->session()->get('user.role', NULL); + + if ($role == User::ROLE_USER) { + redirect('/permohonan'); + } else if ($role == User::ROLE_PENCATAT) { + redirect('/pencatat/permohonan'); + } else if ($role == User::ROLE_ADMIN) { + + } + } + } + + protected function user(Request $request) + { + $userId = $request->session()->get('user.id'); + $user = User::find($userId); + + return $user; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Core/PencatatController.php b/app/Http/Controllers/Core/PencatatController.php new file mode 100644 index 0000000000000000000000000000000000000000..4432186ea62162b342b385f5c178269adc535efb --- /dev/null +++ b/app/Http/Controllers/Core/PencatatController.php @@ -0,0 +1,19 @@ +<?php + +namespace App\Http\Controllers\Core; + +use App\Http\Controllers\Controller; +use App\User; +use Illuminate\Http\Request; + +class PencatatController extends Controller +{ + public function authenticate(Request $request) + { + if (!$request->session()->has('user.id') || ($request->session()->get('user.role') != User::ROLE_PENCATAT)) { + return false; + } else { + return true; + } + } +} \ No newline at end of file diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index c1fd85c00d0653d9bc0adb5ca46417825710d84d..330c1b5f2dc5e1774d5136ecdb4b3e330a568b43 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -2,42 +2,71 @@ namespace App\Http\Controllers; +use App\Http\Controllers\Core\GuestController; use App\Http\Requests; +use App\Services\UserService; use App\User; use Illuminate\Http\Request; -class HomeController extends Controller +class HomeController extends GuestController { - /** - * Create a new controller instance. - * - * @return void - */ - public function __construct() - { + private $userService; + public function __construct(Request $request) + { + $this->userService = new UserService(); } - /** - * Show the application dashboard. - * - * @return \Illuminate\Http\Response - */ - public function index() + public function index(Request $request) { + $this->authenticate($request); return redirect('/'); } public function postRegister(Request $request) { + $this->authenticate($request); + $email = $request->input('email'); $password = $request->input('password'); User::create([ 'email' => $email, - 'password' => bcrypt($password) + 'password' => md5($password) ]); return redirect()->action('Auth\AuthController@login'); } + + public function login(Request $request) + { + $this->authenticate($request); + + return view('auth.login'); + } + + public function postLogin(Request $request) + { + $this->authenticate($request); + + $email = $request->input('email'); + $password = $request->input('password'); + + $user = $this->userService->validate($email, $password); + if ($user) { + $request->session()->put('user.id', $user->id); + $request->session()->put('user.email', $user->email); + $request->session()->put('user.role', $user->role); + + if ($user->role == User::ROLE_USER) { + return redirect()->action('PermohonanController@index'); + } else if ($user->role == User::ROLE_PENCATAT) { + return redirect()->action('Pencatat\PermohonanController@index'); + } else if ($user->role == User::ROLE_ADMIN) { + + } + } else { + return redirect()->action('Auth\AuthController@login'); + } + } } diff --git a/app/Http/Controllers/admin/PermohonanController.php b/app/Http/Controllers/Pencatat/PermohonanController.php similarity index 50% rename from app/Http/Controllers/admin/PermohonanController.php rename to app/Http/Controllers/Pencatat/PermohonanController.php index dbbd00ee534d7994d97bdc5d28e125d89d4e89f5..b3693a0bc2a8aadba2d5c06649884d0d4a7a1d88 100644 --- a/app/Http/Controllers/admin/PermohonanController.php +++ b/app/Http/Controllers/Pencatat/PermohonanController.php @@ -1,21 +1,24 @@ <?php -namespace App\Http\Controllers\Admin; +namespace App\Http\Controllers\Pencatat; -use App\Http\Controllers\Controller; +use App\Auth; +use App\Http\Controllers\Core\PencatatController; use App\Models\Permohonan; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; -class PermohonanController extends Controller +class PermohonanController extends PencatatController { - public function __construct() + public function __construct(Request $request) { - } - public function index() + public function index(Request $request) { + if (!$this->authenticate($request)) { + return redirect()->action('HomeController@login'); + } + $permohonanList = Permohonan::where('status', '=', Permohonan::STATUS_PENDING) ->get(); @@ -26,7 +29,11 @@ class PermohonanController extends Controller public function view(Request $request, $id) { - $user = Auth::user(); + if (!$this->authenticate($request)) { + return redirect()->action('HomeController@login'); + } + + $user = $this->user($request); $permohonan = $user->permohonan; return view('admin.permohonan.view', [ diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index ff84b8e64217a721aa1a530dd1d026e0763b0747..21067e5543f0c1bbbf092b550e29c7ffdc02962e 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -2,33 +2,42 @@ namespace App\Http\Controllers; +use App\Auth; +use App\Http\Controllers\Core\CommonUserController; use App\Models\Permohonan; use App\Services\PermohonanService; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; use Validator; -class PermohonanController extends Controller +class PermohonanController extends CommonUserController { private $permohonanService; - public function __construct() + public function __construct(Request $request) { $this->permohonanService = new PermohonanService(); } - public function index() + public function index(Request $request) { - $user = Auth::user(); + if (!$this->authenticate($request)) { + return redirect()->action('HomeController@login'); + } + + $user = $this->user($request); return view('permohonan.index', [ 'permohonan' => $user->permohonan ]); } - public function create() + public function create(Request $request) { - $user = Auth::user(); + if (!$this->authenticate($request)) { + return redirect()->action('HomeController@login'); + } + + $user = $this->user($request); $this->permohonanService->createPermohonan($user); return redirect()->action('PermohonanController@update'); @@ -36,7 +45,11 @@ class PermohonanController extends Controller public function update(Request $request) { - $user = Auth::user(); + if (!$this->authenticate($request)) { + return redirect()->action('HomeController@login'); + } + + $user = $this->user($request); if ($this->permohonanService->userHavePermohonan($user)) { $permohonan = $user->permohonan; @@ -57,7 +70,11 @@ class PermohonanController extends Controller public function postUpdate(Request $request) { - $user = Auth::user(); + if (!$this->authenticate($request)) { + return redirect()->action('HomeController@login'); + } + + $user = $this->user($request); $rules = [ 'noKtpPria' => 'required|digits:16', @@ -89,7 +106,11 @@ class PermohonanController extends Controller public function upload(Request $request) { - $user = Auth::user(); + if (!$this->authenticate($request)) { + return redirect()->action('HomeController@login'); + } + + $user = $this->user($request); $permohonan = $user->permohonan; return view('permohonan.upload', [ @@ -99,7 +120,11 @@ class PermohonanController extends Controller public function postUploadRt(Request $request) { - $user = Auth::user(); + if (!$this->authenticate($request)) { + return redirect()->action('HomeController@login'); + } + + $user = $this->user($request); $permohonan = $user->permohonan; $uploadPath = public_path(Permohonan::SURAT_RT_DIR); diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 288c92735a6013af8c798f1243c54a3f8f5c9e9c..b03a311aa4b074025b6b4a5b01281c66e933d826 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -46,6 +46,6 @@ class Kernel extends HttpKernel 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class ]; } diff --git a/app/Http/routes.php b/app/Http/routes.php index b7425fa39de9daf995a6ee7d778ed3e8e971ed95..1c1622af6b8d67843d7c32a5ce8bd9ac10b7e513 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -11,13 +11,7 @@ | */ -Route::get('/', function () { - return view('welcome'); -}); - Route::group(['middleware' => ['web']], function () { - Route::get('/login', 'HomeController@login'); - Route::post('/login', 'Auth\AuthController@login'); Route::get('/logout', 'Auth\AuthController@logout'); @@ -30,7 +24,11 @@ Route::group(['middleware' => ['web']], function () { Route::get('/home', 'HomeController@index'); - Route::group(['middleware' => ['auth']], function () { + Route::get('/login', 'HomeController@login'); + + Route::post('/login', 'HomeController@postLogin'); + +// Route::group(['middleware' => ['commonUser']], function () { Route::get('/', 'PermohonanController@index'); Route::get('/permohonan/create', 'PermohonanController@create'); @@ -44,9 +42,15 @@ Route::group(['middleware' => ['web']], function () { Route::post('/permohonan/upload/rt', 'PermohonanController@postUploadRt'); Route::post('/permohonan/upload/rw', 'PermohonanController@postUploadRw'); - - Route::get('/admin', 'Admin\PermohonanController@index'); - - Route::get('/admin/permohonan/{id}', 'Admin\PermohonanController@view'); - }); +// }); + +// Route::group(['middleware' => ['pencatat']], function () { + Route::get('/pencatat', 'Pencatat\PermohonanController@index'); + + Route::get('/pencatat/permohonan/{id}', 'Pencatat\PermohonanController@view'); +// }); + +// Route::group(['middleware' => ['admin']], function () { + +// }); }); \ No newline at end of file diff --git a/app/Services/UserService.php b/app/Services/UserService.php new file mode 100644 index 0000000000000000000000000000000000000000..f6f4889fe31e111ab89886ef892d87ad39b96f4e --- /dev/null +++ b/app/Services/UserService.php @@ -0,0 +1,25 @@ +<?php + +namespace App\Services; + +use App\User; + +class UserService +{ + public function __construct() + { + } + + public function validate($email, $password) + { + $user = User::where('email', $email) + ->where('password', md5($password)) + ->first(); + + if ($user != NULL) { + return $user; + } else { + return false; + } + } +} \ No newline at end of file diff --git a/app/User.php b/app/User.php index 9bf28d15aa6fe96514d89f5a6103f57d75f5bf5a..987b427becb5f339b558edabb8dc201e4acdaff5 100644 --- a/app/User.php +++ b/app/User.php @@ -7,6 +7,10 @@ use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { + const ROLE_USER = 0; + const ROLE_PENCATAT = 1; + const ROLE_ADMIN = 2; + protected $table = 'users'; public $timestamps = false; diff --git a/resources/views/layouts/admin_layout.blade.php b/resources/views/layouts/admin_layout.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/resources/views/layouts/base.blade.php b/resources/views/layouts/base.blade.php index 6308850ec704f612f92bbc4973cd0c01bdb28afd..8f0cba716349cbc19142be8df946818f262f628b 100644 --- a/resources/views/layouts/base.blade.php +++ b/resources/views/layouts/base.blade.php @@ -243,12 +243,7 @@ <li class="hidden-folded m-t text-dark-grey text-xs padder-md padder-v-sm"> <span>Navigation</span> </li> - <li class="active"> - <a href="/" class="text-dark-grey" > - <i class="icon-bdg_dashboard icon-grey"></i> - <span class="font-bold">Dashboard</span> - </a> - </li> + @yield('menu') {{--<li class="line1 dg"></li>--}} diff --git a/resources/views/layouts/pencatat_layout.blade.php b/resources/views/layouts/pencatat_layout.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/resources/views/layouts/user_layout.blade.php b/resources/views/layouts/user_layout.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..14c6e09a861bde31cbba82f68335f2dfdca413d9 --- /dev/null +++ b/resources/views/layouts/user_layout.blade.php @@ -0,0 +1,10 @@ +@extends('layouts.base') + +@section('menu') + <li class="active"> + <a href="/" class="text-dark-grey" > + <i class="icon-bdg_dashboard icon-grey"></i> + <span class="font-bold">Dashboard</span> + </a> + </li> +@endsection \ No newline at end of file diff --git a/resources/views/permohonan/index.blade.php b/resources/views/permohonan/index.blade.php index 8b0be34aaede096d5e1ee91bf103b75f47688ba7..9d1fa43b5f4b5beb01ecdb8b111d3fa2c337b041 100644 --- a/resources/views/permohonan/index.blade.php +++ b/resources/views/permohonan/index.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.base') +@extends('layouts.user_layout') @section('title') Permohonan Pengajuan Catatan Perkawinan diff --git a/resources/views/permohonan/update.blade.php b/resources/views/permohonan/update.blade.php index d75264b658405c19d67c0b52346ac22d2c26c499..cb46debcb5027a0d661c42343412dfee9c199e8d 100644 --- a/resources/views/permohonan/update.blade.php +++ b/resources/views/permohonan/update.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.base') +@extends('layouts.user_layout') @section('title') Permohonan Pengajuan Catatan Perkawinan diff --git a/resources/views/permohonan/upload.blade.php b/resources/views/permohonan/upload.blade.php index e491fcb3668e26dc46f6625d822e5dbbc1503e60..374f48483235b14cad16df3ac62fbf5265771756 100644 --- a/resources/views/permohonan/upload.blade.php +++ b/resources/views/permohonan/upload.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.base') +@extends('layouts.user_layout') @section('title') Unggah Surat Rekomendasi RT/RW