Should I let users be able to mint a ERC20?

I want to give users certain tokens after they do certain actions, much like how Axie Infinity gives users SLP after they win games. Based on SLP's code https://etherscan.io/address/0xCC8Fa225D80b9c7D42F96e9570156c65D6cAAa25#code, my understanding is that if there's no SLP left, the admin (or whoever has the minter role) will mint a certain amount. The key is that no user is given the minter role because there's no minting limit. The users are then given a certain allowance and they can call transferFrom() from the minter address for SLP. Is this correct? Thanks.

It would be better to create a contract, to mint the tokens and deliver them to the users, an intermediary contract and you could create an oracle for when the tokens are used up, mint more automatically