Level 2
I figured it out. Using the Spark::swap method, I was able to replace the default CreateUser@validator method like so:
Spark::swap('CreateUser@validator', function ($request) {
/**
* @var Validator $validator
*/
$validator = $this->baseValidator($request);
$validator->sometimes('team', 'required|max:255', function ($input) {
return Spark::usesTeams() &&
Spark::onlyTeamPlans() &&
! isset($input['invitation']);
});
$validator->sometimes(['city', 'state'], 'required|max:100', function ($input) {
return Spark::usesTeams() &&
Spark::onlyTeamPlans() &&
! isset($input['invitation']);
});
$validator->sometimes('team_slug', 'required|alpha_dash|max:255|unique:teams,slug', function ($input) {
return Spark::usesTeams() &&
Spark::onlyTeamPlans() &&
Spark::teamsIdentifiedByPath() &&
! isset($input['invitation']);
});
return $validator;
});