<?php
use App\Helpers\Helper;
use App\Http\Controllers\AffiliateController;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\DetailPaketController;
use App\Http\Controllers\FormLanggananController;
use App\Http\Controllers\ItemPaketController;
use App\Http\Controllers\LanggananController;
use App\Http\Controllers\PaketController;
use App\Http\Controllers\PembayaranAffiliateController;
use App\Http\Controllers\PengaturanAplikasiController;
use App\Http\Controllers\ProdukController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\TutorialController;
use App\Http\Controllers\UserController;
use App\Models\Langganan;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Route;
use Carbon\Carbon;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Log;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/
Route::get('/migrate', function () {
return Artisan::call('migrate');
});
Route::get('/seed', function () {
return Artisan::call('db:seed');
});
Route::get('/optimize', function () {
return Artisan::call('optimize:clear');
});
Route::get('/test-root-db', function () {
try {
$connection = DB::connection('mysql_admin');
$databases = $connection->select('SHOW DATABASES');
$databaseNames = array_map(function ($db) {
return $db->Database;
}, $databases);
return response()->json($databaseNames);
} catch (\Throwable $th) {
return response()->json([
'error' => 'Failed to connect to the database: ' . $th->getMessage()
])->setStatusCode(500);
}
});
Route::get('/create-subdomain', function () {
$domain = request()->input('domain');
$tgl_selesai = request()->input('tgl_selesai');
$result = Helper::createDomain($domain,$tgl_selesai);
return response()->json([
'message' => 'Subdomain created successfully',
'result' => $result,
]);
});
Route::get('/list-subdomain', function () {
$dir = env('DOMAIN_LIST_DIR', base_path('subdomains'));
//get fetch all subdomain directories from $dir and filter if directory contains *.fixmate.id
$subdomains = [];
if (is_dir($dir)) {
$directories = scandir($dir);
foreach ($directories as $directory) {
if ($directory !== '.' && $directory !== '..') {
$subdomainPath = $dir . '/' . $directory;
if (is_dir($subdomainPath) && preg_match('/^[a-z0-9-]+\.fixmate\.id$/', $directory)) {
//read .env file in subdomain directory
$envPath = $subdomainPath . '/.env';
if (file_exists($envPath)) {
$envContent = file_get_contents($envPath);
$envLines = explode("\n", $envContent);
$envData = [];
//get APP_NAME and APP_URL from .env file
foreach ($envLines as $line) {
if (strpos($line, 'APP_NAME=') === 0) {
$envData['APP_NAME'] = trim(substr($line, strlen('APP_NAME=')));
} elseif (strpos($line, 'APP_URL=') === 0) {
$envData['APP_URL'] = trim(substr($line, strlen('APP_URL=')));
}
}
if (isset($envData['APP_NAME']) && isset($envData['APP_URL'])) {
$subdomains[] = [
'name' => $envData['APP_NAME'],
'url' => $envData['APP_URL'],
'directory' => $directory,
];
}
} else {
// If .env file does not exist, use the directory name as APP_NAME and assume a default APP_URL
$subdomains[] = [
'name' => $directory,
'url' => 'https://' . $directory . '.fixmate.id',
'directory' => $directory,
];
}
}
}
}
}
return response()->json(array_values($subdomains));
});
Route::get('/test-email', function () {
try {
Mail::raw('Ini adalah isi email percobaan.', function ($message) {
$message->to(request()->email)
->subject('Email Percobaan dari Laravel');
});
return 'Email berhasil dikirim!';
} catch (\Exception $e) {
return 'Gagal mengirim email: ' . $e->getMessage();
}
});
// outside route
Route::get('/', function () {
return view('Auth.login');
});
Route::resource('formLangganan', FormLanggananController::class);
Route::get('/formLangganan/getAffiliate/{code}', [FormLanggananController::class, 'getAffiliate'])->name('formLangganan.getAffiliate');
//reset password
Route::middleware(['guest'])->group(function () {
Route::get('/forgot-password', [\App\Http\Controllers\ForgotPasswordController::class, 'index'])->name('forgot.password');
Route::post('/forgot-password', [\App\Http\Controllers\ForgotPasswordController::class, 'forgotPassword'])->name('forgot.password.action');
Route::get('/reset-password/{token}', [\App\Http\Controllers\ForgotPasswordController::class, 'forgetPasswordForm'])->name('password.reset');
Route::post('/reset-password', [\App\Http\Controllers\ForgotPasswordController::class, 'forgetPasswordReset'])->name('reset.password.action');
});
// error route
Route::get('/error/500', function () {
return view('Component.error500');
})->name('error.500');
// auth controller
Route::controller(AuthController::class)->group(function () {
Route::get('/login/page', 'login')->name('login.page');
Route::get('/registrasi/page', 'registrasiPage')->name('registrasi.page');
Route::post('/registrasiAction', 'registrasi')->name('registrasi.action');
Route::post('/loginAction', 'loginAction')->name('login.action');
Route::post('/logout', 'logout')->name('logout');
});
// Auth route
Route::middleware(['auth'])->group(function () {
Route::get('/check-created-domain', [LanggananController::class, 'statusDomain'])->name('check.created.domain');
// all role access
// dashboard
Route::get('/dashboard', [DashboardController::class, 'dashboard'])->name('dashboard');
Route::get('/paket/Kelas/pilih', [LanggananController::class, 'indexFrontClass'])->name('paket.pilih.kelas');
Route::get('/paket/Aplikasi/pilih', [LanggananController::class, 'indexFrontApp'])->name('paket.pilih.aplikasi');
Route::post('user/langganan', [LanggananController::class, 'userLangganan'])->name('user.langganan');
// role:user access
// profile user
Route::resource('affiliate', AffiliateController::class);
Route::resource('profile', ProfileController::class);
// generate nota
Route::get('/langananan/nota-pdf/{id}', [LanggananController::class, 'generateNota']);
Route::resource('pembayaran-affiliate', PembayaranAffiliateController::class);
// role:admin and operator access
Route::middleware(['role:admin,operator'])->group(function () {
// usercontroll
Route::resource('pengguna', UserController::class);
Route::get('/getUser', [UserController::class, 'getUser']);
Route::resource('/itemPaket', ItemPaketController::class);
Route::resource("tutorial", TutorialController::class);
Route::resource('/produk', ProdukController::class);
Route::get('/getProduk', [ProdukController::class, 'getProduk']);
Route::resource('/paket', PaketController::class);
Route::get('/getPaket', [PaketController::class, 'getPaket']);
Route::get('/getTotal/{id}', [PaketController::class, 'getTotal']);
Route::get('/paket/detail/{id}', [PaketController::class, 'detailPaket'])->name('detailPaket');
Route::resource('/itemPaket', ItemPaketController::class);
Route::get('/getItemPaket', [ItemPaketController::class, 'getItemPaket']);
Route::resource('/langganan', LanggananController::class);
Route::get('/getLangganan', [LanggananController::class, 'getLangganan']);
Route::post('langganan/aktifasi/{id}', [LanggananController::class, 'aktifasi'])->name('langganan.aktifasi');
Route::resource('/detailPaket', DetailPaketController::class);
Route::get('/getDetailPaket/{id}', [DetailPaketController::class, 'getDetail']);
Route::resource('/pengaturanAplikasi', PengaturanAplikasiController::class);
});
});
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]