# Access Control

## Ownable Access Control

We have combined OpenZeppelin's Ownable contract with role based access mechanisms to make a simple, effective ownership model.

{% embed url="<https://github.com/Transient-Labs/tl-sol-tools/blob/main/src/access/OwnableAccessControl.sol>" %}

## Roles

TL Creator Contracts have two roles defined

<details>

<summary>ADMIN_ROLE</summary>

This role is able to mint tokens, add `APPROVED_MINT_CONTRACT` roles, propose/push token metadata updates, and add creator stories on behalf of the contract owner.

</details>

<details>

<summary>APPROVED_MINT_CONTRACT</summary>

This role is allowed to mint using the `externalMint` functions in `ERC721TL` and `ERC1155TL`.

</details>
