feat: enhance user invitation mail (#3158)

This commit is contained in:
Alexis Saettler
2019-11-05 01:08:21 +01:00
committed by GitHub
parent ca56ade7ce
commit 735aea5b68
34 changed files with 555 additions and 769 deletions
+3 -63
View File
@@ -9,12 +9,9 @@ use App\Models\Contact\Tag;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use App\Helpers\LocaleHelper;
use App\Helpers\RequestHelper;
use App\Jobs\SendNewUserAlert;
use App\Helpers\TimezoneHelper;
use App\Jobs\ExportAccountAsSQL;
use App\Jobs\AddContactFromVCard;
use App\Jobs\SendInvitationEmail;
use App\Models\Account\ImportJob;
use App\Models\Account\Invitation;
use App\Services\User\EmailChange;
@@ -23,6 +20,7 @@ use App\Exceptions\StripeException;
use Lahaxearnaud\U2f\Models\U2fKey;
use Illuminate\Support\Facades\Auth;
use App\Http\Requests\ImportsRequest;
use App\Notifications\InvitationMail;
use App\Http\Requests\SettingsRequest;
use Illuminate\Support\Facades\Storage;
use LaravelWebauthn\Models\WebauthnKey;
@@ -364,7 +362,7 @@ class SettingsController
return redirect()->back()->withErrors(trans('settings.users_error_email_already_taken'))->withInput();
}
// Has this user been invited already?
// Has this user already been invited?
$invitations = Invitation::where('email', $request->only(['email']))->count();
if ($invitations > 0) {
return redirect()->back()->withErrors(trans('settings.users_error_already_invited'))->withInput();
@@ -381,7 +379,7 @@ class SettingsController
]
);
dispatch(new SendInvitationEmail($invitation));
$invitation->notify((new InvitationMail())->locale(auth()->user()->locale));
auth()->user()->account->update([
'number_of_invitations_sent' => auth()->user()->account->number_of_invitations_sent + 1,
@@ -406,64 +404,6 @@ class SettingsController
->with('success', trans('settings.users_invitation_deleted_confirmation_message'));
}
/**
* Display the specified resource.
*
* @param string $key
*
* @return \Illuminate\View\View|\Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse
*/
public function acceptInvitation($key)
{
if (Auth::check()) {
return redirect()->route('login');
}
Invitation::where('invitation_key', $key)
->firstOrFail();
return view('settings.users.accept', compact('key'));
}
/**
* Store the specified resource.
*
* @param Request $request
* @param string $key
*
* @return null|\Illuminate\Http\RedirectResponse
*/
public function storeAcceptedInvitation(Request $request, $key)
{
$invitation = Invitation::where('invitation_key', $key)
->firstOrFail();
// as a security measure, make sure that the new user provides the email
// of the person who has invited him/her.
if ($request->input('email_security') != $invitation->invitedBy->email) {
return redirect()->back()->withErrors(trans('settings.users_error_email_not_similar'))->withInput();
}
$user = User::createDefault($invitation->account_id,
$request->input('first_name'),
$request->input('last_name'),
$request->input('email'),
$request->input('password'),
RequestHelper::ip()
);
$user->invited_by_user_id = $invitation->invited_by_user_id;
$user->save();
$invitation->delete();
// send me an alert
dispatch(new SendNewUserAlert($user));
if (Auth::attempt(['email' => $user->email, 'password' => $request->input('password')])) {
return redirect()->route('dashboard.index');
}
}
/**
* Delete additional user account.
*