Manual Técnico Carpeta Common
Documentación Técnica de User.php
Español
Descripción General
El archivo User.php es una clase modelo que extiende ActiveRecord de Yii2 e implementa la interfaz IdentityInterface. Sirve como el modelo de usuario principal para la aplicación, manejando la autenticación, autorización y gestión de perfiles de usuario.
Propósito
Esta clase gestiona datos y funcionalidad relacionada con usuarios, incluyendo:
- Autenticación y autorización de usuarios
- Gestión de contraseñas y seguridad
- Verificación de correo electrónico
- Gestión de estado de usuario
- Relaciones de perfil
- Generación y validación de tokens de seguridad
Estructura de Directorios
- Ubicación:
common/models/User.php - Espacio de nombres:
common\models - Clase Padre:
\yii\db\ActiveRecord - Interfaces:
\yii\web\IdentityInterface
Componentes Principales
Definición de Clase
class User extends ActiveRecord implements IdentityInterfaceConstantes
const STATUS_DELETED = 0;const STATUS_INACTIVE = 9;const STATUS_ACTIVE = 10;Propiedades
id: Entero, clave primariausername: String, nombre de usuario únicopassword_hash: String, contraseña hasheadapassword_reset_token: String, token para restablecer contraseñaverification_token: String, token para verificación de emailemail: String, dirección de email únicaauth_key: String, clave de autenticaciónstatus: Entero, estado del usuariocreated_at: Entero, marca de tiempoupdated_at: Entero, marca de tiempo
Métodos Principales
-
tableName()
- Propósito: Retorna el nombre de la tabla de base de datos
- Retorna: String con el nombre de la tabla
-
behaviors()
- Propósito: Configura comportamientos del modelo
- Retorna: Array de comportamientos
- Incluye: TimestampBehavior
-
rules()
- Propósito: Define reglas de validación
- Retorna: Array de reglas de validación
- Valida:
- Valores de estado
- Campos requeridos
- Restricciones únicas
-
attributeLabels()
- Propósito: Define etiquetas de atributos para visualización
- Retorna: Array de etiquetas de atributos
- Soporta: Internacionalización
-
Métodos de la Interfaz Identity
findIdentity($id): Encuentra usuario por IDfindIdentityByAccessToken($token, $type): Encuentra usuario por token de accesogetId(): Retorna ID del usuariogetAuthKey(): Retorna clave de autenticaciónvalidateAuthKey($authKey): Valida clave de autenticación
-
Métodos de Gestión de Usuario
findByUsername($username): Encuentra usuario por nombre de usuariofindByEmail($email): Encuentra usuario por emailfindByPasswordResetToken($token): Encuentra usuario por token de restablecimientofindByVerificationToken($token): Encuentra usuario por token de verificaciónvalidatePassword($password): Valida contraseña de usuariosetPassword($password): Establece contraseña de usuariogenerateAuthKey(): Genera clave de autenticacióngeneratePasswordResetToken(): Genera token de restablecimientogenerateEmailVerificationToken(): Genera token de verificaciónremovePasswordResetToken(): Elimina token de restablecimiento
-
Métodos de Relación
getProfile(): Retorna relación con el perfil del usuario
Ejemplo de Uso
// Crear nuevo usuario$user = new User();$user->username = 'john_doe';$user->email = 'john@example.com';$user->setPassword('contraseña_segura');$user->generateAuthKey();$user->generateEmailVerificationToken();$user->save();
// Encontrar usuario por nombre de usuario$user = User::findByUsername('john_doe');
// Validar contraseñaif ($user->validatePassword('contraseña_segura')) { // Contraseña válida}
// Obtener perfil de usuario$profile = $user->profile;User.php - Technical Documentation
English
Overview
The User.php file is a model class that extends Yii2’s ActiveRecord and implements the IdentityInterface. It serves as the core user model for the application, handling user authentication, authorization, and profile management.
Purpose
This class manages user-related data and functionality, including:
- User authentication and authorization
- Password management and security
- Email verification
- User status management
- Profile relationships
- Security token generation and validation
Directory Structure
- Location:
common/models/User.php - Namespace:
common\models - Parent Class:
\yii\db\ActiveRecord - Interfaces:
\yii\web\IdentityInterface
Key Components
Class Definition
class User extends ActiveRecord implements IdentityInterfaceConstants
const STATUS_DELETED = 0;const STATUS_INACTIVE = 9;const STATUS_ACTIVE = 10;Properties
id: Integer, primary keyusername: String, unique usernamepassword_hash: String, hashed passwordpassword_reset_token: String, token for password resetverification_token: String, token for email verificationemail: String, unique email addressauth_key: String, authentication keystatus: Integer, user statuscreated_at: Integer, timestampupdated_at: Integer, timestamp
Main Methods
-
tableName()
- Purpose: Returns the database table name
- Returns: String with table name
-
behaviors()
- Purpose: Configures model behaviors
- Returns: Array of behaviors
- Includes: TimestampBehavior
-
rules()
- Purpose: Defines validation rules
- Returns: Array of validation rules
- Validates:
- Status values
- Required fields
- Unique constraints
-
attributeLabels()
- Purpose: Defines attribute labels for display
- Returns: Array of attribute labels
- Supports: Internationalization
-
Identity Interface Methods
findIdentity($id): Finds user by IDfindIdentityByAccessToken($token, $type): Finds user by access tokengetId(): Returns user IDgetAuthKey(): Returns authentication keyvalidateAuthKey($authKey): Validates authentication key
-
User Management Methods
findByUsername($username): Finds user by usernamefindByEmail($email): Finds user by emailfindByPasswordResetToken($token): Finds user by password reset tokenfindByVerificationToken($token): Finds user by verification tokenvalidatePassword($password): Validates user passwordsetPassword($password): Sets user passwordgenerateAuthKey(): Generates authentication keygeneratePasswordResetToken(): Generates password reset tokengenerateEmailVerificationToken(): Generates email verification tokenremovePasswordResetToken(): Removes password reset token
-
Relationship Methods
getProfile(): Returns user’s profile relationship
Usage Example
// Create new user$user = new User();$user->username = 'john_doe';$user->email = 'john@example.com';$user->setPassword('secure_password');$user->generateAuthKey();$user->generateEmailVerificationToken();$user->save();
// Find user by username$user = User::findByUsername('john_doe');
// Validate passwordif ($user->validatePassword('secure_password')) { // Password is valid}
// Get user profile$profile = $user->profile;Additional Notes / Notas Adicionales
Technical Details / Detalles Técnicos
- Implements Yii2’s ActiveRecord pattern
- Uses secure password hashing
- Supports email verification
- Implements user status management
- Handles authentication tokens
- Integrates with profile management
Best Practices / Mejores Prácticas
- Always use secure password hashing
- Implement proper validation rules
- Handle user status transitions carefully
- Use transactions for critical operations
- Follow Yii2’s security guidelines
Related Components / Componentes Relacionados
- Profile Model
- UserSearch Model
- SignupForm Model
- VerifyEmailForm Model
- UserController
- UserQuery