diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 5a00afa0ce4b..ff320634ea20 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -623,8 +623,8 @@ class UserController extends BaseController * Detach an existing user to a company. * * @OA\Post( - * path="/api/v1/users/{user}/reconfirm", - * operationId="reconfirmUser", + * path="/api/v1/users/{user}/invite", + * operationId="inviteUser", * tags={"users"}, * summary="Reconfirm an existing user to a company", * description="Reconfirm an existing user from a company", @@ -666,18 +666,10 @@ class UserController extends BaseController * @param User $user * @return \Illuminate\Http\JsonResponse */ - public function reconfirm(ReconfirmUserRequest $request, User $user) + public function invite(ReconfirmUserRequest $request, User $user) { - $user->confirmation_code = $this->createDbHash($user->company()->db); - $user->save(); - $nmo = new NinjaMailerObject; - $nmo->mailable = new NinjaMailer((new VerifyUserObject($user, $user->company()))->build()); - $nmo->company = $user->company(); - $nmo->to_user = $user; - $nmo->settings = $user->company->settings; - - NinjaMailerJob::dispatch($nmo); + $user->service()->invite($user->company()); return response()->json(['message' => ctrans('texts.confirmation_resent')], 200); diff --git a/app/Listeners/SendVerificationNotification.php b/app/Listeners/SendVerificationNotification.php index 1c396454dd1c..a8d4836bbfcf 100644 --- a/app/Listeners/SendVerificationNotification.php +++ b/app/Listeners/SendVerificationNotification.php @@ -46,24 +46,10 @@ class SendVerificationNotification implements ShouldQueue */ public function handle($event) { + MultiDB::setDB($event->company->db); - try { + $event->user->service()->invite($event->company); - $nmo = new NinjaMailerObject; - $nmo->mailable = new NinjaMailer((new VerifyUserObject($event->user, $event->company))->build()); - $nmo->company = $event->company; - $nmo->to_user = $event->user; - $nmo->settings = $event->company->settings; - - NinjaMailerJob::dispatch($nmo); - - // $event->user->notify(new VerifyUser($event->user, $event->company)); - - Ninja::registerNinjaUser($event->user); - - } catch (Exception $e) { - nlog("I couldn't send the email " . $e->getMessage()); - } } } diff --git a/app/Models/User.php b/app/Models/User.php index 52582d0a95ee..bc9a363abbee 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -17,6 +17,7 @@ use App\Jobs\Mail\NinjaMailerObject; use App\Mail\Admin\ResetPasswordObject; use App\Models\Presenters\UserPresenter; use App\Notifications\ResetPasswordNotification; +use App\Services\User\UserService; use App\Utils\Traits\MakesHash; use App\Utils\Traits\UserSessionAttributes; use App\Utils\Traits\UserSettings; @@ -398,4 +399,9 @@ class User extends Authenticatable implements MustVerifyEmail //$this->notify(new ResetPasswordNotification($token)); } + + public function service() :User + { + return new UserService($this); + } } diff --git a/app/Services/User/UserService.php b/app/Services/User/UserService.php new file mode 100644 index 000000000000..25622af04f10 --- /dev/null +++ b/app/Services/User/UserService.php @@ -0,0 +1,52 @@ +user = $user; + } + + public function invite($company) + { + try { + + $nmo = new NinjaMailerO5bject; + $nmo->mailable = new NinjaMailer((new VerifyUserObject($this->user, $company))->build()); + $nmo->company = $company; + $nmo->to_user = $this->user; + $nmo->settings = $company->settings; + + NinjaMailerJob::dispatch($nmo); + + Ninja::registerNinjaUser($this->user); + + } catch (\Exception $e) { + nlog("I couldn't send the verification email " . $e->getMessage()); + } + + return $this->user; + } +} diff --git a/routes/api.php b/routes/api.php index 244683169dfa..45d6d5683b4e 100644 --- a/routes/api.php +++ b/routes/api.php @@ -164,7 +164,7 @@ Route::group(['middleware' => ['api_db', 'token_auth', 'locale'], 'prefix' => 'a Route::delete('users/{user}/detach_from_company', 'UserController@detach')->middleware('password_protected'); Route::post('users/bulk', 'UserController@bulk')->name('users.bulk')->middleware('password_protected'); - Route::post('/user/{user}/reconfirm', 'UserController@reconfirm')->middleware('password_protected'); + Route::post('/users/{user}/invite', 'UserController@invite')->middleware('password_protected'); Route::resource('webhooks', 'WebhookController'); Route::post('webhooks/bulk', 'WebhookController@bulk')->name('webhooks.bulk');