Skip to content

Instantly share code, notes, and snippets.

@andrew-serrano
Last active June 5, 2018 18:06
Show Gist options
  • Save andrew-serrano/690120dccd8310664a25a79a794b69ae to your computer and use it in GitHub Desktop.
Save andrew-serrano/690120dccd8310664a25a79a794b69ae to your computer and use it in GitHub Desktop.
Creating a JSON Web Token in Miva
<mvt:comment>
JWT Resource:
https://dev.to/robdwaller/how-to-create-a-json-web-token-using-php-3gml
JWT Debugging:
https://jwt.io/
JWT Example:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImV4YW1wbGVAbWl2YS5jb20iLCJhdXRoX2lkIjoxMjM0fQ.pVbu7ymUbbBwy5kUZGLNkYkgZHALpNbbtS718G-C6wo
</mvt:comment>
<mvt:comment> Header </mvt:comment>
<mvt:assign name="l.jwt_header:typ" value="'JWT'" />
<mvt:assign name="l.jwt_header:alg" value="'HS256'" />
<mvt:comment> Payload </mvt:comment>
<mvt:assign name="l.jwt_payload:email" value="'example@miva.com'" />
<mvt:assign name="l.jwt_payload:auth_id" value="'1234'" />
<mvt:comment> JSON Encode Header & Payload </mvt:comment>
<mvt:do file="g.Module_Root $ 'max-json-encode.mvc'" name="l.header" value="JSON_Encode( l.jwt_header)" />
<mvt:do file="g.Module_Root $ 'max-json-encode.mvc'" name="l.payload" value="JSON_Encode( l.jwt_payload)" />
<mvt:comment> Search/Replace Array </mvt:comment>
<mvt:assign name="l.search_array[1]" value="'+'" />
<mvt:assign name="l.search_array[2]" value="'/'" />
<mvt:assign name="l.search_array[3]" value="'='" />
<mvt:assign name="l.replace_array[1]" value="'-'" />
<mvt:assign name="l.replace_array[2]" value="'_'" />
<mvt:assign name="l.replace_array[3]" value="''" />
<mvt:comment> Base 64 Encode </mvt:comment>
<mvt:assign name="l.header_64" value="glosub_array( crypto_base64_encode( l.header ), l.search_array, l.replace_array )" />
<mvt:assign name="l.payload_64" value="glosub_array( crypto_base64_encode( l.payload ), l.search_array, l.replace_array )" />
<mvt:comment> Create Signature </mvt:comment>
<mvt:assign name="l.buffer" value="l.header_64 $ '.' $ l.payload_64" />
<mvt:assign name="l.null" value="crypto_hmac_sha256( l.buffer, 'insert_secret_key_here', 'binary' , l.signature )" />
<mvt:comment> Base 64 Encode signature </mvt:comment>
<mvt:assign name="l.signature_64" value="glosub_array( crypto_base64_encode( l.signature ), l.search_array, l.replace_array )" />
<mvt:comment> JSON Web Token </mvt:comment>
<mvt:assign name="l.jwt_token" value="l.header_64 $ '.' $ l.payload_64 $ '.' $ l.signature_64" />
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment