1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
<?php /** * Cart token utility functions. */
declare(strict_types=1);
namespace Automattic\WooCommerce\StoreApi\Utilities;
use Automattic\WooCommerce\StoreApi\Authentication; use Automattic\WooCommerce\StoreApi\Utilities\JsonWebToken;
/** * Cart token utility functions. */ class CartTokenUtils { /** * Generate a cart token. * * @param string $customer_id The customer ID. * @return string */ public static function get_cart_token( string $customer_id ): string { return JsonWebToken::create( array( 'user_id' => $customer_id, 'exp' => self::get_cart_token_expiration(), 'iss' => 'store-api', ), self::get_cart_token_secret() ); }
/** * Validate the cart token. * * @param string $cart_token The cart token. * @return bool */ public static function validate_cart_token( string $cart_token ): bool { return JsonWebToken::validate( $cart_token, self::get_cart_token_secret() ); }
/** * Get the cart token payload. * * @param string $cart_token The cart token. * @return array */ public static function get_cart_token_payload( string $cart_token ): array { $parts = JsonWebToken::get_parts( $cart_token )->payload;
return array( 'user_id' => $parts->user_id ?? '', 'exp' => $parts->exp ?? 0, 'iss' => $parts->iss ?? '', ); }
/** * Get the cart token secret. * * @return string */ private static function get_cart_token_secret(): string { return '@' . wp_salt(); }
/** * Gets the expiration of the cart token. Defaults to 48h. * * @return int */ private static function get_cart_token_expiration(): int { /** * Filters the session expiration. * * @since 5.0.0 * @param int $expiration Expiration in seconds. */ return time() + intval( apply_filters( 'wc_session_expiration', DAY_IN_SECONDS * 2 ) ); } }
|