This is a great answer that describes the ways you can handle user permission levels for inline actions. According to that answer:
This can be done a few ways (ordered from most risky for the user to least):
- The user may allow contract@active to satisfy their @active permission
- The user may set up a sub-permission (for example @xfer), link that as the minimum permission to eosio.token::transfer and allow contract@active to satisfy that permission
- require that the transfer be explicit (not inline) and then use the notification that is sent to your contract to (temporarily) record the details and read/assert/process them in a second action directly to your contract.
However, I was hoping if someone can share some implementation examples of the 3 methods above?
I found this which might be an example on how to achieve method (1) above? Would be good to know how the other 2 methods are achieved.