70 lines
2.2 KiB
PHP
70 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Providers;
|
|
|
|
use App\Auth\BcryptPasswordHasher;
|
|
use App\Auth\Clock;
|
|
use App\Auth\PasswordHasher;
|
|
use App\Auth\RandomTokenGenerator;
|
|
use App\Auth\SystemClock;
|
|
use App\Auth\TokenGenerator;
|
|
use App\Email\EmailConfirmationToken\EmailConfirmationTokenRepository;
|
|
use App\Email\Emailer;
|
|
use App\Email\EmailFactory;
|
|
use App\Email\LaravelEmailFactory;
|
|
use App\Email\MailjetMailer;
|
|
use App\User\UseCases\SignupUser\SignupUser;
|
|
use App\User\UserRepository;
|
|
use Illuminate\Contracts\Foundation\Application;
|
|
use Illuminate\Support\ServiceProvider;
|
|
use Mailjet\Client;
|
|
|
|
class AppServiceProvider extends ServiceProvider
|
|
{
|
|
public function register(): void
|
|
{
|
|
$this->app->bind(Clock::class, SystemClock::class);
|
|
$this->app->bind(TokenGenerator::class, RandomTokenGenerator::class);
|
|
$this->app->bind(PasswordHasher::class, BcryptPasswordHasher::class);
|
|
$this->app->bind(Emailer::class, function (Application $app) {
|
|
return new MailjetMailer(
|
|
mailjet: new Client(
|
|
config('services.mailjet.key'),
|
|
config('services.mailjet.secret'),
|
|
true,
|
|
['version' => 'v3.1'],
|
|
),
|
|
fromName: config('mail.from.name'),
|
|
);
|
|
});
|
|
$this->app->bind(
|
|
EmailFactory::class,
|
|
function () {
|
|
return new LaravelEmailFactory(
|
|
confirmationUrlPrefix: config('app.frontend_url')
|
|
.'/confirm-email?token=',
|
|
);
|
|
},
|
|
);
|
|
$this->app->bind(
|
|
SignupUser::class,
|
|
function (Application $app) {
|
|
return new SignupUser(
|
|
userRepo: $app->make(UserRepository::class),
|
|
tokenRepo: $app->make(
|
|
EmailConfirmationTokenRepository::class,
|
|
),
|
|
emailer: $app->make(Emailer::class),
|
|
emailFactory: $app->make(EmailFactory::class),
|
|
clock: $app->make(Clock::class),
|
|
fromAddress: config('mail.from.address'),
|
|
);
|
|
},
|
|
);
|
|
}
|
|
|
|
public function boot(): void
|
|
{
|
|
//
|
|
}
|
|
}
|