Feat: Recording Legal Acceptance
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
/**
|
||||
* Which terms/privacy policy version an account was created under — the
|
||||
* storefront login page shows a notice ("By continuing, you accept the
|
||||
* Terms of Use and have read the Privacy Policy") that a new signup
|
||||
* implicitly agrees to just by requesting an OTP code, so this is
|
||||
* recorded the moment Modules\Core\Auth\Services\UserOtpService::
|
||||
* generateAndSend()'s firstOrCreate() actually creates the row — never
|
||||
* for an existing user, whose original acceptance (whatever version was
|
||||
* live at the time) must not be silently overwritten by a later config
|
||||
* value. Nullable: every user created before this migration has none of
|
||||
* the three, which is the honest answer ("we don't know what they saw"),
|
||||
* not something to backfill with today's config values.
|
||||
*/
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->timestamp('terms_accepted_at')->nullable()->after('otp_attempts');
|
||||
$table->string('terms_version')->nullable()->after('terms_accepted_at');
|
||||
$table->string('privacy_policy_version')->nullable()->after('terms_version');
|
||||
});
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->dropColumn(['terms_accepted_at', 'terms_version', 'privacy_policy_version']);
|
||||
});
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user