Author: david
Date: Fri Sep 11 14:36:55 2009
New Revision: 3234
Log:
Modify ACL schema - allow assigning permissions directly to user.
Modified:
trunk/data/sql/plugins.qbAclPlugin.lib.model.schema.sql
trunk/lib/model/om/BaseUser.php
trunk/plugins/qbAclPlugin/config/schema.yml
trunk/plugins/qbAclPlugin/lib/model/map/AclPermissionMapBuilder.php
trunk/plugins/qbAclPlugin/lib/model/om/BaseAclPermission.php
Modified: trunk/data/sql/plugins.qbAclPlugin.lib.model.schema.sql
==============================================================================
--- trunk/data/sql/plugins.qbAclPlugin.lib.model.schema.sql Fri Sep 11
14:17:58 2009 (r3233)
+++ trunk/data/sql/plugins.qbAclPlugin.lib.model.schema.sql Fri Sep 11
14:36:55 2009 (r3234)
@@ -93,6 +93,7 @@
CREATE TABLE `q_acl_permission`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
+ `user_id` INTEGER,
`group_id` INTEGER,
`object_id` INTEGER,
`action_id` INTEGER NOT NULL,
@@ -101,18 +102,23 @@
`created_at` DATETIME NOT NULL,
`updated_at` DATETIME NOT NULL,
PRIMARY KEY (`id`),
- INDEX `q_acl_permission_FI_1` (`group_id`),
+ INDEX `q_acl_permission_FI_1` (`user_id`),
CONSTRAINT `q_acl_permission_FK_1`
+ FOREIGN KEY (`user_id`)
+ REFERENCES `q_user` (`id`)
+ ON DELETE CASCADE,
+ INDEX `q_acl_permission_FI_2` (`group_id`),
+ CONSTRAINT `q_acl_permission_FK_2`
FOREIGN KEY (`group_id`)
REFERENCES `q_acl_group` (`id`)
ON DELETE CASCADE,
- INDEX `q_acl_permission_FI_2` (`object_id`),
- CONSTRAINT `q_acl_permission_FK_2`
+ INDEX `q_acl_permission_FI_3` (`object_id`),
+ CONSTRAINT `q_acl_permission_FK_3`
FOREIGN KEY (`object_id`)
REFERENCES `q_object` (`id`)
ON DELETE CASCADE,
- INDEX `q_acl_permission_FI_3` (`action_id`),
- CONSTRAINT `q_acl_permission_FK_3`
+ INDEX `q_acl_permission_FI_4` (`action_id`),
+ CONSTRAINT `q_acl_permission_FK_4`
FOREIGN KEY (`action_id`)
REFERENCES `q_acl_action` (`id`)
ON DELETE CASCADE
Modified: trunk/lib/model/om/BaseUser.php
==============================================================================
--- trunk/lib/model/om/BaseUser.php Fri Sep 11 14:17:58 2009 (r3233)
+++ trunk/lib/model/om/BaseUser.php Fri Sep 11 14:36:55 2009 (r3234)
@@ -82,6 +82,11 @@
{
}
+ if ('aclPermissions' == $name)
+ {
+ return true;
+ }
+
if ('aclUserGroups' == $name)
{
return true;
@@ -128,6 +133,23 @@
{
}
+ if ('aclPermissions' == $name)
+ {
+ if (!isset($this->refFkValues['aclPermissions']))
+ {
+ if (!isset($this->id))
+ {
+ $this->refFkValues['aclPermissions'] = QubitQuery::create();
+ }
+ else
+ {
+ $this->refFkValues['aclPermissions'] =
self::getaclPermissionsById($this->id, array('self' => $this) + $options);
+ }
+ }
+
+ return $this->refFkValues['aclPermissions'];
+ }
+
if ('aclUserGroups' == $name)
{
if (!isset($this->refFkValues['aclUserGroups']))
@@ -216,6 +238,26 @@
throw new sfException;
}
+ public static function addaclPermissionsCriteriaById(Criteria $criteria, $id)
+ {
+ $criteria->add(QubitAclPermission::USER_ID, $id);
+
+ return $criteria;
+ }
+
+ public static function getaclPermissionsById($id, array $options = array())
+ {
+ $criteria = new Criteria;
+ self::addaclPermissionsCriteriaById($criteria, $id);
+
+ return QubitAclPermission::get($criteria, $options);
+ }
+
+ public function addaclPermissionsCriteria(Criteria $criteria)
+ {
+ return self::addaclPermissionsCriteriaById($criteria, $this->id);
+ }
+
public static function addaclUserGroupsCriteriaById(Criteria $criteria, $id)
{
$criteria->add(QubitAclUserGroup::USER_ID, $id);
Modified: trunk/plugins/qbAclPlugin/config/schema.yml
==============================================================================
--- trunk/plugins/qbAclPlugin/config/schema.yml Fri Sep 11 14:17:58 2009
(r3233)
+++ trunk/plugins/qbAclPlugin/config/schema.yml Fri Sep 11 14:36:55 2009
(r3234)
@@ -27,6 +27,7 @@
acl_permission:
_attributes: { phpName: aclPermission }
id: ~
+ user_id: { type: integer, foreignTable: user, foreignReference: id,
onDelete: cascade }
group_id: { type: integer, foreignTable: acl_group,
foreignReference: id, onDelete: cascade }
object_id: { type: integer, foreignTable: object, foreignReference:
id, onDelete: cascade }
action_id: { type: integer, required: true, foreignTable: acl_action,
foreignReference: id, onDelete: cascade }
@@ -39,4 +40,4 @@
_attributes: { phpName: aclUserGroup }
id: ~
user_id: { type: integer, required: true, foreignTable: user,
foreignReference: id, onDelete: cascade }
- group_id: { type: integer, required: true, foreignTable: acl_group,
foreignReference: id, onDelete: cascade }
\ No newline at end of file
+ group_id: { type: integer, required: true, foreignTable: acl_group,
foreignReference: id, onDelete: cascade }
Modified: trunk/plugins/qbAclPlugin/lib/model/map/AclPermissionMapBuilder.php
==============================================================================
--- trunk/plugins/qbAclPlugin/lib/model/map/AclPermissionMapBuilder.php Fri Sep
11 14:17:58 2009 (r3233)
+++ trunk/plugins/qbAclPlugin/lib/model/map/AclPermissionMapBuilder.php Fri Sep
11 14:36:55 2009 (r3234)
@@ -35,6 +35,8 @@
$tMap->addPrimaryKey('ID', 'id', 'INTEGER', true, null);
+ $tMap->addForeignKey('USER_ID', 'userId', 'INTEGER', 'q_user',
'ID', false, null);
+
$tMap->addForeignKey('GROUP_ID', 'groupId', 'INTEGER',
'q_acl_group', 'ID', false, null);
$tMap->addForeignKey('OBJECT_ID', 'objectId', 'INTEGER',
'q_object', 'ID', false, null);
Modified: trunk/plugins/qbAclPlugin/lib/model/om/BaseAclPermission.php
==============================================================================
--- trunk/plugins/qbAclPlugin/lib/model/om/BaseAclPermission.php Fri Sep
11 14:17:58 2009 (r3233)
+++ trunk/plugins/qbAclPlugin/lib/model/om/BaseAclPermission.php Fri Sep
11 14:36:55 2009 (r3234)
@@ -8,6 +8,7 @@
TABLE_NAME = 'q_acl_permission',
ID = 'q_acl_permission.ID',
+ USER_ID = 'q_acl_permission.USER_ID',
GROUP_ID = 'q_acl_permission.GROUP_ID',
OBJECT_ID = 'q_acl_permission.OBJECT_ID',
ACTION_ID = 'q_acl_permission.ACTION_ID',
@@ -19,6 +20,7 @@
public static function addSelectColumns(Criteria $criteria)
{
$criteria->addSelectColumn(QubitAclPermission::ID);
+ $criteria->addSelectColumn(QubitAclPermission::USER_ID);
$criteria->addSelectColumn(QubitAclPermission::GROUP_ID);
$criteria->addSelectColumn(QubitAclPermission::OBJECT_ID);
$criteria->addSelectColumn(QubitAclPermission::ACTION_ID);
@@ -473,6 +475,13 @@
$this->setid($key);
}
+ public static function addJoinuserCriteria(Criteria $criteria)
+ {
+ $criteria->addJoin(QubitAclPermission::USER_ID, QubitUser::ID);
+
+ return $criteria;
+ }
+
public static function addJoingroupCriteria(Criteria $criteria)
{
$criteria->addJoin(QubitAclPermission::GROUP_ID, QubitAclGroup::ID);
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.ca/group/qubit-commits?hl=en
-~----------~----~----~----~------~----~------~--~---