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
|
# File 'app/services/spree_cm_commissioner/orders/jwt_token/verify.rb', line 6
def call(token:)
nonce, jwt_token = token.split('-', 2)
unverified_payload, = JWT.decode(jwt_token, nil, false)
validate_nonce!(unverified_payload['nonce'], nonce)
order = Spree::Order.find_by!(number: unverified_payload['order_number'])
payload, = JWT.decode(
jwt_token,
order.token,
true,
algorithm: 'HS256'
)
success(payload: payload, order: order)
rescue JWT::ExpiredSignature, JWT::DecodeError, JWT::VerificationError, ActiveRecord::RecordNotFound => _e
failure(error: 'Invalid or expired token', status: :forbidden)
end
|