Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Kohana] Auth i logowanie się z uprawieniami
szczurek
post
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 1.10.2006
Skąd: Bydgoszcz

Ostrzeżenie: (10%)
X----


Witam,
właśnie usiadłem do Kohany no i mam pierwszy problem z modułem autoryzacji.

Napisałem prosty kod który dodaje użytkownika do bazy:

  1. <?php
  2. public function dodaj()
  3.    {
  4.        $user=ORM::factory('user',1);
  5.        foreach($_POST as $key=>$val)
  6.        {
  7.            $user->$key=$val;
  8.        }
  9.        
  10.        if($user->add(ORM::factory('role', 'admin')) && $user->save())
  11.        {
  12.            Auth::instance()->login($_POST['username'], $_POST['password']);
  13.            //przzekierowanie
  14.            url::redirect(url::base().'index.php/uzytkownik');
  15.        }
  16. ?>


w tabeli z rolami są dwie login z id 1 i admin z id 2

Użytkownik dodany jako admin nie może się zalogować.

Dokładniej wywołanie tej metody
  1. <?php
  2. public function zaloguj()
  3.    {
  4.        $user=ORM::factory('user', $this->a_post['username']);
  5.        if(!$user->loaded)
  6.        {
  7.            $this->a_Bledy['uzytkownik']="Podany login nie istnieje.";
  8.        }
  9.        elseif($this->o_Autoryzacja->login($user, $this->a_post['password']))
  10.        {
  11.            if($this->o_Sesja->get_once('adres_przekierowania')<>"")
  12.            {
  13.                url::redirect($this->o_Sesja->get_once('adres_przekierowania'));
  14.            }
  15.            else
  16.            {
  17.                url::redirect(url::base());
  18.            }
  19.        }
  20.        else
  21.        {
  22.            $this->a_Bledy['haslo']="Podane hasło jest nieprawidłowe";
  23.            
  24.        }
  25.        
  26.        $this->index();
  27.    }
  28. ?>

kończy się błędem hasła czyli występuje ostatnie else. Kiedy zmienię w tabeli roles_users przypisanie roli z użytkownika admin na login czyli z id 2 na id 1 ten sam użytkownik z tym samym hasłem bez problemu się loguję. Nie wiem na czym polega mój błąd.

Może ktoś ma pomysł. Korzystam z Kohana 2.3.4 a to autoryzacji oczywiście moduł Auth korzystający z ORM.


Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
k_@_m_i_l
post
Post #2





Grupa: Zarejestrowani
Postów: 349
Pomógł: 72
Dołączył: 22.01.2008
Skąd: Wadowice/Oświęcim

Ostrzeżenie: (0%)
-----


Twój problem polega na tym,że jeśli masz użytkownika o uprawnieniach admin,to musisz dodać wiersz do tabeli roles_user(chyba tak ona sie nazywa,ale bedziesz wiedział o co chodzi) dla tego użytkownika jeszcze role login.Czyli taki user musi mieć zarówno role 1 jak i role 2 i wtedy masz admina.

Też z tym miałem problem,ale udało się rozwiązać to (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
JoShiMa
post
Post #3





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


A może lepiej zainteresuj się modułem Simple_Auth. Bardzo przyjemny i łatwy w użyciu.
Go to the top of the page
+Quote Post
skowron-line
post
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Włącz sobie profilera i zobacz co do bazy leci na tej podstawie będzie Ci łatwiej namierzyć błąd.
Oczywiście zgadzam się z kolega nademną że Simple_Auth to dużo fajniejsza sprawa

Polecam również lekturkę
http://thejw23.blogspot.com/2009/04/simple...-przyklady.html Tu kolega swietnie opisuje co w swiecie Kohany piszczy.
Go to the top of the page
+Quote Post
szczurek
post
Post #5





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 1.10.2006
Skąd: Bydgoszcz

Ostrzeżenie: (10%)
X----


Dzięki za odpowiedzi,

co do Simple Auth to powiem szczerze, że przekonał mnie tak sobie, bo go próbowałem na początku.

A co do profilera no to rozjaśniło mi to dlaczego nie loguje, ale nadal nie wiem jak to zmienić.

W jednym z zapytań pobiera id roli "login" no a później pewnie porównuje sobie czy user do niej należy a jak nie należy to mówi, że wypad.

Ale to dziwne, nigdzie nie ustawiałem żeby logował tylko z rolą id 1. Chciałem zrobić ograniczenia modułów dla różnych ról. Idę szukać dalej. A jeśli ktoś ma pomysł dlaczego porównuje tylko z rolą która ma ID 1 bazie? Niby to pownien być admin. Ale logować przecież powinno się na każdą istniejącoą rolę.
Go to the top of the page
+Quote Post
skowron-line
post
Post #6





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


http://thejw23.blogspot.com/2009/04/simple...-przyklady.html
http://thejw23.blogspot.com/2009/07/simple-auth-porady.html

Poczytaj to artykuly o Simple Auth od samego autora klasy.
Go to the top of the page
+Quote Post
szczurek
post
Post #7





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 1.10.2006
Skąd: Bydgoszcz

Ostrzeżenie: (10%)
X----


Z tego co zrozumiałem z artykułu mam tylko 3 role. A jak zmodyfikuję tabele to pewnie jeszcze dalej będę musiał grzebać. Nie ukrywam, że ilość ról w systemie będzie zdecydowanie większa niż 3 i chciałbym aby ich dodawanie nie było związane ze zmianą struktury bazy danych.
Go to the top of the page
+Quote Post
JoShiMa
post
Post #8





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


Autor Simple_Auth wypuścił wersję betha z dynamicznym dodawaniem ról: http://forum.kohanaphp.pl/index.php/topic,697.0.html

Ten post edytował JoShiMa 4.08.2009, 10:46:28
Go to the top of the page
+Quote Post
szczurek
post
Post #9





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 1.10.2006
Skąd: Bydgoszcz

Ostrzeżenie: (10%)
X----


Widzę, że sami zwolennicy Simple_Auth. Który nie do końca wydaje mi się simple.

Problem rozwiązałem. Polegał on na tym, że w driverze Auth przy logowaniu była "z palca" wpisana rola login i trzeba było się tego pozbyć.

Aktualnie zastanawiam się jak za pomocą ORM dodać kilka wierszy naraz. Chodzi o przypisanie użytkownikowi kilku ról naraz przy jego tworzeniu.

Pozdrawiam
Go to the top of the page
+Quote Post
bełdzio
post
Post #10





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


dodanie roli korzystając z ORM:

  1. <?php
  2. $user = new User_Model( 1 );
  3. $user -> add( ORM :: factory( 'role', nazwa_roli ) );
  4. $user -> save( );
  5. ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 07:40