update core : move logs to modules
This commit is contained in:
parent
e7403cb94f
commit
e736b5b6cc
@ -1,120 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\DataTables\Logs;
|
|
||||||
|
|
||||||
use Spatie\Activitylog\Models\Activity;
|
|
||||||
use Yajra\DataTables\Html\Column;
|
|
||||||
use Yajra\DataTables\Services\DataTable;
|
|
||||||
|
|
||||||
class AuditLogsDataTable extends DataTable
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Build DataTable class.
|
|
||||||
*
|
|
||||||
* @param mixed $query Results from query() method.
|
|
||||||
*
|
|
||||||
* @return \Yajra\DataTables\DataTableAbstract
|
|
||||||
*/
|
|
||||||
public function dataTable($query)
|
|
||||||
{
|
|
||||||
return datatables()
|
|
||||||
->eloquent($query)
|
|
||||||
->rawColumns(['description', 'properties', 'action'])
|
|
||||||
->editColumn('id', function (Activity $model) {
|
|
||||||
return $model->id;
|
|
||||||
})
|
|
||||||
->editColumn('subject_id', function (Activity $model) {
|
|
||||||
if (!isset($model->subject)) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($model->subject->name)) {
|
|
||||||
return $model->subject->name;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $model->subject->user()->first()->name;
|
|
||||||
})
|
|
||||||
->editColumn('causer_id', function (Activity $model) {
|
|
||||||
return $model->causer ? $model->causer->name : __('System');
|
|
||||||
})
|
|
||||||
->editColumn('properties', function (Activity $model) {
|
|
||||||
$content = $model->properties;
|
|
||||||
|
|
||||||
return view('pages.log.audit._details', compact('content'));
|
|
||||||
})
|
|
||||||
->editColumn('created_at', function (Activity $model) {
|
|
||||||
return $model->created_at->format('d M, Y H:i:s');
|
|
||||||
})
|
|
||||||
->addColumn('action', function (Activity $model) {
|
|
||||||
return view('pages.log.audit._action-menu', compact('model'));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get query source of dataTable.
|
|
||||||
*
|
|
||||||
* @param Activity $model
|
|
||||||
*
|
|
||||||
* @return \Illuminate\Database\Eloquent\Builder
|
|
||||||
*/
|
|
||||||
public function query(Activity $model)
|
|
||||||
{
|
|
||||||
return $model->newQuery();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Optional method if you want to use html builder.
|
|
||||||
*
|
|
||||||
* @return \Yajra\DataTables\Html\Builder
|
|
||||||
*/
|
|
||||||
public function html()
|
|
||||||
{
|
|
||||||
return $this->builder()
|
|
||||||
->setTableId('audit-log-table')
|
|
||||||
->columns($this->getColumns())
|
|
||||||
->minifiedAjax()
|
|
||||||
->stateSave(true)
|
|
||||||
->orderBy(6)
|
|
||||||
->responsive()
|
|
||||||
->autoWidth(false)
|
|
||||||
->parameters([
|
|
||||||
'scrollX' => true,
|
|
||||||
'drawCallback' => 'function() { KTMenu.createInstances(); }',
|
|
||||||
])
|
|
||||||
->addTableClass('align-middle table-row-dashed fs-6 gy-5');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get columns.
|
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function getColumns()
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
Column::make('id')->title('Log ID'),
|
|
||||||
Column::make('log_name')->title(__('Location')),
|
|
||||||
Column::make('description'),
|
|
||||||
Column::make('subject_type'),
|
|
||||||
Column::make('subject_id')->title(__('Subject')),
|
|
||||||
Column::make('causer_id')->title(__('Causer')),
|
|
||||||
Column::make('created_at'),
|
|
||||||
Column::computed('action')
|
|
||||||
->exportable(false)
|
|
||||||
->printable(false)
|
|
||||||
->addClass('text-center')
|
|
||||||
->responsivePriority(-1),
|
|
||||||
Column::make('properties')->addClass('none'),
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get filename for export.
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
protected function filename() : string
|
|
||||||
{
|
|
||||||
return 'DataLogs_'.date('YmdHis');
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,143 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\DataTables\Logs;
|
|
||||||
|
|
||||||
use Illuminate\Support\Collection;
|
|
||||||
use Illuminate\Support\Str;
|
|
||||||
use Jackiedo\LogReader\Exceptions\UnableToRetrieveLogFilesException;
|
|
||||||
use Jackiedo\LogReader\LogReader;
|
|
||||||
use Yajra\DataTables\Html\Column;
|
|
||||||
use Yajra\DataTables\Services\DataTable;
|
|
||||||
|
|
||||||
class SystemLogsDataTable extends DataTable
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Build DataTable class.
|
|
||||||
*
|
|
||||||
* @param mixed $query Results from query() method.
|
|
||||||
*
|
|
||||||
* @return \Yajra\DataTables\DataTableAbstract
|
|
||||||
*/
|
|
||||||
public function dataTable($query)
|
|
||||||
{
|
|
||||||
return datatables()
|
|
||||||
->collection($query)
|
|
||||||
->rawColumns(['action', 'level'])
|
|
||||||
->editColumn('id', function (Collection $model) {
|
|
||||||
return Str::limit($model->get('id'), 5, '');
|
|
||||||
})
|
|
||||||
->editColumn('file_path', function (Collection $model) {
|
|
||||||
return Str::limit($model->get('file_path'));
|
|
||||||
})
|
|
||||||
->editColumn('message', function (Collection $model) {
|
|
||||||
return Str::limit($model->get('context')->message, 95);
|
|
||||||
})
|
|
||||||
->editColumn('date', function (Collection $model) {
|
|
||||||
return $model->get('date')->format('d M, Y H:i:s');
|
|
||||||
})
|
|
||||||
->editColumn('level', function (Collection $model) {
|
|
||||||
$styles = [
|
|
||||||
'emergency' => 'danger',
|
|
||||||
'alert' => 'warning',
|
|
||||||
'critical' => 'danger',
|
|
||||||
'error' => 'danger',
|
|
||||||
'warning' => 'warning',
|
|
||||||
'notice' => 'success',
|
|
||||||
'info' => 'info',
|
|
||||||
'debug' => 'primary',
|
|
||||||
];
|
|
||||||
$style = 'info';
|
|
||||||
if (isset($styles[$model->get('level')])) {
|
|
||||||
$style = $styles[$model->get('level')];
|
|
||||||
}
|
|
||||||
$value = $model->get('level');
|
|
||||||
|
|
||||||
return '<div class="badge badge-light-'.$style.' fw-bolder">'.$value.'</div>';
|
|
||||||
})
|
|
||||||
->editColumn('context', function (Collection $model) {
|
|
||||||
$content = $model->get('context');
|
|
||||||
|
|
||||||
return view('pages.log.system._details', compact('content'));
|
|
||||||
})
|
|
||||||
->addColumn('action', function (Collection $model) {
|
|
||||||
return view('pages.log.system._action-menu', compact('model'));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get query source of dataTable.
|
|
||||||
*
|
|
||||||
* @param LogReader $model
|
|
||||||
*
|
|
||||||
* @return Collection
|
|
||||||
*/
|
|
||||||
public function query(LogReader $model)
|
|
||||||
{
|
|
||||||
$data = collect();
|
|
||||||
|
|
||||||
$model->setLogPath(storage_path('logs'));
|
|
||||||
|
|
||||||
try {
|
|
||||||
$data = $model->get()->merge($data);
|
|
||||||
} catch (UnableToRetrieveLogFilesException $exception) {
|
|
||||||
}
|
|
||||||
|
|
||||||
$data = $data->map(function ($a) {
|
|
||||||
return (collect($a))->only(['id', 'date', 'environment', 'level', 'file_path', 'context']);
|
|
||||||
});
|
|
||||||
|
|
||||||
return $data;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Optional method if you want to use html builder.
|
|
||||||
*
|
|
||||||
* @return \Yajra\DataTables\Html\Builder
|
|
||||||
*/
|
|
||||||
public function html()
|
|
||||||
{
|
|
||||||
return $this->builder()
|
|
||||||
->setTableId('system-log-table')
|
|
||||||
->columns($this->getColumns())
|
|
||||||
->minifiedAjax()
|
|
||||||
->stateSave(true)
|
|
||||||
->orderBy(3)
|
|
||||||
->responsive()
|
|
||||||
->autoWidth(false)
|
|
||||||
->parameters(['scrollX' => true])
|
|
||||||
->addTableClass('align-middle table-row-dashed fs-6 gy-5');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get columns.
|
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function getColumns()
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
Column::make('id')->title('Log ID')->width(50),
|
|
||||||
Column::make('message'),
|
|
||||||
Column::make('level'),
|
|
||||||
Column::make('date')->width(130),
|
|
||||||
Column::computed('action')
|
|
||||||
->exportable(false)
|
|
||||||
->printable(false)
|
|
||||||
->addClass('text-center')
|
|
||||||
->responsivePriority(-1),
|
|
||||||
Column::make('environment')->addClass('none'),
|
|
||||||
Column::make('file_path')->title(__('Log Path'))->addClass('none'),
|
|
||||||
Column::make('context')->addClass('none'),
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get filename for export.
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
protected function filename() : string
|
|
||||||
{
|
|
||||||
return 'SystemLogs_'.date('YmdHis');
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,35 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers\Logs;
|
|
||||||
|
|
||||||
use App\DataTables\Logs\AuditLogsDataTable;
|
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use Spatie\Activitylog\Models\Activity;
|
|
||||||
|
|
||||||
class AuditLogsController extends Controller
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Display a listing of the resource.
|
|
||||||
*
|
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function index(AuditLogsDataTable $dataTable)
|
|
||||||
{
|
|
||||||
return $dataTable->render('pages.log.audit.index');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove the specified resource from storage.
|
|
||||||
*
|
|
||||||
* @param int $id
|
|
||||||
*
|
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function destroy($id)
|
|
||||||
{
|
|
||||||
$activity = Activity::find($id);
|
|
||||||
|
|
||||||
// Delete from db
|
|
||||||
$activity->delete();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers\Logs;
|
|
||||||
|
|
||||||
use App\DataTables\Logs\SystemLogsDataTable;
|
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use Jackiedo\LogReader\LogReader;
|
|
||||||
|
|
||||||
class SystemLogsController extends Controller
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Display a listing of the resource.
|
|
||||||
*
|
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function index(SystemLogsDataTable $dataTable)
|
|
||||||
{
|
|
||||||
return $dataTable->render('pages.log.system.index');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove the specified resource from storage.
|
|
||||||
*
|
|
||||||
* @param int $id
|
|
||||||
*
|
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function destroy($id, LogReader $logReader)
|
|
||||||
{
|
|
||||||
return $logReader->find($id)->delete();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,31 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
|
|
||||||
class CreateActivityLogTable extends Migration
|
|
||||||
{
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::connection(config('activitylog.database_connection'))->create(config('activitylog.table_name'), function (Blueprint $table) {
|
|
||||||
$table->bigIncrements('id');
|
|
||||||
$table->string('log_name')->nullable();
|
|
||||||
$table->text('description');
|
|
||||||
$table->nullableMorphs('subject', 'subject');
|
|
||||||
$table->nullableMorphs('causer', 'causer');
|
|
||||||
$table->json('properties')->nullable();
|
|
||||||
$table->timestamps();
|
|
||||||
$table->index('log_name');
|
|
||||||
|
|
||||||
$table->unsignedBigInteger('created_by')->nullable();
|
|
||||||
$table->unsignedBigInteger('updated_by')->nullable();
|
|
||||||
$table->unsignedBigInteger('deleted_by')->nullable();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
Schema::connection(config('activitylog.database_connection'))->dropIfExists(config('activitylog.table_name'));
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
|
|
||||||
class AddEventColumnToActivityLogTable extends Migration
|
|
||||||
{
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::connection(config('activitylog.database_connection'))->table(config('activitylog.table_name'), function (Blueprint $table) {
|
|
||||||
$table->string('event')->nullable()->after('subject_type');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
Schema::connection(config('activitylog.database_connection'))->table(config('activitylog.table_name'), function (Blueprint $table) {
|
|
||||||
$table->dropColumn('event');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
|
|
||||||
class AddBatchUuidColumnToActivityLogTable extends Migration
|
|
||||||
{
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::connection(config('activitylog.database_connection'))->table(config('activitylog.table_name'), function (Blueprint $table) {
|
|
||||||
$table->uuid('batch_uuid')->nullable()->after('properties');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
Schema::connection(config('activitylog.database_connection'))->table(config('activitylog.table_name'), function (Blueprint $table) {
|
|
||||||
$table->dropColumn('batch_uuid');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
<!--begin::Action--->
|
|
||||||
<td class="text-end">
|
|
||||||
<button data-destroy="{{ route('log.audit.destroy', $model->id) }}" class="btn btn-sm btn-light btn-active-light-primary">
|
|
||||||
Delete
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
<!--end::Action--->
|
|
@ -1,3 +0,0 @@
|
|||||||
<textarea readonly cols="130" rows="10">
|
|
||||||
{!! json_encode($content, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) !!}
|
|
||||||
</textarea>
|
|
@ -1,8 +0,0 @@
|
|||||||
<!--begin::Table-->
|
|
||||||
{{ $dataTable->table() }}
|
|
||||||
<!--end::Table-->
|
|
||||||
|
|
||||||
{{-- Inject Scripts --}}
|
|
||||||
@section('scripts')
|
|
||||||
{{ $dataTable->scripts() }}
|
|
||||||
@endsection
|
|
@ -1,13 +0,0 @@
|
|||||||
<x-default-layout>
|
|
||||||
|
|
||||||
<!--begin::Card-->
|
|
||||||
<div class="card">
|
|
||||||
<!--begin::Card body-->
|
|
||||||
<div class="card-body pt-6">
|
|
||||||
@include('pages.log.audit._table')
|
|
||||||
</div>
|
|
||||||
<!--end::Card body-->
|
|
||||||
</div>
|
|
||||||
<!--end::Card-->
|
|
||||||
|
|
||||||
</x-default-layout>
|
|
@ -1,7 +0,0 @@
|
|||||||
<!--begin::Action--->
|
|
||||||
<td class="text-end">
|
|
||||||
<button data-destroy="{{ route('log.system.destroy', $model->get('id')) }}" class="btn btn-sm btn-light btn-active-light-primary">
|
|
||||||
Delete
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
<!--end::Action--->
|
|
@ -1,3 +0,0 @@
|
|||||||
<textarea readonly cols="130" rows="10">
|
|
||||||
{!! json_encode($content, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) !!}
|
|
||||||
</textarea>
|
|
@ -1,8 +0,0 @@
|
|||||||
<!--begin::Table-->
|
|
||||||
{{ $dataTable->table() }}
|
|
||||||
<!--end::Table-->
|
|
||||||
|
|
||||||
{{-- Inject Scripts --}}
|
|
||||||
@section('scripts')
|
|
||||||
{{ $dataTable->scripts() }}
|
|
||||||
@endsection
|
|
@ -1,13 +0,0 @@
|
|||||||
<x-default-layout>
|
|
||||||
|
|
||||||
<!--begin::Card-->
|
|
||||||
<div class="card">
|
|
||||||
<!--begin::Card body-->
|
|
||||||
<div class="card-body pt-6">
|
|
||||||
@include('pages.log.system._table')
|
|
||||||
</div>
|
|
||||||
<!--end::Card body-->
|
|
||||||
</div>
|
|
||||||
<!--end::Card-->
|
|
||||||
|
|
||||||
</x-default-layout>
|
|
@ -42,12 +42,6 @@ Route::group(['middleware' => ['auth', 'verified']], function () {
|
|||||||
Route::resource('permissions', PermissionsController::class);
|
Route::resource('permissions', PermissionsController::class);
|
||||||
Route::resource('users', UsersController::class);
|
Route::resource('users', UsersController::class);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Logs pages
|
|
||||||
Route::prefix('log')->name('log.')->group(function () {
|
|
||||||
Route::resource('system', SystemLogsController::class)->only(['index', 'destroy']);
|
|
||||||
Route::resource('audit', AuditLogsController::class)->only(['index', 'destroy']);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user