adding country flags, html meta stuff, web routes file, js components

This commit is contained in:
2022-05-04 13:02:19 -06:00
parent de53c3c882
commit bafa9dba26
24 changed files with 1845 additions and 0 deletions

View File

@ -0,0 +1,86 @@
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use Inertia\Response;
use Jenssegers\Agent\Agent;
use Laravel\Jetstream\Jetstream;
class UserProfileController extends Controller
{
/**
* Show the general profile settings screen.
*
* @since 1.0.0
*
* @param \Illuminate\Http\Request $request
*
* @return \Inertia\Response
*/
public function show(Request $request): Response
{
$this->validateTwoFactorAuthenticationState($request);
return Jetstream::inertia()->render($request, 'Profile/Show', [
'sessions' => $this->sessions($request)->all(),
'timezones' => timezone_identifiers_list(),
]);
}
/**
* Get the current sessions.
*
* @since 1.0.0
*
* @param \Illuminate\Http\Request $request
*
* @return \Illuminate\Support\Collection
*/
public function sessions(Request $request): Collection
{
if (config('session.driver') !== 'database') {
return collect();
}
return collect(
DB::connection(config('session.connection'))->table(config('session.table', 'sessions'))
->where('user_id', $request->user()->getAuthIdentifier())
->orderBy('last_activity', 'desc')
->get()
)->map(function ($session) use ($request) {
$agent = $this->createAgent($session);
return (object) [
'agent' => [
'is_desktop' => $agent->isDesktop(),
'platform' => $agent->platform(),
'browser' => $agent->browser(),
],
'ip_address' => $session->ip_address,
'is_current_device' => $session->id === $request->session()->getId(),
'last_active' => Carbon::createFromTimestamp($session->last_activity)->diffForHumans(),
];
});
}
/**
* Create a new agent instance from the given session.
*
* @since 1.0.0
*
* @param mixed $session
*
* @return \Jenssegers\Agent\Agent
*/
protected function createAgent($session): Agent
{
return tap(new Agent, function ($agent) use ($session) {
$agent->setUserAgent($session->user_agent);
});
}
}