feat(auth): implement user authentication