import KJUR from 'jsrsasign' import { useState } from 'react' import { Button, CodeBlock, Input, Select } from 'ui' const JWT_HEADER = { alg: 'HS256', typ: 'JWT' } const now = new Date() const today = new Date(now.getFullYear(), now.getMonth(), now.getDate()) const fiveYears = new Date(now.getFullYear() + 5, now.getMonth(), now.getDate()) const anonToken = ` { "role": "anon", "iss": "supabase", "iat": ${Math.floor(today / 1000)}, "exp": ${Math.floor(fiveYears / 1000)} } `.trim() const serviceToken = ` { "role": "service_role", "iss": "supabase", "iat": ${Math.floor(today / 1000)}, "exp": ${Math.floor(fiveYears / 1000)} } `.trim() export default function JwtGenerator({}) { const secret = [...Array(40)].map(() => Math.random().toString(36)[2]).join('') const [jwtSecret, setJwtSecret] = useState(secret) const [token, setToken] = useState(anonToken) const [signedToken, setSignedToken] = useState('') const handleKeySelection = (e) => { const val = e.target.value if (val == 'service') setToken(serviceToken) else setToken(anonToken) } const generate = () => { const signedJWT = KJUR.jws.JWS.sign(null, JWT_HEADER, token, jwtSecret) setSignedToken(signedJWT) } return (
setJwtSecret(e.target.value)} />
setToken(e.target.value)} />
{signedToken && (

Generated Token:

{signedToken}
)}
) }