That is a laundry list of requirements not to mention test cases. I might recommend starting with something simple like the first bullet for #1. There was a thread sometime ago on various ways people were doing this here.
I might also recommend taking a look at perhaps using Flask Login to get started and see where this takes you.