I created a middleware in order to set the timezone based on the auth user timezone set in the database:
<?php
namespace App\Http\Middleware;
use Closure;
class TimezoneMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->user()->guest()) {
$timezone = config('app.timezone');
}
else {
$timezone = $request->user()->timezone;
}
date_default_timezone_set($timezone);
return $next($request);
}
}
I added this class to the bottom of the global HTTP middleware declarations in Kernel.php
.
The problem is that it does not work. When displaying a created_at
field, the time stays exactly the same no matter what I set the user timezone in the database.