Skip to main content

Permission Controls

Read All Members of All Roles

Get all roles and all the members of each role.

This feature is missing a code snippet or might not be supported yet.

Check the React SDK documentation for more information.

Reach out on Discord for further assistance!
View React SDK Documentation

Read Members of a Role

Get the wallet addresses of a specific role.

const minterAddresses = await contract.roles.get("minter");

This snippet is for v3 of the SDK. Learn how to upgrade.

View in React SDK Documentation

Grant Role

const Component = () => {
const { contract } = useContract("{{contract_address}}");
const {
mutate: grantRole,
isLoading,
error,
} = useGrantRole(contract);

if (error) {
console.error("failed to grant role", error);
}

return (
<button
disabled={isLoading}
onClick={() => grantRole({ role: "admin", address: {{wallet_address}} })}
>
Grant Role
</button>
);
};

This snippet is for v3 of the SDK. Learn how to upgrade.

View in React SDK Documentation

Revoke Role

const Component = () => {
const { contract } = useContract("{{contract_address}}");
const {
mutate: revokeRole,
isLoading,
error,
} = useRevokeRole(contract);

if (error) {
console.error("failed to revoke role", error);
}

return (
<button
disabled={isLoading}
onClick={() => revokeRole({ role: "admin", address: {{wallet_address}} })}
>
Revoke Role
</button>
);
};

This snippet is for v3 of the SDK. Learn how to upgrade.

View in React SDK Documentation

Set All Roles (Overwrite)

Dangerous Operation

This will overwrite all existing permissions on this contract.

THIS INCLUDES YOUR OWN WALLET ADDRESS.

If you revoke your admin permissions, you will not be able to get them back.

Only proceed if you know what you are doing.

const minterAddresses = await contract.roles.get("minter");
await contract.roles.setAll({
minter: []
});
console.log(await contract.roles.get("minter")); // No matter what members had the role before, the new list will be set to []

This snippet is for v3 of the SDK. Learn how to upgrade.

View in React SDK Documentation

Update Roles

  1. Read the current roles from the get function.
  2. Modify the array for the role you want to update.
  3. Call the setAll function with the modified array.
const rolesAndMembers = await contract.roles.getAll();

const updatedRoles = {
...rolesAndMembers,
admin: [...rolesAndMembers.admin, "0x-new-address-here"],
};

await contract.roles.setAll(updatedRoles);