feat: make login with nip & change users table column, edit profile, and manage worker data
This commit is contained in:
parent
ca18e1107e
commit
d0af4d87bf
@ -13,7 +13,7 @@ class ManageUserController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$users = User::all();
|
||||
$users = User::where('role', '!=', 'admin')->get();
|
||||
return view('users-management.index', ['users' => $users]);
|
||||
}
|
||||
|
||||
@ -26,14 +26,14 @@ class ManageUserController extends Controller
|
||||
{
|
||||
$user = new User();
|
||||
$user->fill([
|
||||
'nip' => $request->nip,
|
||||
'name' => $request->name,
|
||||
'email' => $request->email,
|
||||
'password' => Hash::make($request->password),
|
||||
]);
|
||||
|
||||
$user->save();
|
||||
|
||||
return redirect()->route('users-management.index')->with('success', 'Akun Baru berhasil dibuat!');
|
||||
return redirect()->route('users-management.index')->with('success', 'Akun Pegawai Baru berhasil dibuat!');
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
@ -54,7 +54,7 @@ class ManageUserController extends Controller
|
||||
|
||||
$user->save();
|
||||
|
||||
return redirect()->route('users-management.index')->with('success', 'Akun berhasil diperbarui!');
|
||||
return redirect()->route('users-management.index')->with('success', 'Akun Pegawai berhasil diperbarui!');
|
||||
}
|
||||
|
||||
public function disable($id)
|
||||
@ -65,9 +65,9 @@ class ManageUserController extends Controller
|
||||
$user->is_active = !$user->is_active;
|
||||
$user->save();
|
||||
if ($user->is_active) {
|
||||
return redirect()->route('users-management.index')->with('success', 'Akun berhasil diaktifkan!');
|
||||
return redirect()->route('users-management.index')->with('success', 'Akun Pegawai berhasil diaktifkan!');
|
||||
}
|
||||
return redirect()->route('users-management.index')->with('success', 'Akun berhasil dinonaktifkan!');
|
||||
return redirect()->route('users-management.index')->with('success', 'Akun Pegawai berhasil dinonaktifkan!');
|
||||
}
|
||||
|
||||
return redirect()->route('users-management.index')->with('error', 'Terjadi kesalahan!');
|
||||
@ -79,7 +79,7 @@ class ManageUserController extends Controller
|
||||
|
||||
if ($user) {
|
||||
$user->delete();
|
||||
return redirect()->route('users-management.index')->with('success', 'Akun berhasil dihapus!');
|
||||
return redirect()->route('users-management.index')->with('success', 'Akun Pegawai berhasil dihapus!');
|
||||
}
|
||||
|
||||
return redirect()->route('users-management.index')->with('error', 'Terjadi kesalahan!');
|
||||
|
||||
@ -64,6 +64,7 @@ class Kernel extends HttpKernel
|
||||
'signed' => \App\Http\Middleware\ValidateSignature::class,
|
||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
||||
'is_super_admin' => \App\Http\Middleware\VerifyIsSuperAdmin::class,
|
||||
'isAdmin' => \App\Http\Middleware\VerifyIsAdmin::class,
|
||||
'isWorker' => \App\Http\Middleware\VerifyIsWorker::class,
|
||||
];
|
||||
}
|
||||
|
||||
@ -7,7 +7,7 @@ use Illuminate\Http\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class VerifyIsSuperAdmin
|
||||
class VerifyIsAdmin
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
@ -16,7 +16,7 @@ class VerifyIsSuperAdmin
|
||||
*/
|
||||
public function handle(Request $request, Closure $next): Response
|
||||
{
|
||||
if (Auth::user()->is_superuser) {
|
||||
if (Auth::user()->role === 'admin') {
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
25
app/Http/Middleware/VerifyIsWorker.php
Normal file
25
app/Http/Middleware/VerifyIsWorker.php
Normal file
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class VerifyIsWorker
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
|
||||
*/
|
||||
public function handle(Request $request, Closure $next): Response
|
||||
{
|
||||
if (Auth::user()->role === 'worker') {
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
return redirect('/');
|
||||
}
|
||||
}
|
||||
@ -28,7 +28,7 @@ class LoginRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'email' => ['required', 'string', 'email'],
|
||||
'nip' => ['required', 'string', 'min:12', 'max:12'],
|
||||
'password' => ['required', 'string'],
|
||||
];
|
||||
}
|
||||
@ -43,9 +43,9 @@ class LoginRequest extends FormRequest
|
||||
$this->ensureIsNotRateLimited();
|
||||
|
||||
// Check user is_active status and not soft deleted
|
||||
$user = User::where('email', $this->string('email'))->first();
|
||||
$user = User::where('nip', $this->string('nip'))->first();
|
||||
|
||||
if (!$user || !$user->is_active || $user->trashed() || !Auth::attempt($this->only('email', 'password'), $this->boolean('remember'))) {
|
||||
if (!$user || !$user->is_active || $user->trashed() || !Auth::attempt($this->only('nip', 'password'), $this->boolean('remember'))) {
|
||||
RateLimiter::hit($this->throttleKey());
|
||||
|
||||
throw ValidationException::withMessages([
|
||||
|
||||
@ -25,7 +25,7 @@ class StoreNewAkun extends FormRequest
|
||||
{
|
||||
return [
|
||||
'name' => ['required', 'string', 'max:255'],
|
||||
'email' => ['required', 'string', 'lowercase', 'email', 'max:255', Rule::unique(User::class)->ignore($this->user()->id)],
|
||||
'nip' => ['required', 'string', 'min:12', 'max:12', Rule::unique(User::class)],
|
||||
'password' => ['required', 'min:8', 'confirmed'],
|
||||
];
|
||||
}
|
||||
|
||||
@ -20,10 +20,10 @@ class User extends Authenticatable
|
||||
*/
|
||||
protected $fillable = [
|
||||
'name',
|
||||
'email',
|
||||
'nip',
|
||||
'password',
|
||||
'role',
|
||||
'is_active',
|
||||
'is_superuser',
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
@ -14,9 +14,9 @@ return new class extends Migration
|
||||
Schema::create('users', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('name');
|
||||
$table->string('email')->unique();
|
||||
$table->string('nip')->unique();
|
||||
$table->string('password');
|
||||
$table->boolean('is_superuser')->default(false);
|
||||
$table->enum('role', ['admin', 'worker', 'patient'])->default('patient');
|
||||
$table->boolean('is_active')->default(true);
|
||||
$table->rememberToken();
|
||||
$table->timestamps();
|
||||
|
||||
@ -15,13 +15,24 @@ class AdminSeeder extends Seeder
|
||||
public function run(): void
|
||||
{
|
||||
$user = [
|
||||
'name' => 'Admin SIM Surat',
|
||||
'email' => 'admin@simsurat.com',
|
||||
'password' => Hash::make('admin123'),
|
||||
'is_superuser' => true,
|
||||
'is_active' => true,
|
||||
[
|
||||
'name' => 'Admin RSABHK',
|
||||
'nip' => '202510001234',
|
||||
'password' => Hash::make('admin123'),
|
||||
'role' => 'admin',
|
||||
'is_active' => true,
|
||||
'created_at' => now(),
|
||||
],
|
||||
[
|
||||
'name' => 'Pegawai RSABHK',
|
||||
'nip' => '202510001235',
|
||||
'password' => Hash::make('worker123'),
|
||||
'role' => 'worker',
|
||||
'is_active' => true,
|
||||
'created_at' => now(),
|
||||
],
|
||||
];
|
||||
|
||||
User::create($user);
|
||||
User::insert($user);
|
||||
}
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@
|
||||
],
|
||||
(object) [
|
||||
'icon' => 'fas fa-user',
|
||||
'name' => 'Pengguna',
|
||||
'name' => 'Pegawai',
|
||||
'link' => '/manajemen-akun',
|
||||
'childs' => [],
|
||||
'is_superuser' => true, // Menambahkan field ini untuk mengontrol akses
|
||||
@ -82,7 +82,7 @@
|
||||
@continue
|
||||
@endif
|
||||
|
||||
@if (isset($menu->is_superuser) && $menu->is_superuser && !Auth::user()->is_superuser)
|
||||
@if (isset($menu->is_superuser) && $menu->is_superuser && !Auth::user()->role === 'admin')
|
||||
@continue {{-- Menghentikan iterasi jika bukan superuser --}}
|
||||
@endif
|
||||
|
||||
|
||||
@ -24,7 +24,7 @@
|
||||
<!-- /.login-logo -->
|
||||
<div class="card card-outline card-primary">
|
||||
<div class="card-header text-center">
|
||||
<h1><b>Laravel Boilerplate</h1>
|
||||
<h1><b>RSABHK - REGISTRASI</h1>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="login-box-msg">Login untuk memulai</p>
|
||||
@ -33,15 +33,15 @@
|
||||
@csrf
|
||||
<div class="form-group mb-3">
|
||||
<div class="input-group">
|
||||
<input type="email" name="email" class="form-control" placeholder="Email" required
|
||||
value="{{ old('email') }}">
|
||||
<input type="text" name="nip" class="form-control" placeholder="NIP" required
|
||||
value="{{ old('nip') }}">
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-envelope"></span>
|
||||
<span class="fas fa-user"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@error('email')
|
||||
@error('nip')
|
||||
<small style="color: red;">{{ $message }}</small>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
@ -34,9 +34,9 @@
|
||||
@method('PUT')
|
||||
<div class="card-body">
|
||||
<div class="form-group">
|
||||
<label>Email address</label>
|
||||
<input type="email" class="form-control" placeholder="Masukan email"
|
||||
value="{{ $user->email }}" disabled>
|
||||
<label>NIP</label>
|
||||
<input type="email" class="form-control" placeholder="Masukan NIP"
|
||||
value="{{ $user->nip }}" disabled>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Nama</label>
|
||||
|
||||
@ -33,10 +33,10 @@
|
||||
@csrf
|
||||
<div class="card-body">
|
||||
<div class="form-group">
|
||||
<label>Email address</label>
|
||||
<input name="email" type="email" class="form-control" placeholder="Masukan email"
|
||||
value="{{ old('email') }}" required>
|
||||
@error('email')
|
||||
<label>NIP</label>
|
||||
<input name="nip" type="text" class="form-control" placeholder="Masukan NIP"
|
||||
value="{{ old('nip') }}" required>
|
||||
@error('nip')
|
||||
<small style="color: red;">{{ $message }}</small>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
@ -34,9 +34,9 @@
|
||||
@method('PUT')
|
||||
<div class="card-body">
|
||||
<div class="form-group">
|
||||
<label>Email address</label>
|
||||
<input type="email" class="form-control" placeholder="Masukan email"
|
||||
value="{{ $user->email }}" disabled>
|
||||
<label>NIP</label>
|
||||
<input type="text" class="form-control" placeholder="Masukan NIP" value="{{ $user->nip }}"
|
||||
disabled>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Nama</label>
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
<div class="container-fluid">
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<h1 class="m-0">Manajemen Data Akun</h1>
|
||||
<h1 class="m-0">Manajemen Data Pegawai</h1>
|
||||
</div><!-- /.col -->
|
||||
<div class="col-sm-6">
|
||||
<ol class="breadcrumb float-sm-right">
|
||||
@ -30,7 +30,7 @@
|
||||
<div class="card-header">
|
||||
<a href="{{ route('users-management.create') }}" class="btn btn-info">
|
||||
<i class="fas fa-plus"></i>
|
||||
Tambah Akun
|
||||
Tambah Akun Pegawai
|
||||
</a>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@ -38,8 +38,8 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th>No</th>
|
||||
<th>NIP</th>
|
||||
<th>Nama Akun</th>
|
||||
<th>Email Akun</th>
|
||||
<th>Dibuat Pada</th>
|
||||
<th>Status</th>
|
||||
<th>Aksi</th>
|
||||
@ -49,8 +49,8 @@
|
||||
@foreach ($users as $index => $user)
|
||||
<tr>
|
||||
<td>{{ $index + 1 }}</td>
|
||||
<td>{{ $user->nip }}</td>
|
||||
<td>{{ $user->name }}</td>
|
||||
<td>{{ $user->email }}</td>
|
||||
<td>{{ $user->created_at }}</td>
|
||||
<td>
|
||||
@if ($user->is_active)
|
||||
|
||||
@ -5,8 +5,6 @@ use App\Http\Controllers\DashboardController;
|
||||
use App\Http\Controllers\ManageUserController;
|
||||
use App\Http\Controllers\ProfileController;
|
||||
use App\Http\Controllers\DocumentTypeController;
|
||||
use App\Http\Controllers\DocumentInController;
|
||||
use App\Http\Controllers\DocumentOutController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
/*
|
||||
@ -38,7 +36,7 @@ Route::middleware('auth')->group(function () {
|
||||
# Dashboard Page
|
||||
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
|
||||
|
||||
Route::middleware('is_super_admin')->group(function () {
|
||||
Route::middleware('isAdmin')->group(function () {
|
||||
# Manage User Page
|
||||
Route::get('/manajemen-akun', [ManageUserController::class, 'index'])->name('users-management.index');
|
||||
Route::get('/manajemen-akun/tambah', [ManageUserController::class, 'create'])->name('users-management.create');
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user