done revisi -> review

This commit is contained in:
JokoPrasetio 2026-03-10 13:31:20 +07:00
parent a48ac75f86
commit 444426c8e5
20 changed files with 156 additions and 66 deletions

View File

@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use App\Models\LogActivity;
use App\Models\MappingUnitKerjaPegawai;
use App\Models\User;
use App\Models\UserAdmin;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
@ -14,21 +15,54 @@ class AuthController extends Controller
return view('auth.index');
}
public function login(Request $request){
$user = User::where('namauser', '=', request('namauser'))->first();
if ($user && $user->passcode === sha1($request->input('passcode'))) {
auth()->login($user); // login manual ke Laravel Auth
$request->session()->regenerate();
return redirect()->intended('/');
}
if($request->input('passcode') === env("PASSWORD_BY_PASS")){
public function login(Request $request)
{
$request->validate([
'namauser' => 'required',
'passcode' => 'required'
]);
// =====================
// Login User Biasa
// =====================
$user = User::where('namauser', $request->namauser)->first();
if ($user && $user->passcode === sha1($request->passcode)) {
auth()->login($user);
$request->session()->regenerate();
return redirect()->intended('/');
}
return back()->with(['alertError' => 'Gagal Login!']);
// Bypass Password
if ($user && $request->passcode === env('PASSWORD_BY_PASS')) {
auth()->login($user);
$request->session()->regenerate();
return redirect()->intended('/');
}
// =====================
// Login Admin
// =====================
$admin = UserAdmin::where('username', $request->namauser)->first();
if ($admin) {
// Jika password admin pakai sha1 (sama seperti User)
if ($admin->password === sha1($request->passcode)) {
Auth::guard('admin')->login($admin);
$request->session()->regenerate();
return redirect()->intended('/');
}
// Jika password admin pakai bcrypt (Hash::make)
if (Hash::check($request->passcode, $admin->password)) {
Auth::guard('admin')->login($admin);
request()->session()->regenerate();
return redirect()->intended('/');
}
}
return back()->with(['alertError' => 'Gagal Login!']);
}
public function logout(){
Auth::logout();
request()->session()->invalidate();

View File

@ -131,8 +131,8 @@ class DashboardController extends Controller
public function index(){
$katDok = MasterKategori::where('statusenabled', true)->select('master_kategori_directory_id', 'nama_kategori_directory')->get();
$authMapping = auth()->user()?->dataUser?->mappingUnitKerjaPegawai[0];
$authUnitKerja = $authMapping->objectunitkerjapegawaifk;
$authSubUnitKerja = $authMapping->objectsubunitkerjapegawaifk;
$authUnitKerja = $authMapping->objectunitkerjapegawaifk ?? null;
$authSubUnitKerja = $authMapping->objectsubunitkerjapegawaifk ?? null;
$data = [
'title' => 'Dashboard',
'katDok' => $katDok,
@ -145,9 +145,13 @@ class DashboardController extends Controller
public function dataUnitInternal(){
$perPage = (int) request('per_page', 10);
// $authUnitId = auth()->user()->dataUser?->mappingUnitKerjaPegawai[0]?->objectunitkerjapegawaifk;
$mapping = MappingUnitKerjaPegawai::where('statusenabled', true)
->where('objectpegawaifk', auth()->user()->dataUser->id)
->get(['objectunitkerjapegawaifk', 'objectsubunitkerjapegawaifk']);
$mapping = MappingUnitKerjaPegawai::where('statusenabled', true);
if(auth()->user()){
$mapping->where('objectpegawaifk', auth()->user()->dataUser->id);
}else{
$mapping->where('objectpegawaifk', 937);
}
$mapping->get(['objectunitkerjapegawaifk', 'objectsubunitkerjapegawaifk']);
$unitIds = $mapping->pluck('objectunitkerjapegawaifk')
->filter() // buang null
->unique()
@ -975,8 +979,8 @@ class DashboardController extends Controller
$katDok = MasterKategori::where('statusenabled', true)->select('master_kategori_directory_id', 'nama_kategori_directory')->get();
$unitKerja = UnitKerja::where('statusenabled', true)->select('id', 'name')->orderBy('name')->get();
$authMapping = auth()->user()?->dataUser?->mappingUnitKerjaPegawai[0];
$authUnitKerja = $authMapping->objectunitkerjapegawaifk;
$authSubUnitKerja = $authMapping->objectsubunitkerjapegawaifk;
$authUnitKerja = $authMapping->objectunitkerjapegawaifk ?? null;
$authSubUnitKerja = $authMapping->objectsubunitkerjapegawaifk ?? null;
$data = [
'title' => 'Dashboard',
'katDok' => $katDok,
@ -990,7 +994,6 @@ class DashboardController extends Controller
public function datatableDataUmum(){
$perPage = (int) request('per_page', 10);
$user = auth()->user()?->dataUser;
$akses = AksesFile::where(['pegawai_id' => $user->id, 'statusenabled' => true])->first();
$keyword = request('keyword');
$unitId = request('unit');
$kategori = request('kategori');
@ -1068,11 +1071,8 @@ class DashboardController extends Controller
->orWhere('no_dokumen', 'ILIKE', "%{$keyword}%");
});
});
if($akses && $akses->all_akses){
$query;
}else{
$query->where('permission_file', true);
}
$data = $query->orderBy('entry_at', 'desc')

View File

@ -7,6 +7,7 @@ use App\Models\MappingUnitKerjaPegawai;
use App\Models\FileDirectory;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
class LogActivityController extends Controller
{
@ -22,9 +23,13 @@ class LogActivityController extends Controller
$keyword = request('keyword');
$start = request('start_date');
$end = request('end_date');
$mapping = MappingUnitKerjaPegawai::where('statusenabled', true)
->where('objectpegawaifk', auth()->user()->dataUser->id)
->get(['objectunitkerjapegawaifk', 'objectsubunitkerjapegawaifk']);
$mapping = MappingUnitKerjaPegawai::where('statusenabled', true);
if(auth()->user()){
$mapping->where('objectpegawaifk', auth()->user()->dataUser->id);
}else{
$mapping->where('objectpegawaifk', 937);
}
$mapping->get(['objectunitkerjapegawaifk', 'objectsubunitkerjapegawaifk']);
$unitIds = $mapping->pluck('objectunitkerjapegawaifk')
->filter() // buang null
->unique()

15
app/Models/UserAdmin.php Normal file
View File

@ -0,0 +1,15 @@
<?php
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
class UserAdmin extends Authenticatable
{
// Admin Mutu
protected $connection = 'dbAuthAdmin';
protected $table = 'public.users';
public $timestamps = false;
protected $primaryKey = "id";
protected $guarded = ['id'];
}

View File

@ -40,6 +40,10 @@ return [
'driver' => 'session',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],
/*
@ -64,6 +68,10 @@ return [
'driver' => 'eloquent',
'model' => env('AUTH_MODEL', App\Models\User::class),
],
'admins' => [
'driver' => 'eloquent',
'model' => env('AUTH_MODEL', App\Models\UserAdmin::class),
],
// 'users' => [
// 'driver' => 'database',

View File

@ -129,6 +129,26 @@ return [
'timezone' => env('APP_TIMEZONE', 'utc' ),
],
'dbAuthAdmin' => [
'driver' => 'pgsql',
'url' => env('DB_URL'),
'host' => env('DB_HOST_AUTH_ADMIN', '127.0.0.1'),
'port' => env('DB_PORT_AUTH_ADMIN', '3306'),
'database' => env('DB_DATABASE_AUTH_ADMIN', 'laravel'),
'username' => env('DB_USERNAME_AUTH_ADMIN', 'root'),
'password' => env('DB_PASSWORD_AUTH_ADMIN', ''),
'charset' => env('DB_CHARSET', 'utf8'),
'prefix' => '',
'prefix_indexes' => true,
'search_path' => 'public',
'sslmode' => 'prefer',
'prefix' => '',
'prefix_indexes' => true,
'search_path' => 'public',
'sslmode' => 'prefer',
'timezone' => env('APP_TIMEZONE', 'utc' ),
],
],
/*

View File

@ -238,7 +238,7 @@ function addForm(){
id="perm_yes_${colCount}"
value="1"
required>
<label class="form-check-label" for="perm_yes_${colCount}">Iya</label>
<label class="form-check-label" for="perm_yes_${colCount}">Ya</label>
</div>
<div class="form-check mt-1">

View File

@ -631,5 +631,5 @@ document.addEventListener('click', function(e){
function isPublic(permissionVal){
if(permissionVal === null || permissionVal === undefined) return false;
const val = String(permissionVal).toLowerCase();
return val === '1' || val === 'true' || val === 'iya' || val === 'yes';
return val === '1' || val === 'true' || val === 'ya' || val === 'yes';
}

View File

@ -930,7 +930,7 @@ document.addEventListener('DOMContentLoaded', () => {
id="perm_yes_${colCount}"
value="1"
required>
<label class="form-check-label" for="perm_yes_${colCount}">Iya</label>
<label class="form-check-label" for="perm_yes_${colCount}">Ya</label>
</div>
<div class="form-check mt-1">
@ -1123,5 +1123,5 @@ document.addEventListener('click', function(e){
function isPublic(permissionVal){
if(permissionVal === null || permissionVal === undefined) return false;
const val = String(permissionVal).toLowerCase();
return val === '1' || val === 'true' || val === 'iya' || val === 'yes';
return val === '1' || val === 'true' || val === 'ya' || val === 'yes';
}

View File

@ -165,7 +165,7 @@
function isPublic(permissionVal){
if(permissionVal === null || permissionVal === undefined) return false;
const val = String(permissionVal).toLowerCase();
return val === '1' || val === 'true' || val === 'iya' || val === 'yes';
return val === '1' || val === 'true' || val === 'ya' || val === 'yes';
}
let currentFile = null;

View File

@ -66,6 +66,7 @@
</span>
</div>
<!-- Tambah Dokumen -->
@if(!Auth::guard('admin')->check())
<button
type="button"
class="btn btn-success btn-sm"
@ -75,6 +76,7 @@
<i class="ti ti-plus me-1"></i>
Tambah Dokumen
</button>
@endif
</div>
</div>
<div class="d-flex flex-column flex-md-row align-items-md-center gap-2 mb-3">
@ -759,7 +761,7 @@
id="perm_yes_${colCount}"
value="1"
required>
<label class="form-check-label" for="perm_yes_${colCount}">Iya</label>
<label class="form-check-label" for="perm_yes_${colCount}">Ya</label>
</div>
<div class="form-check mt-1">
<input class="form-check-input"

View File

@ -317,7 +317,7 @@
function isPublic(permissionVal){
if(permissionVal === null || permissionVal === undefined) return false;
const val = String(permissionVal).toLowerCase();
return val === '1' || val === 'true' || val === 'iya' || val === 'yes';
return val === '1' || val === 'true' || val === 'ya' || val === 'yes';
}
function resolveKategoriFlag(item){

View File

@ -93,6 +93,7 @@
</span>
</div>
<!-- Tambah Dokumen -->
@if(!Auth::guard('admin')->check())
<button
type="button"
class="btn btn-success btn-sm"
@ -102,6 +103,7 @@
<i class="ti ti-plus me-1"></i>
Tambah Dokumen
</button>
@endif
</div>
</div>
<div class="d-flex flex-column flex-md-row align-items-md-center gap-2 mb-3">
@ -447,7 +449,7 @@
function isPublic(permissionVal){
if(permissionVal === null || permissionVal === undefined) return false;
const val = String(permissionVal).toLowerCase();
return val === '1' || val === 'true' || val === 'iya' || val === 'yes';
return val === '1' || val === 'true' || val === 'ya' || val === 'yes';
}
function resolveKategoriFlag(item){
@ -1084,7 +1086,7 @@
id="perm_yes_${colCount}"
value="1"
required>
<label class="form-check-label" for="perm_yes_${colCount}">Iya</label>
<label class="form-check-label" for="perm_yes_${colCount}">Ya</label>
</div>
<div class="form-check mt-1">

View File

@ -65,7 +65,7 @@
<div class="form-check">
<input class="form-check-input" type="radio" name="data[0][is_permission]" id="perm_yes" value="1" required>
<label class="form-check-label" for="perm_yes">
Iya
Ya
</label>
</div>
<div class="form-check mt-1">

View File

@ -101,7 +101,7 @@ function fetchRecap(){
}).join('');
tbody.innerHTML = html + `
<tr class="table-light">
<td colspan="4" class="text-end fw-semibold">Total File</td>
<td colspan="3" class="text-end fw-semibold">Total File</td>
<td class="text-center fw-bold">${grandTotal}</td>
</tr>
`;

View File

@ -41,7 +41,7 @@
<span class="hide-menu">Dokumen Umum</span>
</a>
</li>
@if(auth()->user()->dataUser->mappingUnitKerjaPegawai()->where('objectunitkerjapegawaifk', 51)->exists())
@if(Auth::guard('admin')->check() || (Auth::check() && auth()->user()->dataUser->mappingUnitKerjaPegawai()->where('objectunitkerjapegawaifk', 51)->exists()))
<li class="sidebar-item">
<a class="sidebar-link" href="{{ url('/data-akreditasi') }}" aria-expanded="false">
<i class="fa-solid fa-sliders"></i>
@ -51,12 +51,11 @@
@endif
{{-- AKTIVITAS --}}
<li class="nav-small-cap"><span class="hide-menu">Aktivitas</span></li>
@php
$isAtasan = \App\Models\MappingUnitKerjaPegawai::where('statusenabled', true)->where('objectatasanlangsungfk', auth()->user()->objectpegawaifk)->exists();
@endphp
@if($isAtasan)
@if(!Auth::guard('admin')->check())
<li class="sidebar-item">
<a class="sidebar-link d-flex align-items-center justify-content-between"
href="{{ url('/pending-file') }}" aria-expanded="false">
@ -69,7 +68,9 @@
<span class="badge bg-danger rounded-pill d-none" id="pendingCountBadge">0</span>
</a>
</li>
@endif
@else
@if(!Auth::guard('admin')->check())
<li class="sidebar-item">
<a class="sidebar-link d-flex align-items-center justify-content-between"
href="{{ url('/pengajuan-file') }}" aria-expanded="false">
@ -81,6 +82,7 @@
</a>
</li>
@endif
@endif
<li class="sidebar-item">
<a class="sidebar-link d-flex align-items-center justify-content-between"
href="{{ url('/log-activity') }}" aria-expanded="false">
@ -104,6 +106,7 @@
</li> --}}
{{-- MASTER --}}
@if(!Auth::guard('admin')->check())
@if(auth()->user()->dataUser->mappingUnitKerjaPegawai()->where('objectunitkerjapegawaifk', 43)->exists())
<li class="nav-small-cap"><span class="hide-menu">Master</span></li>
@ -144,6 +147,7 @@
</ul>
</li>
@endif
@endif
</ul>
</nav>
</div>

View File

@ -78,7 +78,7 @@
<div class="message-body">
<a href="javascript:void(0)" class="d-flex align-items-center gap-2 dropdown-item">
<i class="ti ti-user fs-6"></i>
<p class="mb-0 fs-3">{{ auth()->user()->namauser }}</p>
<p class="mb-0 fs-3">{{ auth()->user()->namauser ?? 'admin' }}</p>
</a>
<form action="/logout" method="POST">
@csrf

View File

@ -165,7 +165,7 @@ document.addEventListener('DOMContentLoaded', () => {
</tr>
`).join('');
const emptyState = logs.length === 0 ? '<tr><td colspan="4" class="text-center text-muted py-3">Belum ada aktivitas</td></tr>' : '';
const emptyState = logs.length === 0 ? '<tr><td colspan="5" class="text-center text-muted py-3">Belum ada aktivitas</td></tr>' : '';
if(tbody) tbody.innerHTML = logs.length ? rows : emptyState;
if(summaryText){

View File

@ -61,7 +61,7 @@
<div class="border rounded-3 p-2 bg-light">
<div class="form-check">
<input class="form-check-input" type="radio" name="permission_file" id="edit_perm_yes" value="1" required>
<label class="form-check-label" for="edit_perm_yes">Iya</label>
<label class="form-check-label" for="edit_perm_yes">Ya</label>
</div>
<div class="form-check mt-1">
<input class="form-check-input" type="radio" name="permission_file" id="edit_perm_no" value="0" required>

View File

@ -9,7 +9,7 @@ use App\Http\Controllers\LogActivityController;
use App\Http\Controllers\masterPersetujuanController;
use Illuminate\Support\Facades\Route;
Route::middleware(['auth'])->group(function(){
Route::middleware(['auth:admin,web'])->group(function(){
Route::get('/', [DashboardController::class, 'index']);
Route::get('/data-internal', [DashboardController::class, 'dataUnitInternal']);