ValidationServiceProvider.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace Illuminate\Validation;
  3. use Illuminate\Contracts\Support\DeferrableProvider;
  4. use Illuminate\Contracts\Validation\UncompromisedVerifier;
  5. use Illuminate\Http\Client\Factory as HttpFactory;
  6. use Illuminate\Support\ServiceProvider;
  7. class ValidationServiceProvider extends ServiceProvider implements DeferrableProvider
  8. {
  9. /**
  10. * Register the service provider.
  11. *
  12. * @return void
  13. */
  14. public function register()
  15. {
  16. $this->registerPresenceVerifier();
  17. $this->registerUncompromisedVerifier();
  18. $this->registerValidationFactory();
  19. }
  20. /**
  21. * Register the validation factory.
  22. *
  23. * @return void
  24. */
  25. protected function registerValidationFactory()
  26. {
  27. $this->app->singleton('validator', function ($app) {
  28. $validator = new Factory($app['translator'], $app);
  29. // The validation presence verifier is responsible for determining the existence of
  30. // values in a given data collection which is typically a relational database or
  31. // other persistent data stores. It is used to check for "uniqueness" as well.
  32. if (isset($app['db'], $app['validation.presence'])) {
  33. $validator->setPresenceVerifier($app['validation.presence']);
  34. }
  35. return $validator;
  36. });
  37. }
  38. /**
  39. * Register the database presence verifier.
  40. *
  41. * @return void
  42. */
  43. protected function registerPresenceVerifier()
  44. {
  45. $this->app->singleton('validation.presence', function ($app) {
  46. return new DatabasePresenceVerifier($app['db']);
  47. });
  48. }
  49. /**
  50. * Register the uncompromised password verifier.
  51. *
  52. * @return void
  53. */
  54. protected function registerUncompromisedVerifier()
  55. {
  56. $this->app->singleton(UncompromisedVerifier::class, function ($app) {
  57. return new NotPwnedVerifier($app[HttpFactory::class]);
  58. });
  59. }
  60. /**
  61. * Get the services provided by the provider.
  62. *
  63. * @return array
  64. */
  65. public function provides()
  66. {
  67. return ['validator', 'validation.presence', UncompromisedVerifier::class];
  68. }
  69. }