Question

I'm migrating a CodeIgniter application over to Kohana, and would like to take advantage of Kohana's AUTH module if possible. I have looked at the "standard" database schema that the AUTH module uses, but I already have tables and columns that contain the relevant information that are named and structured differently.

Is there a way to change where it is looking for username/password/email etc. maybe by extending Model_User and/or Kohana_Auth_ORM? I'd like to use ORM where possible.

I would like to change the table names and column names for each item, so that I can customize it fully.

If I'm forced to use the standard schema this will reduce the flexibility of my application...

I have one table called "entity" where basic details for (e.g. users, events, articles) are stored. This table does not have columns for username/password/email because these wouldn't apply to events or articles. The values for username etc. are stored in a lookup table, which maps the data in the following example way (cut down for brevity).

Table: entity
    Columns: entity_id

Table: map_entity_attribute
    Columns: entity_id, attribute_id, value

Table: attribute
    Columns: attribute_id, name

Example Data:

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';

I hope that I have explained this clearly as I realise that the database schema is quite out of the ordinary.

Hopefully someone can point me in the right direction!

Many thanks, Steve

Was it helpful?

Solution

Kohana is built in such a way that you can override almost every class in your "application" folder, and it will take precedence over classes defined in the modules: http://kohanaframework.org/3.3/guide/kohana/files

Specific to your case, you should override (not extend) the Model_User. To do so, you need to put a file name User.php in your application/Model/ folder. It should probably extend the Model_Auth_User class.

You would probably have to rewrite some of the classes but at least some of them should be usable to you as is.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top