<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum CakePHP.org.pl - usunięcie konta przez admina i aktywna sesja...]]></title>
	<link rel="self" href="http://forum.cakephp.org.pl/feed/atom/topic/109/"/>
	<updated>2009-10-16T11:31:00Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.cakephp.org.pl/topic/109/usuniecie-konta-przez-admina-i-aktywna-sesja/</id>
		<entry>
			<title type="html"><![CDATA[Odp: usunięcie konta przez admina i aktywna sesja...]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/post/518/#p518"/>
			<content type="html"><![CDATA[<p>hej,</p><p>jest z tym jeden maly problem: </p><p> * CakePHP session IDs are also regenerated between requests if<br /> * &#039;Security.level&#039; is set to &#039;high&#039;</p><p>poradzilem sobie inaczej - postanowilem skorzystac z klasy Cache:</p><p>1) wrzucilem w core.php wlasny setup keszu:</p><div class="codebox"><pre><code>Cache::config(&#039;cacheDeletedUsers&#039;, array(&#039;engine&#039;=&gt;&#039;File&#039;, &#039;path&#039; =&gt; CACHE, &#039;duration&#039; =&gt; 1200));</code></pre></div><p>jesli &#039;Security.level&#039; jest ustawiony na &#039;high&#039; sesja w aplikacji trwa 20 minut - stad wartosc 1200 dla swiezosci keszu... </p><p>2) w app_controller wrzucilem taka funkcje:</p><div class="codebox"><pre><code>function _cacheDeletedUsers($ids = array()) { //$ids - tablica id-ków usuniętych użytkowników
        
        Configure::write(&#039;Cache.disable&#039;, false);
        
        $deleted_users = Cache::read(&#039;DeletedUsers&#039;);
        if (!$deleted_users) {
            //pusty cache
            Cache::write(&#039;DeletedUsers&#039;, $ids, array(&#039;config&#039; =&gt; &#039;cacheDeletedUsers&#039;));
        } else {
            //pełny cache
            $new_ids = array_merge($deleted_users, $ids);
            Cache::write(&#039;DeletedUsers&#039;, $new_ids, array(&#039;config&#039; =&gt; &#039;cacheDeletedUsers&#039;));
        }
    
    }</code></pre></div><p>wywoluje ja tuz po pomyslnym usunieciu usera przez admina...</p><p>3) w app_controller w beforeFilter sprawdzam, czy zalogowany user nie jest przypadkiem na liscie usunietych:</p><div class="codebox"><pre><code>        
        if ($this-&gt;Auth-&gt;user()) {
            
            Configure::write(&#039;Cache.disable&#039;, false);
            $deleted_users = Cache::read(&#039;DeletedUsers&#039;);
            if ($deleted_users &amp;&amp; in_array($this-&gt;Auth-&gt;user(&#039;id&#039;), $deleted_users)) {
                $this-&gt;redirect($this-&gt;Auth-&gt;logout());
            }
}</code></pre></div><p>Co sadzicie o tym rozwiazaniu???</p>]]></content>
			<author>
				<name><![CDATA[tomay7]]></name>
				<uri>http://forum.cakephp.org.pl/user/227/</uri>
			</author>
			<updated>2009-10-16T11:31:00Z</updated>
			<id>http://forum.cakephp.org.pl/post/518/#p518</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: usunięcie konta przez admina i aktywna sesja...]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/post/517/#p517"/>
			<content type="html"><![CDATA[<p>Możesz na przykład dla danego użytkownika zapisać jego aktualny session_id (np w tabeli users). Wtedy przy usuwaniu możesz spróbować usunąć sesję fizycznie z serwera niezależnie od sposobu trzymania sesji (baza - wiadomo, jeśli php/cake - pliki są nazywane po id sesji chyba).</p><p>Innym sposobem jest sprawdzanie za każdym razem, czy zalogowany user ma jeszcze aktywne konto w bazie. Ale to dodatkowe query przy każdym odświerzeniu, więc rozwiązanie niezalecane.</p>]]></content>
			<author>
				<name><![CDATA[id02009]]></name>
				<uri>http://forum.cakephp.org.pl/user/199/</uri>
			</author>
			<updated>2009-10-16T08:36:01Z</updated>
			<id>http://forum.cakephp.org.pl/post/517/#p517</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[usunięcie konta przez admina i aktywna sesja...]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/post/516/#p516"/>
			<content type="html"><![CDATA[<p>hej,</p><p>kolejny problem - zalozmy ze w serwisie mamy dwoch uzytkownikow: <strong>jankowalski</strong> i <strong>doda</strong>. </p><p>jankowalski jest adminem, doda jest standardowym uzytkownikiem, obydwoje sa zalogowani w tym samym czasie. jankowalski z panelu admina w aplikacji usuwa uzytkownika doda - jednak doda jest ciagle zalogowana i jej dane znajduja sie w sesji. jak automatycznie wylogowac dode po usunieciu tego uzytkownika? zakladam ze nie przechowuje sesji w bazie</p>]]></content>
			<author>
				<name><![CDATA[tomay7]]></name>
				<uri>http://forum.cakephp.org.pl/user/227/</uri>
			</author>
			<updated>2009-10-15T14:40:00Z</updated>
			<id>http://forum.cakephp.org.pl/post/516/#p516</id>
		</entry>
</feed>
