/var/www/html_it/wp-content/plugins/woocommerce/src/StoreApi/Utilities/CartTokenUtils.php


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_tokenstring $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_tokenstring $cart_token ): bool {
        return 
JsonWebToken::validate$cart_tokenself::get_cart_token_secret() );
    }

    
/**
     * Get the cart token payload.
     *
     * @param string $cart_token The cart token.
     * @return array
     */
    
public static function get_cart_token_payloadstring $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() + intvalapply_filters'wc_session_expiration'DAY_IN_SECONDS ) );
    }
}