2013-03-30 206 views
2

我正在构建一个使用身份验证模块的应用程序,我至少需要3种账户类型:雇主,雇员和客户端。由于这些账户具有不同的属性,功能和关系(例如:雇主has_many雇员),我想我需要在3个独立的ORM模型上拥有它们。Kohana 3.3扩展身份验证模块

我认为的方法是调整Auth模块,用相应的子模型(雇主,员工,客户端)替换'用户'模型,对应数据库中的用户类型。

可以这样做,还是不好的做法?

+0

使用相同的用户表中的所有用户,并有雇主,雇员和客户端连接表。 – phazei

回答

1

对于此类rurposes,您需要为每个帐户类型创建不同的Model类,以扩展默认的Auth_ORM的Model_User类。

然后您需要在您的application/classes文件夹中创建新的Auth_ORM类延伸Kohana_Auth_ORM类。

在这个文件中,你需要重写protected _login()方法,因此其$user变量指向所需的帐户类型。

+0

但是,如果你共享一个表,你可能会在数据库中为用户提供各种表格,这会导致'roles_users'中的fk约束问题,或者如果共享一个表格,则会有未使用/不需要的行。为角色而不是用户提供单独的类是不是更有意义? – kero

+0

也许是。问题是:在这种情况下是否需要角色?我不会在我的例子中使用角色。每个账户类型本身都是一个角色。 –

0

我在这里找到有趣的资料库:https://github.com/alexgisby/MAuth。 我有和你一样的问题,所以也许如果你设法解决它你可以共享解决方案。我认为从这个链接的存储库可能是一个解决方案,但我没有设法实现它到目前为止

0

你可以有1个模型 - 用户和3个不同的角色。根据角色,您可以加载特定的模块,其中将包含所需的类。

例如,如果用户有角色员工,你会加载模块/ role_employee