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
-~----------~----~----~----~------~----~------~--~---

Reply via email to