# Data Model: Auth Structure This document defines the database schema changes for the `064-auth-structure` feature. ## New Tables ### `platform_users` This table stores the authentication and profile information for Platform Operators. These users are managed locally and are entirely separate from the tenant-facing `users` table. **Purpose**: To provide a dedicated identity store for system administrators and operators, enabling secure access to the `/system` panel. **Laravel Migration Definition**: ```php Schema::create('platform_users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->string('password'); $table->jsonb('capabilities')->default('[]'); $table->boolean('is_active')->default(true); $table->timestamp('last_login_at')->nullable(); $table->rememberToken(); $table->timestamps(); }); ``` ### Field Definitions | Column | Type | Description | Notes | |----------------|----------------------|-----------------------------------------------------------------------------------------------------------|----------------------------------------| | `id` | `bigint`, `unsigned` | Primary key. | Auto-incrementing. | | `name` | `string` | The full name of the platform operator. | Required. | | `email` | `string` | The unique email address used for login. | Must be unique across the table. | | `password` | `string` | The hashed password for the user. | Never stored in plain text. | | `capabilities` | `jsonb` | A list of string identifiers for permissions (e.g., `["platform.use_break_glass"]`). | Defaults to an empty array (`[]`). | | `is_active` | `boolean` | Flag to enable or disable the account. Inactive users cannot log in. | Defaults to `true`. | | `last_login_at`| `timestamp` | Records the timestamp of the user's last successful login. | Nullable. | | `remember_token` | `string` | Used by Laravel's "Remember Me" functionality. | Nullable. | | `created_at` | `timestamp` | Timestamp of when the record was created. | Managed by Eloquent. | | `updated_at` | `timestamp` | Timestamp of when the record was last updated. | Managed by Eloquent. | ## Modified Tables No existing tables will be modified as part of the core data model changes. ## Deprecations - **`users.is_platform_superadmin`**: This column in the `users` table is now considered deprecated. No new code should rely on it for authorization. A separate, future migration will be responsible for its removal after a backfill process is complete.