Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] sfGuard
AxZx
post
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


witam,

chciałbym skorzystać z pluginu sfGuard i w związku z tym mam pytanie.
jak zintegrować go z profilami użytkowników w moim serwisie?
załóżmy jest tabela profils z kolumnami imie, nazwisko, email, miejscowosc ...

chciałbym żeby akcja logowania sprawdzała uprawnienia (tabele sf_guard_gruop, sf_guard_permissions, etc) ale też żeby był sprawdzany status profilu - tzn żeby była wykonywana logika, która ja chcę już wprowadzić (sprawdzanie statusu czy aktywny, zapisanie aktywnosci, daty ostatniego logowania).

jak to wszystko razem połączyć?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
AxZx
post
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


no ale po co 2 klucze?

w tabeli profil
Kod
idprofil: { type: integer, foreignTable: sf_guard_user, foreignReference: id, required: true, onDelete: cascade }

i
Kod
all:
  sf_guard_plugin:
    profile_class:      Profil
    profile_field_name: idprofil


nie może tak być?
hmm, pewnie mogłoby się coś pomieszać... ale ja właśnie się obawiam, że dwa ID wprowadzą zamieszanie.



EDIT
zrobiłem tak jak radzisz.

tylko jedno mnie irytuje.
teraz jest wykonywane zapytanie, które pobiera usera z bazy sprawdzając czy jest taki. robi to w metodzie getGuardUser.
musiałem ją nadpisać bo nie było tam sprawdzania is_active.

no i przydałoby się jeszcze pobrac dane z tabeli profil.
jest metoda getProfil. ale wykonywane jest wtedy drugie zapytanie.
staram się to jakoś połączyć, ale musiałbym model chyba nadpisać.
  1. <?php
  2. public function getGuardUser()
  3.    {              
  4.        if (!$this->user && $id = $this->getAttribute('user_id', null, 'sfGuardSecurityUser'))
  5.        {
  6.            $c = new Criteria();
  7.            $c->add(sfGuardUserPeer::IS_ACTIVE, true);
  8.            $c->add(sfGuardUserPeer::ID, $id);            
  9.            $this->user = sfGuardUserPeer::doSelectOne($c);
  10.            
  11.            if ( ! $this->user)
  12.            {
  13.                    // the user does not exist anymore in the database
  14.                $this->signOut();
  15.                
  16.                $this->setFlash('msg', 'Konto zostało zablokowane lub usunięte. W razie wątpliwości prosimy o kontakt z administratorem.');
  17.                //redirect to homepage
  18.            }
  19.        }
  20.        
  21.        return $this->user;
  22.    }
  23. ?>

tak wygląda metoda getUser.

jakieś pomysły jak to inaczej rozwiązać niż modyfikować model?
Go to the top of the page
+Quote Post

Posty w temacie


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: 3.10.2025 - 15:46