identifier = uuidv4(); $request->ssoProvider = $ssoProvider; $request->used = false; $request->validUntil = (new \DateTime())->modify(sprintf('+%d minutes', self::SSO_REQUEST_DURABILITY)); $request->redirectUrl = $redirectUrl; if ($request->save($sql)) { return $request; } else { return null; } } public function getIdentifier() : string { return $this->identifier; } public function getRedirectUrl() : ?string { return $this->redirectUrl; } public function wasUsed() : bool { return $this->used; } public function isValid() : bool { return !isInPast($this->validUntil); } public function getProvider() : SsoProvider { return $this->ssoProvider; } public function invalidate(SQL $sql) : bool { $this->used = true; return $this->save($sql, ["used"]); } }