https://blog.soshace.com/react-user-login-authentication-using-usecontext-and-usereducer/