<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>cojack blog &#187; uprawnienia</title>
	<atom:link href="http://www.cojack.pl/tag/uprawnienia/feed" rel="self" type="application/rss+xml" />
	<link>http://www.cojack.pl</link>
	<description>Programowanie oraz Open Source powodem do życia</description>
	<lastBuildDate>Sat, 26 Nov 2011 18:43:28 +0000</lastBuildDate>
	<language>PL</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Role Based Access Control cz.3</title>
		<link>http://www.cojack.pl/role-based-access-control-cz-3</link>
		<comments>http://www.cojack.pl/role-based-access-control-cz-3#comments</comments>
		<pubDate>Fri, 22 Jan 2010 09:41:53 +0000</pubDate>
		<dc:creator>cojack</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[rbac]]></category>
		<category><![CDATA[role based access control]]></category>
		<category><![CDATA[uprawnienia]]></category>

		<guid isPermaLink="false">http://www.cojack.pl/?p=326</guid>
		<description><![CDATA[ Tak więc w poprzednim wpisie, pokazałem w jaki sposób zaimplementować taką strukturę w sql, w tym wpisie chciałbym rozważyć pewne dodatkowe możliwości, które mogą chodź nie muszą okazać się przydatne w cale. A więc, mamy tutaj sprawdzanie uprawnień tylko i wyłącznie dla grup użytkowników. Co nie było naszym założeniem, ...]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="PHP" src="http://www.cojack.pl/wp-content/arch-php.png" alt="" height="100" width="100"> Tak więc w poprzednim wpisie, pokazałem w jaki sposób zaimplementować taką strukturę w sql, w tym wpisie chciałbym rozważyć pewne dodatkowe możliwości, które mogą chodź nie muszą okazać się przydatne w cale. A więc, mamy tutaj sprawdzanie uprawnień tylko i wyłącznie dla grup użytkowników. Co nie było naszym założeniem, więc by kontynuować i rozszerzyć możliwości naszego rbac&#8217;a należy wprowadzić pewne zmiany. Tabela rbac_privilages powinna zostać przemianowana na rbac_group_privilages, musimy też utworzyć drugą tabelę rbac_user_privilages o podobnej strukturze jak ta poprzednia. Taka zmiana pozwoli nam już dodawać indywidualne uprawnienia dla użytkowników. Z założeń pozostało nam jeszcze grupa do grup zadań czyli naszych controllerów, oraz użytkownik do grupy zadań. Jakby nie patrzeć są to dodatkowe dwie tabele, których utworzenie nie powinno przysporzyć większych problemów.</p>
<h3>Logika struktury sql</h3>
<p>Można by się zapytać po co tyle tabel? A bardzo chętnie na to pytanie odpowiem, otóż baza danych nie jest stworzona po to by trzymać w niej to co się chce i nawet bez sensu, takie rzeczy dyskryminują nas od razu w oczach pracodawcy. Więc dane nie powinny się powtarzać, kolumny powinny być tak tworzone by zawierały jak najmniej wartości NULL chyba że ma to pewien sens. Coś na zasadzie &#8222;Dziel i zwyciężaj&#8221; tylko tutaj prawda nie mamy żadnych algorytmów <img src='http://www.cojack.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Priorytety w Role Based Access Control</h3>
<p>Mamy taki problem: Czy pobrać wszystko za jednym zamachem i sprawdzać dostęp za pomocą tego co mamy, czy sprawdzać pobierając dane po kolei? I odpowiedź bez sprawdzenia tego, które z założeń jest szybsze jest chyba absurdem, niestety nie mam na razie na to czasu by to sprawdzić, lecz chciałbym ustalić kolejność priorytetów. Założenie jest takie: Każdy użytkownik jest przypisany do jakiejś grupy, użytkownik bez grupy też jest w grupie użytkowników a mowa tutaj o osobach które nie są zarejestrowane na naszej stronie, można przyjąć ich za grupę Guest, czyli gości. Taki paradoks. I teraz priorytety wg mnie można by ustalić w ten sposób:</p>
<ol>
<li>Sprawdzanie czy grupa ma dostęp do controllera, czyli naszej grupy zadań.
<ol>
<li>Ma, sprawdzamy czy grupa ma dostęp do akcji w kontrolerze, czyli naszego zadania
<ol>
<li> Ma, zezwalamy</li>
<li>Nie ma, przechodzimy do pkt 2</li>
</ol>
</li>
<li>Nie ma, przechodzimy do pkt 2</li>
</ol>
</li>
<li>Grupa nie ma uprawnień do zadania w controllerze, sprawdzamy czy użytkownik ma dostęp do controllera
<ol>
<li>Ma, sprawdzamy czy ma dostęp do akcji w kontrolerze
<ol>
<li>Ma, zezwalamy</li>
<li>Nie ma, odmawiamy</li>
</ol>
</li>
<li>Nie ma, odmawiamy</li>
</ol>
</li>
<li> Amen </li>
</ol>
<h3>Hierarchia, czyli dziedziczenie uprawnień</h3>
<p>Szczerze jak sobie pomyślę o takim założeniu to zaczyna mnie głowa boleć, bo już sobie w głowie tworzę taką aplikację w sql która musi to sprawdzać, no daję głowę, szczęka opada&#8230; Więc nie wiem czy aby na pewno jest to słuszne by tworzyć to, ale słowo się rzekło, to i się to napisze. Tylko obawiam się że bez rekurencji to nie przejdzie, chociaż nie jestem tego jeszcze do końca pewien, być może nie będzie tak źle na jak to wygląda. Dodatkowe akcje wchodzą w grę, należy sprawdzać czy jeżeli np grupa nie ma uprawnień do akcji, czy nad grupa ma pozwolenie na tą akcję oraz czy pozwala ją dziedziczyć, gdyby ktoś wyjechał z pomysłem komu pozwala ją dziedziczyć to w ogóle jeszcze więcej roboty, więc proszę nie dobijać leżącego <img src='http://www.cojack.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Huh chociaż dobrze że nie ma sensu robić hierarchie użytkowników, bo od tego jest rbac właśnie by zrobił to za nas.</p>
<h4>Słów kilka na zakończenie</h4>
<p>Myślę że jest to optymalne sprawdzanie, chyba że coś pominąłem to mnie poprawcie, trochę z rana mogę być jeszcze nie ogarnięty z wszystkim, więc pisać w komentarzach co i jak.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cojack.pl/role-based-access-control-cz-3/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Role Based Access Control cz.2</title>
		<link>http://www.cojack.pl/role-based-access-control-cz-2</link>
		<comments>http://www.cojack.pl/role-based-access-control-cz-2#comments</comments>
		<pubDate>Tue, 19 Jan 2010 19:57:11 +0000</pubDate>
		<dc:creator>cojack</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[rbac]]></category>
		<category><![CDATA[role based access control]]></category>
		<category><![CDATA[uprawnienia]]></category>

		<guid isPermaLink="false">http://www.cojack.pl/?p=319</guid>
		<description><![CDATA[ Nadszedł czas na pierwszą implementację tej struktury w sql, oczywiście nie jest to czego byśmy oczekiwali ponieważ ma pewne braki które mogły by się wydawać dla większego użytku wprost odwrotnie proporcjonalne do zastosowania role based access control. Otóż jest trochę uproszczona struktura, dlaczego? Mieliśmy w pracy z kolegą burzę ...]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="PostgreSQL" src="http://www.cojack.pl/wp-content/arch-postgresql.png" alt="" height="100" width="100"> Nadszedł czas na pierwszą implementację tej struktury w sql, oczywiście nie jest to czego byśmy oczekiwali ponieważ ma pewne braki które mogły by się wydawać dla większego użytku wprost odwrotnie proporcjonalne do zastosowania <strong>role based access control</strong>. Otóż jest trochę uproszczona struktura, dlaczego? Mieliśmy w pracy z kolegą burzę mózgów na ten temat gdyż go bardzo zainteresował i doszedł do wniosku iż konstruowanie kolosa może mieć negatywny wpływ na jego interfejs, i prawdę powiedziawszy po głębszym zastanowieniu się oraz doświadczeniu wyniesionym z używania phpbb (taki skrypt forum) doszedłem do wniosku iż ma chłop rację. Więc na pierwszy ogień skonstruowaliśmy taką oto strukturę rbac&#8217;a, ale moje ego nie pozwala mi na zakończenie prac nad tym i będę kontynuował rozwój do takiego stopnia że stwierdzę iż większego kolosa się zbudować nie da ponieważ zawiera już wszystko. </p>
<h3>Struktura SQL Role Based Access Control</h3>
<p>Także do dzieła, struktura bazy danych:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">BEGIN</span>;
&nbsp;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">&quot;rbac_user&quot;</span> CASCADE;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #ff0000;">&quot;rbac_user&quot;</span>
<span style="color: #66cc66;">&#40;</span>
   <span style="color: #ff0000;">&quot;idUser&quot;</span> SERIAL <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">,</span>
   <span style="color: #ff0000;">&quot;userName&quot;</span> <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">255</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>
<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">&quot;rbac_group&quot;</span> CASCADE;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #ff0000;">&quot;rbac_group&quot;</span>
<span style="color: #66cc66;">&#40;</span>
   <span style="color: #ff0000;">&quot;idGroup&quot;</span> SERIAL <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">,</span>
   <span style="color: #ff0000;">&quot;groupName&quot;</span> <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">255</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">UNIQUE</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>
<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">&quot;rbac_user_to_group&quot;</span>;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #ff0000;">&quot;rbac_user_to_group&quot;</span>
<span style="color: #66cc66;">&#40;</span>
   <span style="color: #ff0000;">&quot;idUser&quot;</span> <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">REFERENCES</span> <span style="color: #ff0000;">&quot;rbac_user&quot;</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;idUser&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
   <span style="color: #ff0000;">&quot;idGroup&quot;</span> <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">REFERENCES</span> <span style="color: #ff0000;">&quot;rbac_group&quot;</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;idGroup&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
   <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;idUser&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;idGroup&quot;</span> <span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">&quot;rbac_module&quot;</span> CASCADE;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #ff0000;">&quot;rbac_module&quot;</span>
<span style="color: #66cc66;">&#40;</span>
   <span style="color: #ff0000;">&quot;idModule&quot;</span> SERIAL <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">,</span>
   <span style="color: #ff0000;">&quot;moduleName&quot;</span> <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">255</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">UNIQUE</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>
<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">&quot;rbac_action&quot;</span> CASCADE;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #ff0000;">&quot;rbac_action&quot;</span>
<span style="color: #66cc66;">&#40;</span>
   <span style="color: #ff0000;">&quot;idAction&quot;</span> SERIAL <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">,</span>
   <span style="color: #ff0000;">&quot;idModule&quot;</span> <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">REFERENCES</span> <span style="color: #ff0000;">&quot;rbac_module&quot;</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;idModule&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
   <span style="color: #ff0000;">&quot;actionName&quot;</span> <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">255</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
   <span style="color: #ff0000;">&quot;inherited&quot;</span> <span style="color: #993333; font-weight: bold;">BOOLEAN</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
   <span style="color: #993333; font-weight: bold;">UNIQUE</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;actionName&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;idModule&quot;</span> <span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">&quot;rbac_privilages&quot;</span>;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #ff0000;">&quot;rbac_privilages&quot;</span>
<span style="color: #66cc66;">&#40;</span>
   <span style="color: #ff0000;">&quot;idGroup&quot;</span> <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">REFERENCES</span> <span style="color: #ff0000;">&quot;rbac_group&quot;</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;idGroup&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
   <span style="color: #ff0000;">&quot;idModule&quot;</span> <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">REFERENCES</span> <span style="color: #ff0000;">&quot;rbac_module&quot;</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;idModule&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
   <span style="color: #ff0000;">&quot;idAction&quot;</span> <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">REFERENCES</span> <span style="color: #ff0000;">&quot;rbac_action&quot;</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;idAction&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
   <span style="color: #ff0000;">&quot;allow&quot;</span> <span style="color: #993333; font-weight: bold;">BOOLEAN</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
   <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;idGroup&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;idModule&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;idAction&quot;</span> <span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span>;
&nbsp;
COMMIT;</pre></div></div>

<p>Użyłem transakcji, w posgresql można <img src='http://www.cojack.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  W MySQL też, pod warunkiem że typ tabeli to InnoDB. Ale nie teraz o tym rzecz. Co jest co?</p>
<p><strong>rbac_user</strong> &#8211; tabela przechowująca użytkowników naszego systemu<br />
<strong>rbac_group</strong> &#8211; tabela przechowująca grupy w naszym systemie<br />
<strong>rbac_user_to_group</strong> &#8211; tabela wiążąca użytkowników z grupami, relacja typu many-to-many (wiele do wielu)<br />
<strong>rbac_module</strong> &#8211; tabela przechowująca nazwy naszych modułów, można to rozumieć jako controllery naszej aplikacji<br />
<strong>rbac_action</strong> &#8211; tabela przechowująca nazwy naszych akcji, trzeba to rozumieć jako metody w naszych controllerach, relacja typu many-to-one (wiele do jednego, to samo co jeden do wielu [one-to-many])<br />
<strong>rbac_privilages</strong> &#8211; a to jest tabela wiążąca grupę użytkowników, moduł i akcję.</p>
<h3>Demo Role Based Access Control</h3>
<p>Teraz jak to ustrojstwo wypełnić danymi? Bardzo proszę:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">BEGIN</span>;
&nbsp;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;rbac_user&quot;</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;userName&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">'przemek'</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">'maciej'</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">'andrzej'</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">'grzesiek'</span> <span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;rbac_group&quot;</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;groupName&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">'admin'</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">'user'</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">'moderator'</span> <span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;rbac_user_to_group&quot;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;rbac_module&quot;</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;moduleName&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">'news'</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">'articles'</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">'download'</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">'music'</span> <span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;rbac_action&quot;</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;idModule&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;actionName&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;inherited&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'index'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'edit'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'add'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'delete'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'block'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'index'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'edit'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'add'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'delete'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'block'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'index'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'edit'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'add'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'delete'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'block'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'download'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>   
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'index'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'edit'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'add'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'delete'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'block'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'download'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'play'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;rbac_privilages&quot;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> 
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">6</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">7</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">8</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">9</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">10</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">6</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">7</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">8</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">9</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">10</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">6</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">7</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">8</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">9</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">10</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">11</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">12</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">13</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">14</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">15</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">16</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">11</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">12</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">13</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">14</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">15</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">16</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">11</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">12</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">13</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">14</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">15</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">16</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">17</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">18</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">19</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">20</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">21</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">22</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">23</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">17</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">18</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">19</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">20</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">21</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">22</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">23</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">17</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">18</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">19</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">20</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FALSE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">21</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">22</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
   <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">23</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">TRUE</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
COMMIT;</pre></div></div>

<p>Znowu transakcję, jakoś tak szybciej działa to <img src='http://www.cojack.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Jak pewnie zdążyliście zauważyć tabela <strong>rbac_action</strong> posiada kolumnę &#8222;inherited&#8221; która w późniejszym etapie mojej implementacji tego paradygmatu będzie potrzebna do tego by w hierarchii definiować czy dana akcja ma być dziedziczona dla pod grup. Taki ficzer.</p>
<p>Teraz tak, żeby to działało co jest wyżej przedstawione na gotowca, czyli copy-paste wymagana jest baza danych postgresql > 8.2. Dlaczego? A otóż dlatego że:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #ff0000;">&quot;tabela&quot;</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span>;</pre></div></div>

<p> jest zaimplementowane od tej versji. Oj brakowało tego brakowało&#8230; Nie wiem jak z wierszami podawanymi po przecinku, gdyż w 8.1 to nie działa (mowa tutaj o klauzuli INSERT).</p>
<h3>Sprawdzanie uprawnień</h3>
<p>Pozostało nam już tylko jak to pobrać, dla przykładu nie tworzyłem żadnych testów wydajnościowych, chodź przyznam że łączymy parę tabel ale utworzone indeksy są w pełni wykorzystywane, przykład jak sprawdzić uprawnienia:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> 
  <span style="color: #ff0000;">&quot;allow&quot;</span> 
<span style="color: #993333; font-weight: bold;">FROM</span> 
  <span style="color: #ff0000;">&quot;rbac_privilages&quot;</span> p 
<span style="color: #993333; font-weight: bold;">LEFT</span> <span style="color: #993333; font-weight: bold;">JOIN</span> 
  <span style="color: #ff0000;">&quot;rbac_module&quot;</span> m 
<span style="color: #993333; font-weight: bold;">ON</span> 
  <span style="color: #66cc66;">&#40;</span> p<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idModule&quot;</span> <span style="color: #66cc66;">=</span> m<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idModule&quot;</span> <span style="color: #66cc66;">&#41;</span> 
<span style="color: #993333; font-weight: bold;">LEFT</span> <span style="color: #993333; font-weight: bold;">JOIN</span> 
  <span style="color: #ff0000;">&quot;rbac_action&quot;</span> a 
<span style="color: #993333; font-weight: bold;">ON</span> 
  <span style="color: #66cc66;">&#40;</span> p<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idAction&quot;</span> <span style="color: #66cc66;">=</span> a<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idAction&quot;</span> <span style="color: #66cc66;">&#41;</span> 
<span style="color: #993333; font-weight: bold;">LEFT</span> <span style="color: #993333; font-weight: bold;">JOIN</span> 
  <span style="color: #ff0000;">&quot;rbac_user_to_group&quot;</span> u2g 
<span style="color: #993333; font-weight: bold;">ON</span> 
  <span style="color: #66cc66;">&#40;</span> p<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idGroup&quot;</span> <span style="color: #66cc66;">=</span> u2g<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idGroup&quot;</span> <span style="color: #66cc66;">&#41;</span> 
<span style="color: #993333; font-weight: bold;">WHERE</span> 
  u2g<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idUser&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">2</span> 
<span style="color: #993333; font-weight: bold;">AND</span> 
  m<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;moduleName&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'music'</span> 
<span style="color: #993333; font-weight: bold;">AND</span> 
  a<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;actionName&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'index'</span>;</pre></div></div>

<p>Możemy sobie z tego ładny widoczek utworzyć, ale może o tym kiedy indziej. A teraz co wykazało explain?</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"> Nested Loop  <span style="color: #66cc66;">&#40;</span>cost<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">8.28</span><span style="color: #66cc66;">..</span>14<span style="color: #66cc66;">.</span>17 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> width<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
   <span style="color: #66cc66;">-&gt;</span>  Nested Loop  <span style="color: #66cc66;">&#40;</span>cost<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">8.28</span><span style="color: #66cc66;">..</span>13<span style="color: #66cc66;">.</span>19 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> width<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span>
         <span style="color: #993333; font-weight: bold;">JOIN</span> <span style="color: #993333; font-weight: bold;">FILTER</span>: <span style="color: #66cc66;">&#40;</span>p<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idModule&quot;</span> <span style="color: #66cc66;">=</span> m<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idModule&quot;</span><span style="color: #66cc66;">&#41;</span>
         <span style="color: #66cc66;">-&gt;</span>  Hash <span style="color: #993333; font-weight: bold;">JOIN</span>  <span style="color: #66cc66;">&#40;</span>cost<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">8.28</span><span style="color: #66cc66;">..</span>10<span style="color: #66cc66;">.</span>26 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">3</span> width<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">9</span><span style="color: #66cc66;">&#41;</span>
               Hash Cond: <span style="color: #66cc66;">&#40;</span>p<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idAction&quot;</span> <span style="color: #66cc66;">=</span> a<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idAction&quot;</span><span style="color: #66cc66;">&#41;</span>
               <span style="color: #66cc66;">-&gt;</span>  Seq Scan <span style="color: #993333; font-weight: bold;">ON</span> rbac_privilages p  <span style="color: #66cc66;">&#40;</span>cost<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0.00</span><span style="color: #66cc66;">..</span>1<span style="color: #66cc66;">.</span>69 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">69</span> width<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">13</span><span style="color: #66cc66;">&#41;</span>
               <span style="color: #66cc66;">-&gt;</span>  Hash  <span style="color: #66cc66;">&#40;</span>cost<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">8.27</span><span style="color: #66cc66;">..</span>8<span style="color: #66cc66;">.</span>27 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> width<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span>
                     <span style="color: #66cc66;">-&gt;</span>  <span style="color: #993333; font-weight: bold;">INDEX</span> Scan <span style="color: #993333; font-weight: bold;">USING</span> <span style="color: #ff0000;">&quot;rbac_action_actionName_key&quot;</span> <span style="color: #993333; font-weight: bold;">ON</span> rbac_action a  <span style="color: #66cc66;">&#40;</span>cost<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0.00</span><span style="color: #66cc66;">..</span>8<span style="color: #66cc66;">.</span>27 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> width<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span>
                           <span style="color: #993333; font-weight: bold;">INDEX</span> Cond: <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;actionName&quot;</span><span style="color: #66cc66;">&#41;</span>::text <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'index'</span>::text<span style="color: #66cc66;">&#41;</span>
         <span style="color: #66cc66;">-&gt;</span>  <span style="color: #993333; font-weight: bold;">INDEX</span> Scan <span style="color: #993333; font-weight: bold;">USING</span> <span style="color: #ff0000;">&quot;rbac_module_moduleName_key&quot;</span> <span style="color: #993333; font-weight: bold;">ON</span> rbac_module m  <span style="color: #66cc66;">&#40;</span>cost<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0.00</span><span style="color: #66cc66;">..</span>0<span style="color: #66cc66;">.</span>97 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> width<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span>
               <span style="color: #993333; font-weight: bold;">INDEX</span> Cond: <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>m<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;moduleName&quot;</span><span style="color: #66cc66;">&#41;</span>::text <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'music'</span>::text<span style="color: #66cc66;">&#41;</span>
   <span style="color: #66cc66;">-&gt;</span>  <span style="color: #993333; font-weight: bold;">INDEX</span> Scan <span style="color: #993333; font-weight: bold;">USING</span> rbac_user_to_group_pkey <span style="color: #993333; font-weight: bold;">ON</span> rbac_user_to_group u2g  <span style="color: #66cc66;">&#40;</span>cost<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0.00</span><span style="color: #66cc66;">..</span>0<span style="color: #66cc66;">.</span>97 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> width<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span>
         <span style="color: #993333; font-weight: bold;">INDEX</span> Cond: <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>u2g<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idUser&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AND</span> <span style="color: #66cc66;">&#40;</span>u2g<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idGroup&quot;</span> <span style="color: #66cc66;">=</span> p<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idGroup&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">13</span> <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>A co explain z analyze?</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"> Nested Loop  <span style="color: #66cc66;">&#40;</span>cost<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">8.28</span><span style="color: #66cc66;">..</span>14<span style="color: #66cc66;">.</span>17 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> width<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>actual <span style="color: #993333; font-weight: bold;">TIME</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0.449</span><span style="color: #66cc66;">..</span>0<span style="color: #66cc66;">.</span>480 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> loops<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
   <span style="color: #66cc66;">-&gt;</span>  Nested Loop  <span style="color: #66cc66;">&#40;</span>cost<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">8.28</span><span style="color: #66cc66;">..</span>13<span style="color: #66cc66;">.</span>19 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> width<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>actual <span style="color: #993333; font-weight: bold;">TIME</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0.355</span><span style="color: #66cc66;">..</span>0<span style="color: #66cc66;">.</span>449 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">3</span> loops<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
         <span style="color: #993333; font-weight: bold;">JOIN</span> <span style="color: #993333; font-weight: bold;">FILTER</span>: <span style="color: #66cc66;">&#40;</span>p<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idModule&quot;</span> <span style="color: #66cc66;">=</span> m<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idModule&quot;</span><span style="color: #66cc66;">&#41;</span>
         <span style="color: #66cc66;">-&gt;</span>  Hash <span style="color: #993333; font-weight: bold;">JOIN</span>  <span style="color: #66cc66;">&#40;</span>cost<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">8.28</span><span style="color: #66cc66;">..</span>10<span style="color: #66cc66;">.</span>26 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">3</span> width<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">9</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>actual <span style="color: #993333; font-weight: bold;">TIME</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0.083</span><span style="color: #66cc66;">..</span>0<span style="color: #66cc66;">.</span>288 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">12</span> loops<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
               Hash Cond: <span style="color: #66cc66;">&#40;</span>p<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idAction&quot;</span> <span style="color: #66cc66;">=</span> a<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idAction&quot;</span><span style="color: #66cc66;">&#41;</span>
               <span style="color: #66cc66;">-&gt;</span>  Seq Scan <span style="color: #993333; font-weight: bold;">ON</span> rbac_privilages p  <span style="color: #66cc66;">&#40;</span>cost<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0.00</span><span style="color: #66cc66;">..</span>1<span style="color: #66cc66;">.</span>69 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">69</span> width<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">13</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>actual <span style="color: #993333; font-weight: bold;">TIME</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0.012</span><span style="color: #66cc66;">..</span>0<span style="color: #66cc66;">.</span>099 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">69</span> loops<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
               <span style="color: #66cc66;">-&gt;</span>  Hash  <span style="color: #66cc66;">&#40;</span>cost<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">8.27</span><span style="color: #66cc66;">..</span>8<span style="color: #66cc66;">.</span>27 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> width<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>actual <span style="color: #993333; font-weight: bold;">TIME</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0.049</span><span style="color: #66cc66;">..</span>0<span style="color: #66cc66;">.</span>049 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">4</span> loops<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
                     <span style="color: #66cc66;">-&gt;</span>  <span style="color: #993333; font-weight: bold;">INDEX</span> Scan <span style="color: #993333; font-weight: bold;">USING</span> <span style="color: #ff0000;">&quot;rbac_action_actionName_key&quot;</span> <span style="color: #993333; font-weight: bold;">ON</span> rbac_action a  <span style="color: #66cc66;">&#40;</span>cost<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0.00</span><span style="color: #66cc66;">..</span>8<span style="color: #66cc66;">.</span>27 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> width<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>actual <span style="color: #993333; font-weight: bold;">TIME</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0.027</span><span style="color: #66cc66;">..</span>0<span style="color: #66cc66;">.</span>036 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">4</span> loops<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
                           <span style="color: #993333; font-weight: bold;">INDEX</span> Cond: <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;actionName&quot;</span><span style="color: #66cc66;">&#41;</span>::text <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'index'</span>::text<span style="color: #66cc66;">&#41;</span>
         <span style="color: #66cc66;">-&gt;</span>  <span style="color: #993333; font-weight: bold;">INDEX</span> Scan <span style="color: #993333; font-weight: bold;">USING</span> <span style="color: #ff0000;">&quot;rbac_module_moduleName_key&quot;</span> <span style="color: #993333; font-weight: bold;">ON</span> rbac_module m  <span style="color: #66cc66;">&#40;</span>cost<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0.00</span><span style="color: #66cc66;">..</span>0<span style="color: #66cc66;">.</span>97 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> width<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>actual <span style="color: #993333; font-weight: bold;">TIME</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0.006</span><span style="color: #66cc66;">..</span>0<span style="color: #66cc66;">.</span>008 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> loops<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">12</span><span style="color: #66cc66;">&#41;</span>
               <span style="color: #993333; font-weight: bold;">INDEX</span> Cond: <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>m<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;moduleName&quot;</span><span style="color: #66cc66;">&#41;</span>::text <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'music'</span>::text<span style="color: #66cc66;">&#41;</span>
   <span style="color: #66cc66;">-&gt;</span>  <span style="color: #993333; font-weight: bold;">INDEX</span> Scan <span style="color: #993333; font-weight: bold;">USING</span> rbac_user_to_group_pkey <span style="color: #993333; font-weight: bold;">ON</span> rbac_user_to_group u2g  <span style="color: #66cc66;">&#40;</span>cost<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0.00</span><span style="color: #66cc66;">..</span>0<span style="color: #66cc66;">.</span>97 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> width<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>actual <span style="color: #993333; font-weight: bold;">TIME</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0.005</span><span style="color: #66cc66;">..</span>0<span style="color: #66cc66;">.</span>006 <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0</span> loops<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span>
         <span style="color: #993333; font-weight: bold;">INDEX</span> Cond: <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>u2g<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idUser&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AND</span> <span style="color: #66cc66;">&#40;</span>u2g<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idGroup&quot;</span> <span style="color: #66cc66;">=</span> p<span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;idGroup&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
 Total runtime: <span style="color: #cc66cc;">0.576</span> ms
<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">14</span> <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>I skąd te 14 wierszy? Bladego pojęcia nie mam. (Edit już wiem ;p) Także czekam na Wasze konstruktywne opinie, chce zaznaczyć że całość nie jest tylko moim pomysłem ale również kolegi z pracy Maćka.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cojack.pl/role-based-access-control-cz-2/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Role Based Access Control</title>
		<link>http://www.cojack.pl/role-based-access-control</link>
		<comments>http://www.cojack.pl/role-based-access-control#comments</comments>
		<pubDate>Mon, 18 Jan 2010 14:14:42 +0000</pubDate>
		<dc:creator>cojack</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[acl]]></category>
		<category><![CDATA[rbac]]></category>
		<category><![CDATA[role based access control]]></category>
		<category><![CDATA[uprawnienia]]></category>

		<guid isPermaLink="false">http://cojack.os-cms.pl/?p=229</guid>
		<description><![CDATA[Ostatnio naszła mnie potrzeba na utworzenie listy kontroli dostępu dla użytkowników do modułów i akcji, cel zadania:

Użytkownik w wielu grupach
Grupy użytkowników	
Zadania
Grupy zadań
Dostęp grupie użytkowników do zadań
Dostęp grupie użytkowników do grupy zadań
Dostęp pojedynczemu użytkownikowi do zadań
Dostęp pojedynczemu użytkownikowi do grupy zadań
Hierarchia grup (dziedziczenie z rodzica grupy)

No i z pomocą przyszło google, ...]]></description>
			<content:encoded><![CDATA[<p>Ostatnio naszła mnie potrzeba na utworzenie listy kontroli dostępu dla użytkowników do modułów i akcji, cel zadania:</p>
<ol>
<li>Użytkownik w wielu grupach</li>
<li>Grupy użytkowników	</li>
<li>Zadania</li>
<li>Grupy zadań</li>
<li>Dostęp grupie użytkowników do zadań</li>
<li>Dostęp grupie użytkowników do grupy zadań</li>
<li>Dostęp pojedynczemu użytkownikowi do zadań</li>
<li>Dostęp pojedynczemu użytkownikowi do grupy zadań</li>
<li>Hierarchia grup (dziedziczenie z rodzica grupy)</li>
</ol>
<p>No i z pomocą przyszło google, a dokładnie strona: <a href="http://www.tonymarston.net/" rell="nofollow">link</a>, kolega przedstawił wzór graficzny w jaki sposób wszystko z sobą połączyć:</p>
<p><img src="http://www.tonymarston.net/php-mysql/rbac-05.png" alt="RBAC" /></p>
<p>W tablicy TASK (czyli zadania, będę przechowywał moduły i akcje, w postaci drzewa <em>(tak drzewo, mam już sposób w doctrine na prace z drzewem, opiszę nie długo, albo ltree się zobaczy)</em>, po adresie albo routerze, jeżeli będzie przepisany link, będę pobierał moduł i akcję którą w danej chwili wykonuje użytkownik, na samym początku będzie sprawdzanie czy użytkownik ma dostęp do grupy zadań, jeżeli ma, jest szansa na to że będzie miał dostęp do zadania, jeżeli nie, sprawdzimy grupę użytkownika, czy ma dostęp do grupy zadań, biorąc pod uwagę czy ma ojca i jakie on ma uprawnienia do zadań oraz czy pozwala na dziedziczenie tych uprawnień.</p>
<p>Do: <strong>Zyx</strong><br />
W ten sposób rozwiązuje nawet problem taki jaki mi przedstawiłeś dotyczący kategorii artykułów dopisując je jako dziecko articles.</p>
<p>Co o Tym sądzicie? Już nie długo przedstawię pełny kod <img src='http://www.cojack.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cojack.pl/role-based-access-control/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

