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, 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