49 lines
1.2 KiB
PHP
49 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace Illuminate\Cookie;
|
|
|
|
class CookieValuePrefix
|
|
{
|
|
/**
|
|
* Create a new cookie value prefix for the given cookie name.
|
|
*
|
|
* @param string $cookieName
|
|
* @param string $key
|
|
* @return string
|
|
*/
|
|
public static function create($cookieName, $key)
|
|
{
|
|
return hash_hmac('sha1', $cookieName.'v2', $key).'|';
|
|
}
|
|
|
|
/**
|
|
* Remove the cookie value prefix.
|
|
*
|
|
* @param string $cookieValue
|
|
* @return string
|
|
*/
|
|
public static function remove($cookieValue)
|
|
{
|
|
return substr($cookieValue, 41);
|
|
}
|
|
|
|
/**
|
|
* Validate a cookie value contains a valid prefix. If it does, return the cookie value with the prefix removed. Otherwise, return null.
|
|
*
|
|
* @param string $cookieName
|
|
* @param string $cookieValue
|
|
* @param array $keys
|
|
* @return string|null
|
|
*/
|
|
public static function validate($cookieName, $cookieValue, array $keys)
|
|
{
|
|
foreach ($keys as $key) {
|
|
$hasValidPrefix = str_starts_with($cookieValue, static::create($cookieName, $key));
|
|
|
|
if ($hasValidPrefix) {
|
|
return static::remove($cookieValue);
|
|
}
|
|
}
|
|
}
|
|
}
|