done revisi -> review
This commit is contained in:
parent
a48ac75f86
commit
444426c8e5
@ -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")){
|
||||
auth()->login($user);
|
||||
$request->session()->regenerate();
|
||||
return redirect()->intended('/');
|
||||
}
|
||||
return back()->with(['alertError' => 'Gagal Login!']);
|
||||
}
|
||||
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('/');
|
||||
}
|
||||
|
||||
// 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();
|
||||
|
||||
@ -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')
|
||||
|
||||
@ -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
15
app/Models/UserAdmin.php
Normal 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'];
|
||||
}
|
||||
@ -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',
|
||||
|
||||
@ -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' ),
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
/*
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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';
|
||||
}
|
||||
|
||||
@ -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';
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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){
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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>
|
||||
`;
|
||||
|
||||
@ -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,35 +51,37 @@
|
||||
@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)
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link d-flex align-items-center justify-content-between"
|
||||
href="{{ url('/pending-file') }}" aria-expanded="false">
|
||||
@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">
|
||||
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<i class="ti ti-clock"></i>
|
||||
<span class="hide-menu">Persetujuan</span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<i class="ti ti-clock"></i>
|
||||
<span class="hide-menu">Persetujuan</span>
|
||||
</div>
|
||||
|
||||
<span class="badge bg-danger rounded-pill d-none" id="pendingCountBadge">0</span>
|
||||
</a>
|
||||
</li>
|
||||
<span class="badge bg-danger rounded-pill d-none" id="pendingCountBadge">0</span>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
@else
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link d-flex align-items-center justify-content-between"
|
||||
href="{{ url('/pengajuan-file') }}" aria-expanded="false">
|
||||
@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">
|
||||
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<i class="ti ti-clock"></i>
|
||||
<span class="hide-menu">Pengajuan</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<i class="ti ti-clock"></i>
|
||||
<span class="hide-menu">Pengajuan</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
@endif
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link d-flex align-items-center justify-content-between"
|
||||
@ -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>
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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){
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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']);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user