Pregunta

Estoy migrando una aplicación CodeIgniter a Kohana, y me gustaría aprovechar el módulo de autenticación de Kohana si es posible. He analizado el esquema de la base de datos "estándar" que usa el módulo de Auth, pero ya tengo tablas y columnas que contienen la información relevante que se nombra y estructuran de manera diferente.

¿Hay alguna forma de cambiar dónde está buscando nombre de usuario/contraseña/correo electrónico, etc. tal vez extendiendo Modelo_user y/o Kohana_auth_orm? Me gustaría usar Orm cuando sea posible.

Me gustaría cambiar los nombres de la tabla y los nombres de columnas para cada elemento, para que pueda personalizarlo por completo.

Si me veo obligado a usar el esquema estándar, esto reducirá la flexibilidad de mi aplicación ...

Tengo una tabla llamada "entidad" donde se almacenan los detalles básicos para (por ejemplo, usuarios, eventos, artículos). Esta tabla no tiene columnas para nombre de usuario/contraseña/correo electrónico porque no se aplicarían a eventos o artículos. Los valores para el nombre de usuario, etc. se almacenan en una tabla de búsqueda, que mapea los datos de la siguiente manera de ejemplo (corte por brevedad).

Table: entity
    Columns: entity_id

Table: map_entity_attribute
    Columns: entity_id, attribute_id, value

Table: attribute
    Columns: attribute_id, name

Datos de ejemplo:

entity.entity_id = 99;

map_entity_attribute.entity_id = 99;
map_entity_attribute.attribute_id = 1;
map_entity_attribute.value = 'ThisIsMyUsername';

attribute.attribute_id = 1;
attribute.name = 'Username';

Espero haber explicado esto claramente al darme cuenta de que el esquema de la base de datos está bastante fuera de lo común.

¡Ojalá alguien pueda señalarme en la dirección correcta!

Muchas gracias, Steve

¿Fue útil?

Solución

Kohana está construido de tal manera que puede anular casi todas las clases de su carpeta de "aplicación", y tendrá prioridad sobre las clases definidas en los módulos:http://kohanaframework.org/3.3/guide/kohana/files

Específico de su caso, debe anular (no extender) el Model_user. Para hacerlo, debe poner un nombre de archivo user.php en su aplicación/ modelo/ carpeta. Probablemente debería extender la clase Model_auth_user.

Probablemente tendrías que reescribir algunas de las clases, pero al menos algunas de ellas deberían ser utilizables para ti.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top