E-Invoice - Maintenance notice for normal user except admin

This commit is contained in:
Dillon Ngo
2025-06-26 20:03:24 +08:00
parent 71c7e3ac31
commit 122f65b125
5 changed files with 75 additions and 37 deletions
+1
View File
@@ -80,5 +80,6 @@ class Kernel extends HttpKernel
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'valid.token' => ValidateToken::class,
'token.check' => \App\Http\Middleware\TokenCheckerMiddleware::class,
'admin' => \App\Http\Middleware\EnsureUserIsAdmin::class, //cief todo: 90 - maintenance
];
}
+27
View File
@@ -0,0 +1,27 @@
<?php
namespace App\Http\Middleware;
use App\Classes\ValueObjects\Constants\RoleTypes;
use Closure;
use Illuminate\Http\Request;
use Tymon\JWTAuth\Facades\JWTAuth;
class EnsureUserIsAdmin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
$user = JWTAuth::parseToken()->authenticate();
if(!in_array($user->type, RoleTypes::ADMIN_ROLES)){
return response()->view('errors.503', [], 503);
}
return $next($request);
}
}
+5
View File
@@ -13,6 +13,11 @@ export default {
let statusCode = response.status,
success = response.ok;
// console.log('statusCode: ' + statusCode); //cief todo: 90 - maintenance
if(statusCode == 503){
window.location.href = '/maintenance';
}
if (response.headers.get("content-type") === "application/zip") {
const fileName = response.headers.get('Content-Disposition').split('filename=')[1].replaceAll('"', '');
+29 -28
View File
@@ -26,53 +26,54 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function
Route::post('online_payment/callback', 'Billplz\CallbackBillplzController@callback')->name('online_payment.callback');
Route::group(['middleware' => 'valid.token'], function () {
Route::group(['middleware' => 'admin'], function () { //cief todo: 90 - maintenance
Route::get('/storage/{fileName}/fetch', 'Documents\RenderDocumentController@fileStorageServe')->where(['fileName' => '.*'])->name('storage.document.file');
Route::post('/import/update-debtor/f614e339d7058904a831aad742e24d55', 'Imports\ImportUpdateDebtorController@import')->name('debtor.import');
Route::post('/import/upload-honey-trap', 'Imports\ImportHoneyTrapController@import')->name('honey_trap.upload');
Route::post('/import/upload-import-invoices', 'Imports\ImportStatementInvoiceController@import')->name('import_invoices.upload');
Route::post('/import/upload-import-receipt', 'Imports\ImportStatementReceiptsController@import')->name('import_receipts.upload');
Route::post('/customers/invoices', 'Companies\BulkDownloadCustomerInvoicesController@download')->name('customers.invoices');
Route::post('/supplier/white-form/bulk-download', 'Companies\BulkDownloadSupplierWhiteFormsController@download')->name('suppliers.white_forms');
Route::get('/storage/{fileName}/fetch', 'Documents\RenderDocumentController@fileStorageServe')->where(['fileName' => '.*'])->name('storage.document.file');
Route::post('/import/update-debtor/f614e339d7058904a831aad742e24d55', 'Imports\ImportUpdateDebtorController@import')->name('debtor.import');
Route::post('/import/upload-honey-trap', 'Imports\ImportHoneyTrapController@import')->name('honey_trap.upload');
Route::post('/import/upload-import-invoices', 'Imports\ImportStatementInvoiceController@import')->name('import_invoices.upload');
Route::post('/import/upload-import-receipt', 'Imports\ImportStatementReceiptsController@import')->name('import_receipts.upload');
Route::post('/customers/invoices', 'Companies\BulkDownloadCustomerInvoicesController@download')->name('customers.invoices');
Route::post('/supplier/white-form/bulk-download', 'Companies\BulkDownloadSupplierWhiteFormsController@download')->name('suppliers.white_forms');
require __DIR__ . '/company.php';
require __DIR__ . '/company.php';
require __DIR__ . '/document.php';
require __DIR__ . '/document.php';
require __DIR__ . '/segment.php';
require __DIR__ . '/segment.php';
require __DIR__ . '/segment_constant.php';
require __DIR__ . '/segment_constant.php';
require __DIR__ . '/currency.php';
require __DIR__ . '/currency.php';
require __DIR__ . '/bank.php';
require __DIR__ . '/bank.php';
require __DIR__ . '/booking.php';
require __DIR__ . '/booking.php';
require __DIR__ . '/transaction.php';
require __DIR__ . '/transaction.php';
require __DIR__ . '/crud.php';
require __DIR__ . '/crud.php';
require __DIR__ . '/announcement.php';
require __DIR__ . '/announcement.php';
require __DIR__ . '/billplz.php';
require __DIR__ . '/billplz.php';
require __DIR__ . '/wallet.php';
require __DIR__ . '/wallet.php';
require __DIR__ . '/voucher.php';
require __DIR__ . '/voucher.php';
require __DIR__ . '/accounting.php';
require __DIR__ . '/accounting.php';
require __DIR__ . '/reward.php';
require __DIR__ . '/reward.php';
require __DIR__ . '/milestone.php';
require __DIR__ . '/milestone.php';
require __DIR__ . '/remark.php';
require __DIR__ . '/remark.php';
require __DIR__ . '/job.php';
// require __DIR__ . '/rate.php';
// require __DIR__ . '/receipt.php';
require __DIR__ . '/job.php';
// require __DIR__ . '/rate.php';
// require __DIR__ . '/receipt.php';
});
});
});
+13 -9
View File
@@ -1203,42 +1203,42 @@ Route::get('/show-white-form-transactions-in-date-range/{from_date}/{to_date}',
const fileInput = form.querySelector("input[type=\'file\']");
const files = fileInput.files;
const userToken = localStorage.getItem("user-token");
if (files.length === 0) {
alert("Please select at least one file to upload.");
return;
}
const fileReaders = [];
let totalFiles = files.length;
// Create a promise for each file to read it as Base64
Array.from(files).forEach((file) => {
const reader = new FileReader();
// Create a promise that resolves when the file is read
const fileReadPromise = new Promise((resolve, reject) => {
reader.onload = (event) => {
resolve(event.target.result);
};
reader.onerror = (error) => {
reject(error);
};
reader.readAsDataURL(file); // Read the file as Data URL (Base64)
});
fileReaders.push(fileReadPromise);
});
// Wait for all files to be read
Promise.all(fileReaders)
.then((fileData) => {
const payload = {
files: fileData, // Array of objects with name, type, and Base64 content
};
// Send the payload as JSON
return fetch(`/api/v1/transactions/${billId}/bill/verification`, {
method: "POST",
@@ -1364,3 +1364,7 @@ Route::get('/site.webmanifest', function () {
Route::get('/test-test', function () {
dd('test-test');
});
Route::get('/maintenance', function () {
return response()->view('errors.503', [], 503);
});