Look at chainlinks source code and compile it in remix and click around on stuff. It looks like there are functions where a contract can not only approve transfers but also can increase or decrease a users approval for LINK. It is interesting and I hope to see how it all pans out. I just got very into Link recently.