Files
laravel-gost-template/database/migrations/0001_01_01_000000_create_users_table.php
2026-06-24 17:20:43 +09:00

65 lines
2.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
// Парольная политика (ИАФ.3): отметка времени последней смены пароля.
$table->timestamp('password_changed_at')->nullable();
// Многофакторная аутентификация (ИАФ.4). Секрет и резервные коды
// хранятся в зашифрованном виде (ЗНI) — поэтому text, не string.
$table->text('mfa_secret')->nullable();
$table->text('mfa_recovery_codes')->nullable();
$table->timestamp('mfa_confirmed_at')->nullable();
// Управление учётной записью (ИАФ.2, УПД.1).
$table->boolean('is_blocked')->default(false);
$table->timestamp('last_login_at')->nullable();
$table->rememberToken();
$table->softDeletes(); // Жизненный цикл идентификатора (ИАФ.2).
$table->timestamps();
});
Schema::create('password_reset_tokens', function (Blueprint $table) {
$table->string('email')->primary();
$table->string('token');
$table->timestamp('created_at')->nullable();
});
Schema::create('sessions', function (Blueprint $table) {
$table->string('id')->primary();
$table->foreignId('user_id')->nullable()->index();
$table->string('ip_address', 45)->nullable();
$table->text('user_agent')->nullable();
$table->longText('payload');
$table->integer('last_activity')->index();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('users');
Schema::dropIfExists('password_reset_tokens');
Schema::dropIfExists('sessions');
}
};