building my own custom user authentication