2
2
3
3
namespace Illuminate \Validation \Rules ;
4
4
5
- use Egulias \EmailValidator \EmailValidator ;
6
- use Egulias \EmailValidator \Validation \DNSCheckValidation ;
7
- use Egulias \EmailValidator \Validation \Extra \SpoofCheckValidation ;
8
- use Egulias \EmailValidator \Validation \MultipleValidationWithAnd ;
9
- use Egulias \EmailValidator \Validation \NoRFCWarningsValidation ;
10
- use Egulias \EmailValidator \Validation \RFCValidation ;
11
- use Illuminate \Container \Container ;
12
5
use Illuminate \Contracts \Validation \DataAwareRule ;
13
6
use Illuminate \Contracts \Validation \Rule ;
14
7
use Illuminate \Contracts \Validation \ValidatorAwareRule ;
15
8
use Illuminate \Support \Arr ;
16
- use Illuminate \Support \Collection ;
17
9
use Illuminate \Support \Facades \Validator ;
18
10
use Illuminate \Support \Traits \Conditionable ;
19
11
use Illuminate \Support \Traits \Macroable ;
20
- use Illuminate \Validation \Concerns \FilterEmailValidation ;
21
12
use InvalidArgumentException ;
22
13
23
14
class Email implements Rule, DataAwareRule, ValidatorAwareRule
@@ -199,29 +190,19 @@ public function passes($attribute, $value)
199
190
return false ;
200
191
}
201
192
202
- $ emailValidator = Container::getInstance ()->make (EmailValidator::class);
193
+ $ validator = Validator::make (
194
+ $ this ->data ,
195
+ [$ attribute => $ this ->buildValidationRules ()],
196
+ $ this ->validator ->customMessages ,
197
+ $ this ->validator ->customAttributes
198
+ );
203
199
204
- $ passes = $ emailValidator ->isValid ((string ) $ value , new MultipleValidationWithAnd ($ this ->buildValidationRules ()));
205
-
206
- if (! $ passes ) {
207
- $ this ->messages = [trans ('validation.email ' , ['attribute ' => $ attribute ])];
200
+ if ($ validator ->fails ()) {
201
+ $ this ->messages = array_merge ($ this ->messages , $ validator ->messages ()->all ());
208
202
209
203
return false ;
210
204
}
211
205
212
- if ($ this ->customRules ) {
213
- $ validator = Validator::make (
214
- $ this ->data ,
215
- [$ attribute => $ this ->customRules ],
216
- $ this ->validator ->customMessages ,
217
- $ this ->validator ->customAttributes
218
- );
219
-
220
- if ($ validator ->fails ()) {
221
- return $ this ->fail ($ validator ->messages ()->all ());
222
- }
223
- }
224
-
225
206
return true ;
226
207
}
227
208
@@ -235,51 +216,36 @@ protected function buildValidationRules()
235
216
$ rules = [];
236
217
237
218
if ($ this ->rfcCompliant ) {
238
- $ rules [] = new RFCValidation ;
219
+ $ rules [] = ' rfc ' ;
239
220
}
240
221
241
222
if ($ this ->strictRfcCompliant ) {
242
- $ rules [] = new NoRFCWarningsValidation ;
223
+ $ rules [] = ' strict ' ;
243
224
}
244
225
245
226
if ($ this ->validateMxRecord ) {
246
- $ rules [] = new DNSCheckValidation ;
227
+ $ rules [] = ' dns ' ;
247
228
}
248
229
249
230
if ($ this ->preventSpoofing ) {
250
- $ rules [] = new SpoofCheckValidation ;
231
+ $ rules [] = ' spoof ' ;
251
232
}
252
233
253
234
if ($ this ->nativeValidation ) {
254
- $ rules [] = new FilterEmailValidation ;
235
+ $ rules [] = ' filter ' ;
255
236
}
256
237
257
238
if ($ this ->nativeValidationWithUnicodeAllowed ) {
258
- $ rules [] = FilterEmailValidation:: unicode () ;
239
+ $ rules [] = ' filter_unicode ' ;
259
240
}
260
241
261
242
if ($ rules ) {
262
- return $ rules ;
243
+ $ rules = ['email: ' .implode (', ' , $ rules )];
244
+ } else {
245
+ $ rules = ['email ' ];
263
246
}
264
247
265
- return [new RFCValidation ];
266
- }
267
-
268
- /**
269
- * Adds the given failures, and return false.
270
- *
271
- * @param array|string $messages
272
- * @return bool
273
- */
274
- protected function fail ($ messages )
275
- {
276
- $ messages = Collection::wrap ($ messages )
277
- ->map (fn ($ message ) => $ this ->validator ->getTranslator ()->get ($ message ))
278
- ->all ();
279
-
280
- $ this ->messages = array_merge ($ this ->messages , $ messages );
281
-
282
- return false ;
248
+ return array_merge (array_filter ($ rules ), $ this ->customRules );
283
249
}
284
250
285
251
/**
0 commit comments