首先,對於我的語言技能感到抱歉,我不習慣用英文寫作。 ;)
我想開發我的第一個cakePHP應用程序。如何獲得蛋糕的權限PHP
我想要做的事:
- 用戶在團體和團體 訪問不同的位置。
- 用戶可以爲此 位置添加預訂。
所以我的主要問題是要找到獲取用戶的權限的最佳方法:
- 用戶應該只看到他具有訪問權限的位置。
- 如果用戶試圖爲位置添加預訂,我必須檢查他對此位置的許可。
- 等
我也有版主和管理員,但我認爲這是一個類似的問題。
那麼,我該如何正確地做到這一點? ACL似乎並不是正確的方式 - 在大多數教程中,它控制對行爲的訪問,而不是對db行。
什麼我的數據庫看起來像:
我有一個用戶表,並使用AuthComponent管理認證。這工作正常。我有一個用戶組組表格。
CREATE TABLE IF NOT EXISTS `groups` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(64) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
)
CREATE TABLE IF NOT EXISTS `groups_users` (
`group_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
UNIQUE KEY `group_id` (`group_id`,`user_id`)
)
而且我有我的位置。
CREATE TABLE IF NOT EXISTS `locations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(64) NOT NULL,
`adress` text NOT NULL,
`description` text,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
)
該表包含權限,哪個組可以訪問哪個位置。
CREATE TABLE IF NOT EXISTS `groups_locations` (
`group_id` int(11) NOT NULL,
`location_id` int(11) NOT NULL,
UNIQUE KEY `group_id` (`group_id`,`location_id`)
)
當然的保留表:
CREATE TABLE IF NOT EXISTS `reservations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`location_id` int(11) NOT NULL,
`start` date NOT NULL,
`end` date NOT NULL,
`user_id` int(11) NOT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
)
THX
這還有點不清楚。你想限制什麼?視圖文件的某些部分?或者您是否具有基於登錄的用戶 - >組的獨立視圖文件? – 2011-03-16 14:48:35
我試圖根據參數限制對操作的訪問。例如:組A可以訪問位置1和3,但不能訪問位置2.如果組A中的用戶嘗試訪問domain.tld/location/view/1,則可以訪問它。如果他試圖訪問domain.tld/location/view/2,則應該拒絕訪問。 domain.tld/reservation/add/location的過程相同:2。 所以我的主要問題是(或是)如何從不同的控制器訪問用戶權限,而不加載不必要的數據庫表。 – Telokar 2011-03-16 15:13:46
因此,在您的app_controller中設置變量並將其發送到視圖應該可以工作...... – 2011-03-16 16:35:48