sessionStorage = $storageInterface;
}
/**
* Returns the current CSRF token, if none set it will create a new one.
*/
public function getToken(): CsrfToken {
if (!\is_null($this->csrfToken)) {
return $this->csrfToken;
}
if ($this->sessionStorage->hasToken()) {
$value = $this->sessionStorage->getToken();
} else {
$value = $this->tokenGenerator->generateToken();
$this->sessionStorage->setToken($value);
}
$this->csrfToken = new CsrfToken($value);
return $this->csrfToken;
}
/**
* Invalidates any current token and sets a new one.
*/
public function refreshToken(): CsrfToken {
$value = $this->tokenGenerator->generateToken();
$this->sessionStorage->setToken($value);
$this->csrfToken = new CsrfToken($value);
return $this->csrfToken;
}
/**
* Remove the current token from the storage.
*/
public function removeToken(): void {
$this->csrfToken = null;
$this->sessionStorage->removeToken();
}
/**
* Verifies whether the provided token is valid.
*/
public function isTokenValid(CsrfToken $token): bool {
if (!$this->sessionStorage->hasToken()) {
return false;
}
return hash_equals(
$this->sessionStorage->getToken(),
$token->getDecryptedValue()
);
}
}
patch-1
Vaadin 6, 7, 8 is a Java framework for modern Java web applications: https://github.com/vaadin/framework
/* * Copyright 2000-2014 Vaadin Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */packagecom.vaadin.server.communication;importcom.vaadin.server.StreamVariable.StreamingEvent;/** * Abstract base class for StreamingEvent implementations. */@SuppressWarnings("serial")abstractclassAbstractStreamingEventimplementsStreamingEvent{privatefinalStringtype;privatefinalStringfilename;privatefinallongcontentLength;privatefinallongbytesReceived;@OverridepublicfinalStringgetFileName(){returnfilename;}@OverridepublicfinalStringgetMimeType(){returntype;}protectedAbstractStreamingEvent(Stringfilename,Stringtype,longlength,longbytesReceived){this.filename=filename;this.type=type;contentLength=length;this.bytesReceived=bytesReceived;}@OverridepublicfinallonggetContentLength(){returncontentLength;}@OverridepublicfinallonggetBytesReceived(){returnbytesReceived;}}