Griptape.js
Search
K

Managing Permits

Permits are stored in local storage inside an object calledgriptape.js
A permit is a free authentication message from a certain public address, like a wallet signature, permits are stored locally so you don't need to re-generate a permit.

Add a permit

To create a permit, we must first import in our application permitManager from @stakeordie/griptape.js.
import { permitManager } from '@stakeordie/griptape.js';
Next, we're going to use the permitManager for this we use the add function, to which we're going to pass our contract and a permissions array.
await permitManager.add(myContract, ["balance"]);
You can notice that within the createPermit function we are also using permitManager.get() this function returns a boolean indicating whether or not this account has a permit. In this case it already has it and we add it to the setIsPermit variable.

Use a permit with the contracts API

To learn more about contract definitions, click here.
Here is an example of how to use a permit in our contract definition, first we must import the APIs thet we require.
import {
createContract,
snip20Def,
extendContract
} from '@stakeordie/griptape.js';
Now we create myContract_permit object, where we add the query called getBalance wich receives a permit object and returns in this case the query and the permit.
const myContract_permit = {
queries: {
getBalance({ permit }) {
const query = { balance: {} }
return {
with_permit: { query, permit }
}
}
}
}
Finally we export and extend our contract.
export const sscrt = createContract({
at: 'secret18vd8fpwxzck93qlwghaj6arh4p7c5n8978vsyg',
definition: extendContract(snip20Def, myContract_permit)
});