Auth::attempt, потому что у него внутри (вот удивительно!) хэшируются пароли при сравнении.// что за юзер — провайдер или потребитель?
// по какому полю строить связь?
$contract->user()->associate($user);Впрочем, судя по всему, достаточно на другой стороне подобную конструкцию с условиями сделать. Но могут быть проблемы: создали инстанс модели, provider_id и customer_id не заполнили — что в условиях проверять?