diff --git a/app/Http/Controllers/LoggingController.php b/app/Http/Controllers/LoggingController.php
index f59421a..4204458 100644
--- a/app/Http/Controllers/LoggingController.php
+++ b/app/Http/Controllers/LoggingController.php
@@ -3,11 +3,11 @@
namespace App\Http\Controllers;
use App\Http\Requests\DataTableRequest;
-use App\Models\Login;
+use App\Models\Logging;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use Inertia\Inertia;
-
+use Illuminate\Support\Facades\Log;
class LoggingController extends Controller
{
/**
@@ -26,22 +26,10 @@ class LoggingController extends Controller
{
$request->validated();
- return Logging::join('users', 'login_activities.user_id', '=', 'users.id')
- ->where(function (Builder $query) use ($request) {
- $search = '%' . $request->search . '%';
+ $rec = Logging::today()->select(['*'])->paginate($request->per_page ?: 30);
- $query->where('users.name', 'like', $search)
- ->orWhere('users.username', 'like', $search)
- ->orWhere('login_activities.ip_address', 'like', $search)
- ->orWhere('login_activities.browser', 'like', $search)
- ->orWhere('login_activities.platform', 'like', $search)
- ->orWhere('login_activities.created_at', 'like', $search);
- })
- ->when(!$request->user()->hasRole('superuser'), function (Builder $query) use ($request) {
- $query->where('users.id', $request->user()->id);
- })
- ->select(['users.*', 'login_activities.*'])
- ->orderBy($request->input('order.key') ?: 'login_activities.created_at', $request->input('order.dir') ?: 'desc')
- ->paginate($request->per_page ?: 10);
+ Log::info("message",["rec" => $rec]);
+
+ return $rec;
}
}
diff --git a/app/Http/Controllers/ProductsCompareController.php b/app/Http/Controllers/ProductsCompareController.php
index 66cda73..acecf51 100644
--- a/app/Http/Controllers/ProductsCompareController.php
+++ b/app/Http/Controllers/ProductsCompareController.php
@@ -25,8 +25,9 @@ class ProductsCompareController extends Controller
$countries = $request->input("countries");
$online = $request->input("online");
$text = $request->input("text");
+ $country = $request->input("country");
- Log::channel('db')->info("{codes} {countries} {online} {text} {ip} {referer}", ["codes" => $codes, "countries" => $countries, "online" => $online, "text" => $text, "ip" => $request->ip(), $request->headers->get('referer')]);
+ Log::channel('db')->info("{codes} {countries} {country} {online} {text} {ip} {referer}", ["codes" => $codes, "countries" => $countries, "country" => $country, "online" => $online, "text" => $text, "ip" => $request->ip(), $request->headers->get('referer')]);
$codes = collect($codes);
$countries = collect($countries);
diff --git a/app/Models/Logging.php b/app/Models/Logging.php
new file mode 100644
index 0000000..abeba09
--- /dev/null
+++ b/app/Models/Logging.php
@@ -0,0 +1,21 @@
+whereDate('logged_at',Carbon::today());
+ }
+}
diff --git a/composer.json b/composer.json
index f3dd15c..3b96efa 100644
--- a/composer.json
+++ b/composer.json
@@ -6,6 +6,7 @@
"license": "MIT",
"require": {
"php": "^8.0.2",
+ "alfrasc/laravel-matomo-tracker": "^1.0",
"beyondcode/laravel-websockets": "^1.13",
"guzzlehttp/guzzle": "^7.2",
"hisorange/browser-detect": "^4.5",
diff --git a/composer.lock b/composer.lock
index 4dfeda7..951777e 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,73 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "31ac3d5515d95b8df2c3e650f681dfe2",
+ "content-hash": "932b0270f36b70f4585461c8c5e49167",
"packages": [
+ {
+ "name": "alfrasc/laravel-matomo-tracker",
+ "version": "v1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/alfrasc/laravel-matomo-tracker.git",
+ "reference": "dd9e82ceb6388ea5f5b80eba28d1d99a17c68305"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/alfrasc/laravel-matomo-tracker/zipball/dd9e82ceb6388ea5f5b80eba28d1d99a17c68305",
+ "reference": "dd9e82ceb6388ea5f5b80eba28d1d99a17c68305",
+ "shasum": ""
+ },
+ "require": {
+ "matomo/matomo-php-tracker": "^3.0.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.1",
+ "orchestra/testbench": "~3.0",
+ "phpunit/phpunit": "~7.0",
+ "sempro/phpunit-pretty-print": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Alfrasc\\MatomoTracker\\LaravelMatomoTrackerServiceProvider"
+ ],
+ "aliases": {
+ "LaravelMatomoTracker": "Alfrasc\\MatomoTracker\\Facades\\LaravelMatomoTracker"
+ }
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Alfrasc\\MatomoTracker\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Alexander Schmidhuber",
+ "email": "alexander.schmidhuber@gmail.com",
+ "homepage": "https://schmidhuber.co.at"
+ }
+ ],
+ "description": "A Laravel facade/wrapper for the matomo/matomo-php-tracker for server side Matomo tracking.",
+ "homepage": "https://github.com/alfrasc/matomotracker",
+ "keywords": [
+ "Matomo PHP Tracker",
+ "Piwik PHP Tracker",
+ "laravel",
+ "piwik",
+ "server side tracking"
+ ],
+ "support": {
+ "issues": "https://github.com/alfrasc/laravel-matomo-tracker/issues",
+ "source": "https://github.com/alfrasc/laravel-matomo-tracker/tree/v1.0.0"
+ },
+ "time": "2021-11-18T11:36:18+00:00"
+ },
{
"name": "bacon/bacon-qr-code",
"version": "2.0.8",
@@ -3465,6 +3530,62 @@
},
"time": "2024-02-16T16:26:57+00:00"
},
+ {
+ "name": "matomo/matomo-php-tracker",
+ "version": "3.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/matomo-org/matomo-php-tracker.git",
+ "reference": "c9e7816d63ddf99bffb1414cfbe45f4c4edf1d4b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/matomo-org/matomo-php-tracker/zipball/c9e7816d63ddf99bffb1414cfbe45f4c4edf1d4b",
+ "reference": "c9e7816d63ddf99bffb1414cfbe45f4c4edf1d4b",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": "^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-curl": "Using this extension to issue the HTTPS request to Matomo"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "."
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "The Matomo Team",
+ "email": "hello@matomo.org",
+ "homepage": "https://matomo.org/team/"
+ }
+ ],
+ "description": "PHP Client for Matomo Analytics Tracking API",
+ "homepage": "https://matomo.org",
+ "keywords": [
+ "analytics",
+ "matomo",
+ "piwik",
+ "tracker"
+ ],
+ "support": {
+ "forum": "https://forum.matomo.org/",
+ "issues": "https://github.com/matomo-org/matomo-php-tracker/issues",
+ "source": "https://github.com/matomo-org/matomo-php-tracker"
+ },
+ "time": "2023-03-24T15:16:22+00:00"
+ },
{
"name": "mobiledetect/mobiledetectlib",
"version": "2.8.45",
diff --git a/config/matomotracker.php b/config/matomotracker.php
new file mode 100644
index 0000000..929ed3e
--- /dev/null
+++ b/config/matomotracker.php
@@ -0,0 +1,29 @@
+ env('MATOMO_URL', 'https://matomo.soson.eu'),
+
+ /**
+ * The id of the site that should be tracked
+ */
+ 'idSite' => env('MATOMO_SITE_ID', 3),
+
+ /**
+ * The auth token of your user
+ */
+ 'tokenAuth' => env('MATOMO_AUTH_TOKEN', ''),
+
+ /**
+ * For queuing the tracking you can use custom queue names. Use 'default' if you want to run the queued items within the standard queue.
+ */
+ 'queue' => env('MATOMO_QUEUE', 'matomotracker'),
+
+ /**
+ * Optionally set a custom queue connection. Laravel defaults to "sync".
+ */
+ 'queueConnection' => env('MATOMO_QUEUE_CONNECTION', 'default'),
+];
diff --git a/lang/id.json b/lang/id.json
index a723e6b..2b5896c 100644
--- a/lang/id.json
+++ b/lang/id.json
@@ -137,5 +137,6 @@
"error: request failed with status code 419": "Error: Request failed with status code 419",
"error: network error": "Error: Network Error",
"error: ziggy error: route 'products.count' is not in the route list.": "Error: Ziggy error: route 'products.count' is not in the route list.",
- "doc": "Doc"
+ "doc": "Doc",
+ "firefox 125": "Firefox 125"
}
\ No newline at end of file
diff --git a/package.json b/package.json
index f9788a2..86579db 100644
--- a/package.json
+++ b/package.json
@@ -21,6 +21,7 @@
},
"dependencies": {
"@coreui/vue": "^4.10.2",
+ "@inertiajs/vue3": "^1.0.15",
"@vueform/multiselect": "^2.5.1",
"flag-icons": "^7.2.0",
"flowbite": "^2.1.1",
diff --git a/resources/adminer/plugins/.gitignore b/resources/adminer/plugins/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/resources/js/Layouts/GuestLayout.vue b/resources/js/Layouts/GuestLayout.vue
index 2488e6c..2d7b56a 100644
--- a/resources/js/Layouts/GuestLayout.vue
+++ b/resources/js/Layouts/GuestLayout.vue
@@ -21,6 +21,10 @@ import {
FwbFooterLinkGroup,
} from 'flowbite-vue';
+import { Link, usePage } from '@inertiajs/vue3'
+
+const isAuth = computed(() => page.props.auth.user)
+
import Multiselect from "vue-multiselect";
import { settingsStore } from '../settingsStore.js';
const menu = ref([])
@@ -33,6 +37,7 @@ const currencyHash = ref([])
const ccountry = ref([])
+
const ccountry_list = computed(() => {
let computed_list = settingsStore.ccountry_list.filter((c) => (c.offline == (settingsStore.online ? 'N' : 'Y')) || settingsStore.online == true);
console.log('COMPUTED_LIST',computed_list);
@@ -221,6 +226,13 @@ onMounted(fetch_menu);
Home
+
+ Profile
+
+
+ Login
+
+
{{ tsettings }}
diff --git a/resources/js/Pages/IkeaRoot.vue b/resources/js/Pages/IkeaRoot.vue
index cda3407..8406b1f 100644
--- a/resources/js/Pages/IkeaRoot.vue
+++ b/resources/js/Pages/IkeaRoot.vue
@@ -404,6 +404,7 @@ const showRow = async (item) => {
currency: settingsStore.currency,
online: settingsStore.online,
text: settingsStore.text,
+ country: settingsStore.country.code,
});
products.value = response.data.products;
diff --git a/resources/js/Pages/Superuser/Activity/Logging.vue b/resources/js/Pages/Superuser/Activity/Logging.vue
new file mode 100644
index 0000000..bc343ab
--- /dev/null
+++ b/resources/js/Pages/Superuser/Activity/Logging.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ ID
+ |
+
+
+ Level Name
+ |
+
+
+ Message
+ |
+
+
+ Context
+ |
+
+
+ Logged At
+ |
+
+
+
+
+
+
+
+
+ |
+ {{ rec.id }}
+ |
+
+
+ {{ rec.level_name }}
+ |
+
+
+ {{ rec.message }}
+ |
+
+
+ {{ rec.context }}
+ |
+
+
+ {{ rec.logged_at }}
+ |
+
+
+
+
+
+
+
+
diff --git a/routes/web.php b/routes/web.php
index 2955bdb..289282d 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -12,6 +12,8 @@ use App\Http\Controllers\FeedbackController;
use App\Http\Controllers\SettingsController;
use App\Http\Controllers\OnlineCompareController;
use App\Http\Controllers\ProductsCountController;
+use App\Http\Controllers\LoggingController;
+
/*
|--------------------------------------------------------------------------
| Web Routes
@@ -54,9 +56,9 @@ Route::get('phpmyinfo', function () {
})->name('phpmyinfo');
Route::middleware(['auth:sanctum', config('jetstream.auth_session'), 'verified'])->group(function () {
- // Route::get('/', function () {
- // return Inertia::render('Dashboard');
- // })->name('dashboard');
+ Route::get('/dashboard', function () {
+ return Inertia::render('Dashboard');
+ })->name('dashboard');
Route::prefix('/superuser')->name('superuser.')->group(function () {
Route::resource('permission', App\Http\Controllers\Superuser\PermissionController::class)->only([
@@ -89,7 +91,8 @@ Route::middleware(['auth:sanctum', config('jetstream.auth_session'), 'verified']
Route::patch('/', 'update')->name('update');
});
- Route::get('/activity/login', [App\Http\Controllers\ActivityController::class, 'login'])->name('activity.login');
+ Route::get('/activity/login', [App\Http\Controllers\ActivityController::class, 'login'])->name('gin');
+ Route::get('/activity/logging', [App\Http\Controllers\LoggingController::class, 'logging'])->name('activity.logging');
Route::get('/user/{user}/menu', fn (App\Models\User $user) => $user->menus())->name('user.menu');
Route::get('/permission/get', [App\Http\Controllers\Superuser\PermissionController::class, 'get'])->name('permission');
@@ -97,6 +100,7 @@ Route::middleware(['auth:sanctum', config('jetstream.auth_session'), 'verified']
Route::post('/role/paginate', [App\Http\Controllers\Superuser\RoleController::class, 'paginate'])->name('role.paginate');
Route::post('/user/paginate', [App\Http\Controllers\Superuser\UserController::class, 'paginate'])->name('user.paginate');
Route::post('/activity/login', [App\Http\Controllers\ActivityController::class, 'logins'])->name('activity.login.post');
+ Route::post('/activity/logging', [App\Http\Controllers\LoggingController::class, 'records'])->name('activity.logging.post');
Route::get('/menu/get', [App\Http\Controllers\Superuser\MenuController::class, 'get'])->name('menu');
});
});