2013-03-30 207 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