Pergunta

Estou migrando um aplicativo CodeIgniter para Kohana e gostaria de aproveitar as vantagens do módulo AUTH do Kohana, se possível.Examinei o esquema de banco de dados "padrão" que o módulo AUTH usa, mas já tenho tabelas e colunas que contêm as informações relevantes, nomeadas e estruturadas de maneira diferente.

Existe uma maneira de alterar onde está procurando nome de usuário/senha/e-mail etc.talvez estendendo Modelo_Usuário e/ou Kohana_Auth_ORM?Eu gostaria de usar ORM sempre que possível.

Gostaria de alterar os nomes das tabelas e das colunas de cada item, para poder personalizá-lo totalmente.

Se eu for forçado a usar o esquema padrão, isso reduzirá a flexibilidade do meu aplicativo...

Eu tenho uma tabela chamada "entidade" onde detalhes básicos (por exemplo.usuários, eventos, artigos) são armazenados.Esta tabela não possui colunas para nome de usuário/senha/e-mail porque elas não se aplicariam a eventos ou artigos.Os valores para nome de usuário etc.são armazenados em uma tabela de pesquisa, que mapeia os dados da maneira de exemplo a seguir (reduzida por questões de brevidade).

Table: entity
    Columns: entity_id

Table: map_entity_attribute
    Columns: entity_id, attribute_id, value

Table: attribute
    Columns: attribute_id, name

Dados de exemplo:

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 ter explicado isso claramente, pois percebo que o esquema do banco de dados é bastante fora do comum.

Espero que alguém possa me indicar a direção certa!

Muito obrigado, Steve

Foi útil?

Solução

Kohana é construído de tal forma que você pode substituir quase todas as classes em sua pasta "aplicativo", e terá precedência sobre as classes definidas nos módulos:http://kohanaframework.org/3.3/guide/kohana/files

Específico para o seu caso, você deve sobrepor (não estender) o Model_User.Para fazer isso, você precisa colocar um nome de arquivo User.php em sua pasta application/Model/.Provavelmente deveria estender a classe Model_Auth_User.

Você provavelmente teria que reescrever algumas das classes, mas pelo menos algumas delas deveriam ser utilizáveis ​​como estão.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top