(feat) Implement basic user auth flow