コード例 #1
0
ファイル: RbacSpec.php プロジェクト: polycademy/polyauth
 function setup_role_manager_mocks(Permission $permission, Role $role, RoleSet $role_set, RoleManager $role_manager)
 {
     $permission->permission_id = 1;
     $permission->name = 'Permission Name';
     $permission->description = 'A dummy permission';
     $role->role_id = 1;
     $role->name = 'members';
     $role->description = 'A dummy role';
     $role->hasPermission(Argument::type('RBAC\\Permission'))->willReturn(true);
     $role->getPermissions()->willReturn(array($permission));
     $role->addPermission(Argument::any())->willReturn(true);
     $role_set->addRole(Argument::type('RBAC\\Role\\Role'))->willReturn(true);
     $role_set->has_permission('Permission Name')->willReturn(true);
     $role_manager->roleFetchByName('members')->willReturn($role);
     $role_manager->roleFetch()->willReturn(array($role));
     $role_manager->roleSave(Argument::any())->willReturn(true);
     $role_manager->permissionFetch()->willReturn(array($permission));
     //assigns a role set object to the UserAccount object
     $role_manager->loadSubjectRoles(Argument::type('PolyAuth\\UserAccount'))->will(function ($args) use($role_set) {
         $user = $args[0];
         $user->loadRoleSet($role_set);
         return $user;
     });
     //adds a role to the role set of the role object
     $role_manager->roleAddSubject(Argument::cetera())->will(function ($args) {
         $role = $args[0];
         $user = $args[1];
         $role_set = $user->getRoleSet();
         $role_set->addRole($role);
         $user->loadRoleSet($role_set);
         return $user;
     });
     return ['role_manager' => $role_manager];
 }
コード例 #2
0
ファイル: RoleTest.php プロジェクト: sylarbg/rbac
 /**
  * @covers Rbac\Role\Role::getPermissions
  */
 public function testRoleCanGetPermissions()
 {
     $role = new Role('php');
     $role->addPermission('foo');
     $role->addPermission('bar');
     $expectedPermissions = ['foo' => 'foo', 'bar' => 'bar'];
     $this->assertEquals($expectedPermissions, $role->getPermissions());
 }
コード例 #3
0
 /**
  * @param Role $role
  *
  * @return bool
  */
 public function roleSave(Role $role)
 {
     if ($role->role_id) {
         $query = "\n                UPDATE\n                    auth_role\n                SET\n                    `name` = :name, description = :description, updated_on = " . $this->sql_time_func . "\n                WHERE\n                    role_id = :role_id\n            ";
     } else {
         $query = "\n                INSERT INTO auth_role\n                    (name, description, added_on, updated_on)\n                VALUES\n                    (:name, :description, " . $this->sql_time_func . ", " . $this->sql_time_func . ")\n            ";
     }
     $cur = $this->db->prepare($query);
     $cur->bindParam(":name", $role->name, PDO::PARAM_STR, 32);
     $cur->bindParam(":description", $role->description, PDO::PARAM_STR);
     if ($role->role_id) {
         $cur->bindParam(":role_id", $role->role_id, PDO::PARAM_INT);
     }
     $this->db->beginTransaction();
     try {
         $cur->execute();
         if (!$role->role_id) {
             $role->role_id = (int) $this->db->lastInsertId();
         }
         $this->db->commit();
     } catch (PDOException $db_err) {
         $this->db->rollBack();
         if ($this->logger) {
             $this->logger->error("Failed to save role to DB", ['exception' => $db_err]);
         }
         return false;
     }
     foreach ($role->getPermissions() as $permission) {
         // TODO: Something on fail
         $this->rolePermissionAdd($role, $permission);
     }
     return true;
 }