handle team invitation for non registered user

This commit is contained in:
Čarodej
2022-02-12 11:28:08 +01:00
parent 4498461e70
commit 00c6562719
18 changed files with 216 additions and 51 deletions
+19 -3
View File
@@ -1,17 +1,19 @@
<?php
namespace App\Users\Actions;
use App\Users\Models\User;
use App\Users\DTO\CreateUserData;
use App\Http\Controllers\Controller;
use Domain\Teams\Models\TeamFolderInvitation;
use Domain\Teams\Models\TeamFolderMember;
use Illuminate\Auth\Events\Registered;
class CreateNewUserAction extends Controller
{
public function __construct(
protected AutoSubscribeForMeteredBillingAction $autoSubscribeForMeteredBilling,
) {
}
) {}
/**
* Validate and create a new user.
@@ -39,13 +41,27 @@ class CreateNewUserAction extends Controller
'avatar' => $data->avatar,
]);
// Join to previously accepted team folder invitations
TeamFolderInvitation::where('email', $user->email)
->where('status', 'waiting-for-registration')
->cursor()
->each(function ($invitation) use ($user) {
TeamFolderMember::create([
'user_id' => $user->id,
'parent_id' => $invitation->parent_id,
'permission' => $invitation->permission,
]);
$invitation->accept();
});
// Subscribe user for metered billing
if ($settings['subscription_type'] === 'metered') {
($this->autoSubscribeForMeteredBilling)($user);
}
// Mark as verified if verification is disabled
if (! $data->password || ! intval($settings['user_verification'])) {
if (!$data->password || !intval($settings['user_verification'])) {
$user->markEmailAsVerified();
}
@@ -32,7 +32,7 @@ class RegisterUserRequest extends FormRequest
'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email', new EmailProvider],
'name' => 'required|string|max:255',
'password' => $this->passwordRules(),
'reCaptcha' => [new RequiredIf(get_settings('allowed_recaptcha') == 1), 'string', app(ReCaptchaRules::class)],
'reCaptcha' => [new RequiredIf(get_settings('allowed_recaptcha') == 1), 'string', 'nullable', app(ReCaptchaRules::class)],
];
}
}