ups... coś nie wyszło. Teraz powinno być ok. To samo co poprzedni commit.
[watermeloncms.git] / cms / wtrmln / modules / plugins / user.php
blob03860869ff57333109834dced8f6ccb9738cd9a6
1 <?php
2 /********************************************************************
4 Watermelon CMS
6 Copyright 2008 Radosław Pietruszewski
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 version 2 as published by the Free Software Foundation.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 ********************************************************************/
23 class User extends Plugin
26 * private Model_User $User
28 * Instancja klasy Model_User
30 private $User;
32 private static $LoggedIn = null;
35 * public void User()
37 * Konstruktor. Uzupełnia pole $User.
40 public function User()
42 parent::Plugin();
44 $this->User = $this->load->model('user');
48 * public bool Login(string $user, string $password, bool $autologin)
50 * Loguje użytkownika. Zwraca true, jeśli logowanie wypadło pomyślnie, w
51 * przeciwnym wypadku zwraca false.
53 * string $user - Nazwa użytkownika
54 * string $password - Hasło użytkownika (w czystej postaci)
55 * bool $autologin - Zalogować usera automatycznie przy każdej wizycie?
56 * TRUE - Tak, loguj mnie automatycznie
57 * FALSE - Nie loguj mnie automatycznie!
60 public function Login($user, $password, $autologin)
62 // Walidacja wprowadzonych danych
64 if(empty($user))
66 $errors[] = 'Pole <em>login</em> musi być wypełnione.';
69 if(empty($password))
71 $errors[] = 'Pole <em>hasło</em> musi być wypełnione.';
74 if(isset($errors))
76 setH1('Błąd logowania');
78 echo $this->load->view('login_loginerrors', array('errors' => $errors));
79 return false;
82 // sprawdzamy, czy user istnieje
84 $userdata = $this->User->LoginUserData($user);
86 if($userdata->num_rows() == 0)
88 setH1('Błąd logowania');
90 $errors[] = 'Użytkownik <em>' . $user . '</em> nie istnieje.';
92 echo $this->load->view('login_loginerrors', array('errors' => $errors));
93 return false;
96 // sprawdzamy poprawność hasła
98 $userdata = $userdata->to_obj();
100 if($userdata->password != strHash($password . $userdata->salt, intval($userdata->hashalgo)))
102 setH1('Błąd logowania');
104 $errors[] = 'Niepoprawne hasło.';
106 echo $this->load->view('login_loginerrors', array('errors' => $errors));
107 return false;
110 // generujemy nowy salt i hash i
111 // zmieniamy hashalgo (jeśli nieaktualne)
113 $salt = strHash(uniqid(mt_rand(), true));
115 $salt = substr($salt, 0, 16);
117 $hash = strHash($password . $salt);
119 $this->User->updatePassword($user, $hash, $salt, Config::$defaultHashAlgo);
121 // logujemy :]
123 $_SESSION['WTRMLN_USER'] = $user;
124 $_SESSION['WTRMLN_PASS'] = $hash;
125 $_SESSION['WTRMLN_LASTSEEN'] = time();
127 // jeszcze informacyjka
129 setH1('Logowanie udane');
131 echo $this->load->view('login_success');
133 return true;
136 public function Register($user, $password, $password2, $email, $email2, $data)
138 //TODO
141 public function GetUserData($dataname)
143 //TODO
146 public function Logout()
148 session_destroy();
150 self::$LoggedIn = false;
152 //TODO
155 public function IsLoggedIn()
157 // sprawdzamy, czy już wcześniej funkcja była odpalana
159 if(self::$LoggedIn !== null)
161 return self::$LoggedIn;
164 // sprawdzamy, czy user istnieje
166 $userdata = $this->User->LoginUserData($_SESSION['WTRMLN_USER']);
168 if($userdata->num_rows() == 0)
170 self::$LoggedIn = false;
171 return false;
174 // sprawdzamy poprawność hasła
176 $userdata = $userdata->to_obj();
178 if($_SESSION['WTRMLN_PASS'] != $userdata->password)
180 self::$LoggedIn = false;
181 return false;
184 // sprawdzamy kiedy ostatnio był koleś (limit długości sesji)
186 if($_SESSION['WTRMLN_LASTSEEN'] < time() - 1800)
188 $this->Logout();
191 $_SESSION['WTRMLN_LASTSEEN'] = time();
193 self::$LoggedIn = true;
195 return true;
197 //TODO
200 // TODO