Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F117768942
D4791.1775235770.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
6 KB
Referenced Files
None
Subscribers
None
D4791.1775235770.diff
View Options
diff --git a/src/app/Http/Controllers/API/SignupController.php b/src/app/Http/Controllers/API/SignupController.php
--- a/src/app/Http/Controllers/API/SignupController.php
+++ b/src/app/Http/Controllers/API/SignupController.php
@@ -188,7 +188,7 @@
}
// Validate the verification code
- $code = SignupCode::find($request->code);
+ $code = SignupCode::withEnvTenantContext()->find($request->code);
if (
empty($code)
diff --git a/src/app/Jobs/SignupVerificationEmail.php b/src/app/Jobs/SignupVerificationEmail.php
--- a/src/app/Jobs/SignupVerificationEmail.php
+++ b/src/app/Jobs/SignupVerificationEmail.php
@@ -51,7 +51,7 @@
{
\App\Mail\Helper::sendMail(
new SignupVerification($this->code),
- null,
+ $this->code->tenant_id,
['to' => $this->code->email]
);
}
diff --git a/src/app/Mail/SignupVerification.php b/src/app/Mail/SignupVerification.php
--- a/src/app/Mail/SignupVerification.php
+++ b/src/app/Mail/SignupVerification.php
@@ -3,6 +3,7 @@
namespace App\Mail;
use App\SignupCode;
+use App\Tenant;
use App\Utils;
use Illuminate\Support\Str;
@@ -31,8 +32,10 @@
*/
public function build()
{
+ $appName = Tenant::getConfig($this->code->tenant_id, 'app.name');
$href = Utils::serviceUrl(
- sprintf('/signup/%s-%s', $this->code->short_code, $this->code->code)
+ sprintf('/signup/%s-%s', $this->code->short_code, $this->code->code),
+ $this->code->tenant_id
);
$username = $this->code->first_name ?? '';
@@ -42,7 +45,7 @@
$username = trim($username);
$vars = [
- 'site' => \config('app.name'),
+ 'site' => $appName,
'name' => $username ?: 'User',
];
diff --git a/src/app/SignupCode.php b/src/app/SignupCode.php
--- a/src/app/SignupCode.php
+++ b/src/app/SignupCode.php
@@ -2,6 +2,7 @@
namespace App;
+use App\Traits\BelongsToTenantTrait;
use App\Traits\BelongsToUserTrait;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
@@ -24,12 +25,14 @@
* @property string $short_code Short validation code
* @property \Carbon\Carbon $updated_at The update timestamp
* @property string $submit_ip_address IP address the final signup submit request came from
+ * @property ?int $tenant_id Tenant identifier
* @property string $verify_ip_address IP address the code verify request came from
* @property ?string $voucher Voucher discount code
*/
class SignupCode extends Model
{
use SoftDeletes;
+ use BelongsToTenantTrait;
use BelongsToUserTrait;
public const SHORTCODE_LENGTH = 5;
diff --git a/src/database/migrations/2024_06_13_100000_signup_codes_tenant_id.php b/src/database/migrations/2024_06_13_100000_signup_codes_tenant_id.php
new file mode 100644
--- /dev/null
+++ b/src/database/migrations/2024_06_13_100000_signup_codes_tenant_id.php
@@ -0,0 +1,43 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+return new class extends Migration
+{
+ /**
+ * Run the migrations.
+ *
+ * @return void
+ */
+ public function up()
+ {
+ Schema::table(
+ 'signup_codes',
+ function (Blueprint $table) {
+ $table->bigInteger('tenant_id')->unsigned()->nullable();
+ $table->foreign('tenant_id')->references('id')->on('tenants')->onDelete('set null');
+ }
+ );
+
+ // We could set tenant_id for old records if there's only one tenant in the DB,
+ // but I think nothing will happen if we don't do this.
+ // Leave it to the deployment-specific migrations.
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table(
+ 'signup_codes',
+ function (Blueprint $table) {
+ $table->dropColumn('tenant_id');
+ }
+ );
+ }
+};
diff --git a/src/tests/Feature/Jobs/SignupVerificationEmailTest.php b/src/tests/Feature/Jobs/SignupVerificationEmailTest.php
--- a/src/tests/Feature/Jobs/SignupVerificationEmailTest.php
+++ b/src/tests/Feature/Jobs/SignupVerificationEmailTest.php
@@ -5,13 +5,12 @@
use App\Jobs\SignupVerificationEmail;
use App\Mail\SignupVerification;
use App\SignupCode;
+use App\Tenant;
use Illuminate\Support\Facades\Mail;
use Tests\TestCase;
class SignupVerificationEmailTest extends TestCase
{
- private $code;
-
/**
* {@inheritDoc}
*
@@ -21,11 +20,7 @@
{
parent::setUp();
- $this->code = SignupCode::create([
- 'email' => 'SignupVerificationEmailTest1@' . \config('app.domain'),
- 'first_name' => "Test",
- 'last_name' => "Job"
- ]);
+ SignupCode::where('email', 'SignupVerificationEmailTest1@' . \config('app.domain'))->delete();
}
/**
@@ -35,7 +30,9 @@
*/
public function tearDown(): void
{
- $this->code->delete();
+ SignupCode::where('email', 'SignupVerificationEmailTest1@' . \config('app.domain'))->delete();
+
+ parent::tearDown();
}
/**
@@ -45,20 +42,31 @@
*/
public function testSignupVerificationEmailHandle()
{
+ $tenant = Tenant::orderBy('id', 'desc')->first();
+ $tenant->setSetting('mail.sender.address', 'sender@tenant');
+ $tenant->setSetting('mail.sender.name', 'Tenant');
+
+ $code = new SignupCode();
+ $code->email = 'SignupVerificationEmailTest1@' . \config('app.domain');
+ $code->first_name = 'Test';
+ $code->last_name = 'Job';
+ $code->tenant_id = $tenant->id;
+ $code->save();
+
Mail::fake();
// Assert that no jobs were pushed...
Mail::assertNothingSent();
- $job = new SignupVerificationEmail($this->code);
+ $job = new SignupVerificationEmail($code);
$job->handle();
// Assert the email sending job was pushed once
Mail::assertSent(SignupVerification::class, 1);
// Assert the mail was sent to the code's email
- Mail::assertSent(SignupVerification::class, function ($mail) {
- return $mail->hasTo($this->code->email);
+ Mail::assertSent(SignupVerification::class, function ($mail) use ($code) {
+ return $mail->hasTo($code->email) && $mail->hasFrom('sender@tenant', 'Tenant');
});
}
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Apr 3, 5:02 PM (2 d, 4 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18824958
Default Alt Text
D4791.1775235770.diff (6 KB)
Attached To
Mode
D4791: Add tenant context to signup codes
Attached
Detach File
Event Timeline