implement browse session system
This commit is contained in:
parent
6e8f115396
commit
a42b9967d9
@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Auth;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Models\DeviceSession;
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
|
||||||
|
class BrowseSessionController extends Controller
|
||||||
|
{
|
||||||
|
public function browseSession()
|
||||||
|
{
|
||||||
|
$user = Auth::user();
|
||||||
|
$device_sessions = DeviceSession::where("user_id", $user->id)->get();
|
||||||
|
return view("auth.browse-session", compact(['device_sessions','user']));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,7 +2,9 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers\Auth;
|
namespace App\Http\Controllers\Auth;
|
||||||
|
|
||||||
|
use Jenssegers\Agent\Agent;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use App\Models\DeviceSession;
|
||||||
use App\Http\Requests\LoginRequest;
|
use App\Http\Requests\LoginRequest;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
@ -29,6 +31,19 @@ class LoginController extends Controller
|
|||||||
|
|
||||||
$request->session()->regenerate();
|
$request->session()->regenerate();
|
||||||
|
|
||||||
|
//browse session
|
||||||
|
$agent = new Agent();
|
||||||
|
$user = Auth::user();
|
||||||
|
|
||||||
|
DeviceSession::create([
|
||||||
|
'user_id' => $user->id,
|
||||||
|
'session_id' => session()->getId(),
|
||||||
|
'browser' => $agent->browser(),
|
||||||
|
'os' => $agent->platform(),
|
||||||
|
'device' => $agent->device(),
|
||||||
|
'is_mobile' => $agent->isMobile()
|
||||||
|
]);
|
||||||
|
|
||||||
return redirect()->route('dashboard')->with("success", "login successfully");
|
return redirect()->route('dashboard')->with("success", "login successfully");
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
return redirect()
|
return redirect()
|
||||||
|
|||||||
@ -3,9 +3,11 @@
|
|||||||
namespace App\Http\Controllers\Auth;
|
namespace App\Http\Controllers\Auth;
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use App\Models\DeviceSession;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Illuminate\Support\Facades\Session;
|
||||||
|
|
||||||
class LogoutController extends Controller
|
class LogoutController extends Controller
|
||||||
{
|
{
|
||||||
@ -21,6 +23,8 @@ class LogoutController extends Controller
|
|||||||
'verify2fa' => 0,
|
'verify2fa' => 0,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
DeviceSession::where('session_id', session()->getId())->delete();
|
||||||
|
|
||||||
Auth::logout();
|
Auth::logout();
|
||||||
|
|
||||||
$request->session()->invalidate();
|
$request->session()->invalidate();
|
||||||
@ -36,8 +40,26 @@ class LogoutController extends Controller
|
|||||||
$request->session()->invalidate();
|
$request->session()->invalidate();
|
||||||
$request->session()->regenerateToken();
|
$request->session()->regenerateToken();
|
||||||
|
|
||||||
|
DeviceSession::where('user_id', $this->user->id)->delete();
|
||||||
|
|
||||||
$this->user->delete();
|
$this->user->delete();
|
||||||
|
|
||||||
return redirect()->route('login')->with('success', 'Your account has been deleted successfully.');
|
return redirect()->route('login')->with('success', 'Your account has been deleted successfully.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function logoutOtherDevice(Request $request)
|
||||||
|
{
|
||||||
|
$currentSessionId = Session::getId();
|
||||||
|
|
||||||
|
DB::table('sessions')
|
||||||
|
->where('user_id', $this->user->id)
|
||||||
|
->where('id', '!=', $currentSessionId)
|
||||||
|
->delete();
|
||||||
|
|
||||||
|
DeviceSession::where('user_id', $this->user->id)
|
||||||
|
->where('session_id', '!=', $currentSessionId)
|
||||||
|
->delete();
|
||||||
|
|
||||||
|
return back()->with('success', 'logout other system successfully');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,9 @@
|
|||||||
namespace App\Http\Controllers\Auth;
|
namespace App\Http\Controllers\Auth;
|
||||||
|
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
|
use Jenssegers\Agent\Agent;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use App\Models\DeviceSession;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Support\Facades\Hash;
|
use Illuminate\Support\Facades\Hash;
|
||||||
@ -27,6 +29,19 @@ class RegisterController extends Controller
|
|||||||
|
|
||||||
Auth::login($user);
|
Auth::login($user);
|
||||||
|
|
||||||
|
//browse session
|
||||||
|
$agent = new Agent();
|
||||||
|
$user = Auth::user();
|
||||||
|
|
||||||
|
DeviceSession::create([
|
||||||
|
'user_id' => $user->id,
|
||||||
|
'session_id' => session()->getId(),
|
||||||
|
'browser' => $agent->browser(),
|
||||||
|
'os' => $agent->platform(),
|
||||||
|
'device' => $agent->device(),
|
||||||
|
'is_mobile' => $agent->isMobile()
|
||||||
|
]);
|
||||||
|
|
||||||
return redirect()->route('dashboard')->with('success', 'register successfully');
|
return redirect()->route('dashboard')->with('success', 'register successfully');
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
return redirect()
|
return redirect()
|
||||||
|
|||||||
12
Web-Application/Manually/app/Models/DeviceSession.php
Normal file
12
Web-Application/Manually/app/Models/DeviceSession.php
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class DeviceSession extends Model
|
||||||
|
{
|
||||||
|
protected $table = "device_sessions";
|
||||||
|
|
||||||
|
protected $fillable = ['user_id', 'session_id', 'browser', 'os', 'device', 'is_mobile'];
|
||||||
|
}
|
||||||
@ -11,6 +11,7 @@
|
|||||||
"require": {
|
"require": {
|
||||||
"php": "^8.2",
|
"php": "^8.2",
|
||||||
"bacon/bacon-qr-code": "^3.0",
|
"bacon/bacon-qr-code": "^3.0",
|
||||||
|
"jenssegers/agent": "^2.6",
|
||||||
"laravel/framework": "^12.0",
|
"laravel/framework": "^12.0",
|
||||||
"laravel/socialite": "^5.20",
|
"laravel/socialite": "^5.20",
|
||||||
"laravel/tinker": "^2.10.1",
|
"laravel/tinker": "^2.10.1",
|
||||||
|
|||||||
199
Web-Application/Manually/composer.lock
generated
199
Web-Application/Manually/composer.lock
generated
@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "7ec9c18ae33503f4d06a9ce3cef2e3cf",
|
"content-hash": "697d12ed7febd693f209d0ab08d7631b",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "bacon/bacon-qr-code",
|
"name": "bacon/bacon-qr-code",
|
||||||
@ -1354,6 +1354,141 @@
|
|||||||
],
|
],
|
||||||
"time": "2025-02-03T10:55:03+00:00"
|
"time": "2025-02-03T10:55:03+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "jaybizzle/crawler-detect",
|
||||||
|
"version": "v1.3.4",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/JayBizzle/Crawler-Detect.git",
|
||||||
|
"reference": "d3b7ff28994e1b0de764ab7412fa269a79634ff3"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/d3b7ff28994e1b0de764ab7412fa269a79634ff3",
|
||||||
|
"reference": "d3b7ff28994e1b0de764ab7412fa269a79634ff3",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.1.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^4.8|^5.5|^6.5|^9.4"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Jaybizzle\\CrawlerDetect\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Mark Beech",
|
||||||
|
"email": "m@rkbee.ch",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "CrawlerDetect is a PHP class for detecting bots/crawlers/spiders via the user agent",
|
||||||
|
"homepage": "https://github.com/JayBizzle/Crawler-Detect/",
|
||||||
|
"keywords": [
|
||||||
|
"crawler",
|
||||||
|
"crawler detect",
|
||||||
|
"crawler detector",
|
||||||
|
"crawlerdetect",
|
||||||
|
"php crawler detect"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/JayBizzle/Crawler-Detect/issues",
|
||||||
|
"source": "https://github.com/JayBizzle/Crawler-Detect/tree/v1.3.4"
|
||||||
|
},
|
||||||
|
"time": "2025-03-05T23:12:10+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jenssegers/agent",
|
||||||
|
"version": "v2.6.4",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/jenssegers/agent.git",
|
||||||
|
"reference": "daa11c43729510b3700bc34d414664966b03bffe"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/jenssegers/agent/zipball/daa11c43729510b3700bc34d414664966b03bffe",
|
||||||
|
"reference": "daa11c43729510b3700bc34d414664966b03bffe",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"jaybizzle/crawler-detect": "^1.2",
|
||||||
|
"mobiledetect/mobiledetectlib": "^2.7.6",
|
||||||
|
"php": ">=5.6"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"php-coveralls/php-coveralls": "^2.1",
|
||||||
|
"phpunit/phpunit": "^5.0|^6.0|^7.0"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"illuminate/support": "Required for laravel service providers"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"laravel": {
|
||||||
|
"aliases": {
|
||||||
|
"Agent": "Jenssegers\\Agent\\Facades\\Agent"
|
||||||
|
},
|
||||||
|
"providers": [
|
||||||
|
"Jenssegers\\Agent\\AgentServiceProvider"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "3.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Jenssegers\\Agent\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Jens Segers",
|
||||||
|
"homepage": "https://jenssegers.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Desktop/mobile user agent parser with support for Laravel, based on Mobiledetect",
|
||||||
|
"homepage": "https://github.com/jenssegers/agent",
|
||||||
|
"keywords": [
|
||||||
|
"Agent",
|
||||||
|
"browser",
|
||||||
|
"desktop",
|
||||||
|
"laravel",
|
||||||
|
"mobile",
|
||||||
|
"platform",
|
||||||
|
"user agent",
|
||||||
|
"useragent"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/jenssegers/agent/issues",
|
||||||
|
"source": "https://github.com/jenssegers/agent/tree/v2.6.4"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/jenssegers",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/jenssegers/agent",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-06-13T08:05:20+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "laravel/framework",
|
"name": "laravel/framework",
|
||||||
"version": "v12.10.0",
|
"version": "v12.10.0",
|
||||||
@ -2590,6 +2725,68 @@
|
|||||||
},
|
},
|
||||||
"time": "2025-04-03T12:16:11+00:00"
|
"time": "2025-04-03T12:16:11+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "mobiledetect/mobiledetectlib",
|
||||||
|
"version": "2.8.45",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/serbanghita/Mobile-Detect.git",
|
||||||
|
"reference": "96aaebcf4f50d3d2692ab81d2c5132e425bca266"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/96aaebcf4f50d3d2692ab81d2c5132e425bca266",
|
||||||
|
"reference": "96aaebcf4f50d3d2692ab81d2c5132e425bca266",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.0.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "~4.8.36"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-0": {
|
||||||
|
"Detection": "namespaced/"
|
||||||
|
},
|
||||||
|
"classmap": [
|
||||||
|
"Mobile_Detect.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Serban Ghita",
|
||||||
|
"email": "serbanghita@gmail.com",
|
||||||
|
"homepage": "http://mobiledetect.net",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.",
|
||||||
|
"homepage": "https://github.com/serbanghita/Mobile-Detect",
|
||||||
|
"keywords": [
|
||||||
|
"detect mobile devices",
|
||||||
|
"mobile",
|
||||||
|
"mobile detect",
|
||||||
|
"mobile detector",
|
||||||
|
"php mobile detect"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/serbanghita/Mobile-Detect/issues",
|
||||||
|
"source": "https://github.com/serbanghita/Mobile-Detect/tree/2.8.45"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/serbanghita",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2023-11-07T21:57:25+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "monolog/monolog",
|
"name": "monolog/monolog",
|
||||||
"version": "3.9.0",
|
"version": "3.9.0",
|
||||||
|
|||||||
@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('device_sessions', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->foreignId('user_id')->constrained()->onDelete('cascade');
|
||||||
|
$table->string('session_id')->nullable()->unique();
|
||||||
|
$table->string('browser')->nullable();
|
||||||
|
$table->string('os')->nullable();
|
||||||
|
$table->string('device')->nullable();
|
||||||
|
$table->boolean('is_mobile')->default(false);
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('device_sessions');
|
||||||
|
}
|
||||||
|
};
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
@extends('layouts.aside')
|
||||||
|
|
||||||
|
@section('main')
|
||||||
|
|
||||||
|
<main class="min-h-screen w-full flex items-center justify-center bg-[#0d1b2a] overflow-auto py-5">
|
||||||
|
<div class="bg-[#1b263b] p-8 rounded-xl shadow-2xl max-w-[800px] w-full transition-all duration-300">
|
||||||
|
|
||||||
|
<h1 class="text-3xl font-semibold text-center text-[#e0e1dd] mb-10">Browse Session</h1>
|
||||||
|
|
||||||
|
@foreach($device_sessions as $session)
|
||||||
|
<div class="bg-[#0d1b2a] text-[#e0e1dd] p-4 my-2 rounded-xl shadow">
|
||||||
|
🖥️ {{ $session->browser }} - {{ $session->os }}
|
||||||
|
<br>
|
||||||
|
🕐 {{ $session->created_at->diffForHumans() }}
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
<form action="{{route('logout.other.device')}}" method="POST" class="mt-8 text-center">
|
||||||
|
@csrf
|
||||||
|
<button type="submit"
|
||||||
|
class="bg-red-600 cursor-pointer hover:bg-red-700 text-white font-semibold px-6 py-2 rounded-lg shadow-md transition duration-300 ease-in-out">
|
||||||
|
Logout Other Devices
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
@endsection
|
||||||
@ -19,7 +19,7 @@
|
|||||||
class="block px-4 py-2 rounded-lg hover:bg-[#415a77] transition">
|
class="block px-4 py-2 rounded-lg hover:bg-[#415a77] transition">
|
||||||
🔐 Change Password
|
🔐 Change Password
|
||||||
</a>
|
</a>
|
||||||
<a href="#" class="block px-4 py-2 rounded-lg hover:bg-[#415a77] transition">
|
<a href="{{route('browse.session')}}" class="block px-4 py-2 rounded-lg hover:bg-[#415a77] transition">
|
||||||
🖥️ Browse Session
|
🖥️ Browse Session
|
||||||
</a>
|
</a>
|
||||||
</nav>
|
</nav>
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\Http\Controllers\Auth\BrowseSessionController;
|
||||||
use App\Http\Controllers\Auth\SocialLoginController;
|
use App\Http\Controllers\Auth\SocialLoginController;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
use Laravel\Socialite\Facades\Socialite;
|
use Laravel\Socialite\Facades\Socialite;
|
||||||
@ -27,6 +28,7 @@ Route::group(['middleware' => 'auth'], function () {
|
|||||||
|
|
||||||
Route::post('logout', action: [LogoutController::class, 'logout'])->name('logout');
|
Route::post('logout', action: [LogoutController::class, 'logout'])->name('logout');
|
||||||
Route::post('delete-account', action: [LogoutController::class, 'deleteAccount'])->name('delete.account');
|
Route::post('delete-account', action: [LogoutController::class, 'deleteAccount'])->name('delete.account');
|
||||||
|
Route::post('logout-other-device', [LogoutController::class, 'logoutOtherDevice'])->name('logout.other.device');
|
||||||
|
|
||||||
//verify mail
|
//verify mail
|
||||||
Route::post('email/verification-notification', [MailController::class, 'notification'])->name('verification.send');
|
Route::post('email/verification-notification', [MailController::class, 'notification'])->name('verification.send');
|
||||||
@ -46,6 +48,9 @@ Route::group(['middleware' => 'auth'], function () {
|
|||||||
//change password in profile
|
//change password in profile
|
||||||
Route::get('change-password', [PasswordController::class, 'changePasswordPage'])->name('change.password.show');
|
Route::get('change-password', [PasswordController::class, 'changePasswordPage'])->name('change.password.show');
|
||||||
Route::post('change-password', [PasswordController::class, 'changePassword'])->name('change.password');
|
Route::post('change-password', [PasswordController::class, 'changePassword'])->name('change.password');
|
||||||
|
|
||||||
|
//browse session
|
||||||
|
Route::get('browse-session', [BrowseSessionController::class, 'browseSession'])->name('browse.session');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user