I can think of 1 possible solution.
In your user Entity (or whichever entity that has specialised from user) keep a boolean terms accepted.
When the user logs in you check against it. If false show the popup and on click or accept, for the current user update the DB.
is this something you tried already?
Setup a Boolean value to that attribute when the page shows using micro flow check the condition in decision whether the Boolean attribute is true or false.if false show the popup page and change the object to make the attribute value as true then commit. else continues your flow , this will work because it will be saved with the user in the db.
i hope it w