Managing Permits
Permits are stored in local storage inside an object called
griptape.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.
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.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)
});
Last modified 1yr ago