Refactor authentication and authorization

Create a class called AuthRouter that attempts to centralize the
application's concern of Authorization and Authentication.
Add tests for edge cases that mostly deal with ensuring that identity verification occurs