user_id; return $session; } return null; } public static function destroySession() { $token = $_COOKIE[SessionHelper::REMEMBER_TOKEN_COOKIE]; UserSession::where('token', $token)->delete(); unset($_COOKIE[SessionHelper::REMEMBER_TOKEN_COOKIE]); setcookie(SessionHelper::REMEMBER_TOKEN_COOKIE, null, time() - 3600); } private static function currentUserFromRememberToken(string $remember_token) { $session = UserSession ::with('user') ->where('token', $remember_token) ->first(); if (!$session) { return null; } $session_expiry = $session->expire_at; $now = new DateTime(); /* Session is expired (diff is negative) */ if ($now->diff($session_expiry)->invert === 1) { $session->delete(); return null; } return $session->user; } private static function currentUserFromPhpSession() { if (empty($_SESSION['user_id'])) { return null; } return User::find(intval($_SESSION['user_id'])); } }