zastanawiam się jeszcze czy na pewno warto rozbijać obsługę użytkownika na kilka klas: users, usersReg, usersLog, usersEdit, ma to być wykorzystane w portalu i osobno w sklepie internetowym
klasa logowania co o niej myślicie?
<?php
class UserLog {
/**
*
* id użytkonika
*
*/
public $userId;
/**
*
* tablica błędów logowania
*
* 101 - zablokowany
* 102 - nie aktywny
*/
/**
* logowanie użytkownika
*
* Sprawdza czy login i hasło się zgadadza
*
* @set array $_SESSION[user]
* @return userId
*/
public function login($login, $pass) {
$model = $this->loadModel('userLog');
$user = $model->login($login, $pass);
if ($user) {
if ($user['blocked'] === true) {
return false;
}
if ($user['active'] === false) {
return false;
}
$this->setUserSession($user);
$this->userId = $user['id'];
return $this->userId;
} else {
return false;
}
}
/**
* ustawiwa sesje użytkownika na podstawie zwróconych danych z logowania
*
* @param array $data
*
* @set array $_SESSION[user] (id, email, name)
*/
private function setUserSession($data) {
foreach ($data as $k=>$v) {
$_SESSION['user'][$k] = $v;
}
}
/**
*
* niszczy sesje użytkownika
*
*/
protected function logout($login) {
}
/**
*
* ładuje model
*
*/
public function loadModel($name, $path='model/') {
$path=$path.$name.'.php';
$name=$name.'Model';
try {
require $path;
$ob=new $name();
} else {
throw new Exception('Can not open model '.$name.' in: '.$path);
}
}
catch(Exception $e) {
echo $e->getMessage().'<br /> File: '.$e->getFile().'<br />
Code line: '.$e->getLine().'<br />
Trace: '.$e->getTraceAsString();
}
return $ob;
}
}
?>
klasa rejestracji
class UserReg {
/**
*
* id użytkonika
*
*/
public $userId;
/**
*
* bool czy użytkownika przy zapisie ma zablokowane konto
*
*/
public $userBlocked = 0;
/**
*
* bool czy użytkownika przy zapisie ma jeste aktywny
*
*/
public $userActive = 1;
/**
*
* bool czy użytkownika po zapisie jest zalogowany
*
*/
public $userLonin = 1;
/**
*
* Ustawia czy użytkownik ma być zalogowany po rejestracji
*
*/
public function setUserLogin($bool) {
$this->userLonin = $bool;
}
/**
*
* Ustawia czy użytkownik ma być zablokowany
*
*/
public function setUserBlocked($bool) {
$this->userBlocked = $bool;
}
/**
*
* Ustawia czy użytkownik ma być aktywny
*
*/
public function setUserActive($bool) {
$this->userActive = $bool;
}
/*
* sprawdza czy użytkownik istniej
*
* @param string $email
* @return bool
*/
public function checkEmail($email) {
$model = $this->loadModel('userReg');
return $model->checkEmail($email);
}
/*
* zapis nowego użytkownika
*
* @param array $data
* @set $_SESSION[user]
* @return userId
*/
public function save($data) {
$data['users']['blocked'] = $this->userBlocked;
$data['users']['active'] = $this->userActive;
$model = $this->loadModel('userReg');
$this->userId = $model->insert($data);
if ($this->userId) {
if ($this->userActive = 1) {
'id' = > $this->userId,
'email' = > $data['email'],
'name' = > $data['name'];
);
$this->setUserSession($userSession)
}
return $this->userId;
} else {
return false;
}
}
/**
* ustawiwa sesje użytkownika na podstawie zwróconych danych z logowania
*
* @param array $data
*
* @set array $_SESSION[user] (id, email, name)
*/
private function setUserSession($data) {
foreach ($data as $k=>$v) {
$_SESSION['user'][$k] = $v;
}
}
/**
*
* ładuje model
*
*/
public function loadModel($name, $path='model/') {
$path=$path.$name.'.php';
$name=$name.'Model';
try {
require $path;
$ob=new $name();
} else {
throw new Exception('Can not open model '.$name.' in: '.$path);
}
}
catch(Exception $e) {
echo $e->getMessage().'<br /> File: '.$e->getFile().'<br />
Code line: '.$e->getLine().'<br />
Trace: '.$e->getTraceAsString();
}
return $ob;
}
}