I Found A Magic For Cauthmanager Revoke Method

When I use yii CAuthManager revoke() method,found when i revoke a user’s permission assignment,

checkAccess() will still return true,why? isn’t a bug with it ? :unsure:

<?php

            &#036;user = Yii::app()-&gt;user;


	&#036;user-&gt;setId(1);


	&#036;this-&gt;_authManager-&gt;assign('member', &#036;user-&gt;getId());


	&#036;this-&gt;assertTrue(&#036;this-&gt;_authManager-&gt;isAssigned('member', &#036;user-&gt;getId()));


            //following assert will passed.


	&#036;this-&gt;assertTrue(&#036;user-&gt;checkAccess('createIssue'));


	&#036;this-&gt;assertTrue(&#036;user-&gt;checkAccess('readIssue'));


	&#036;this-&gt;assertTrue(&#036;user-&gt;checkAccess('updateIssue'));


	&#036;this-&gt;assertTrue(&#036;user-&gt;checkAccess('deleteIssue'));


	&#036;this-&gt;assertTrue(&#036;user-&gt;checkAccess('readProject'));


	&#036;this-&gt;assertTrue(&#036;user-&gt;checkAccess('readMember'));


	


            //when i revoke assignment from the user, following assert passed still...


	&#036;this-&gt;_authManager-&gt;revoke('member', &#036;user-&gt;getId());


	&#036;this-&gt;assertFalse(&#036;this-&gt;_authManager-&gt;isAssigned('member', &#036;user-&gt;getId()));


	&#036;this-&gt;assertTrue(count(&#036;this-&gt;_authManager-&gt;getAuthAssignments(&#036;user-&gt;getId())) == 0);


	&#036;this-&gt;assertTrue(&#036;user-&gt;checkAccess('createIssue'));


	&#036;this-&gt;assertTrue(&#036;user-&gt;checkAccess('createIssue'));


	&#036;this-&gt;assertTrue(&#036;user-&gt;checkAccess('readIssue'));


	&#036;this-&gt;assertTrue(&#036;user-&gt;checkAccess('updateIssue'));


	&#036;this-&gt;assertTrue(&#036;user-&gt;checkAccess('deleteIssue'));

?>

d:\xampp\htdocs\trackstar\protected\tests>phpunit unit/PermissionTest.php

PHPUnit 3.7.24 by Sebastian Bergmann.

Configuration read from D:\xampp\htdocs\trackstar\protected\tests\phpunit.xml

.

Time: 2.15 seconds, Memory: 4.25Mb

OK (1 test, [size="6"]14[/size] assertions)

d:\xampp\htdocs\trackstar\protected\tests>

Not magic, caching ;). Set the third parameter in $user->checkAccess() to false. See CWebUser.