Extract password reset process into helper