diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6ea2a3d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +FROM php:8.3-cli-bookworm + +WORKDIR /var/www/html + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + curl \ + default-mysql-client \ + git \ + libicu-dev \ + libzip-dev \ + unzip \ + && docker-php-ext-install \ + intl \ + pdo_mysql \ + zip \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=composer:2 /usr/bin/composer /usr/bin/composer + +COPY docker/app/php.ini /usr/local/etc/php/conf.d/99-webgis.ini +COPY docker/app/entrypoint.sh /usr/local/bin/webgis-entrypoint + +RUN chmod +x /usr/local/bin/webgis-entrypoint + +ENTRYPOINT ["webgis-entrypoint"] +CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"] diff --git a/app/Http/Controllers/BackupController.php b/app/Http/Controllers/BackupController.php new file mode 100644 index 0000000..36fc3f3 --- /dev/null +++ b/app/Http/Controllers/BackupController.php @@ -0,0 +1,41 @@ + $db['password']]); + + $process->setTimeout(120); + $process->run(); + + if (!$process->isSuccessful()) { + ActivityLog::record('backup', 'Gagal membuat backup database'); + return response()->json(['message' => 'Backup gagal: ' . $process->getErrorOutput()], 500); + } + + ActivityLog::record('backup', 'Mengunduh backup database'); + + $filename = 'backup-webgis-' . now()->format('Ymd-His') . '.sql'; + return response($process->getOutput(), 200, [ + 'Content-Type' => 'application/sql', + 'Content-Disposition' => "attachment; filename=\"{$filename}\"", + ]); + } +} diff --git a/resources/views/admin/users.blade.php b/resources/views/admin/users.blade.php index af8a12b..71d3a42 100644 --- a/resources/views/admin/users.blade.php +++ b/resources/views/admin/users.blade.php @@ -91,9 +91,14 @@
Kelola akun pengguna dan hak akses sistem.
- +