Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Подразумевается, что это класс-наследник AR, обладающий методами поиска и сохранения данных в БД
- */
- class User {
- public $id;
- public $login;
- private $pass;
- private function encrypt_password($password)
- {
- if(!(empty($password))){
- $this->pass = <хэш от полученного $password>;//специфика получения хэша опущена
- }
- }
- public static function authenticate($login, $password)
- {
- $user = User->find('login', $login);//название метода "find" условное, предполагается, что используемый AR в том или ином виде реализует методы поиска по полям
- if((!empty($user)) &&($user.pass === <хэш от полуученного $password>)){
- return $user;
- } else {
- return null;
- }
- }
- }
- /**
- * Класс отвечает за регистрацию пользователя
- */
- class UsersController {
- function register()
- {
- if($this->check($this->login))
- {
- //бла бла вы уже зарегистрированны
- }else{
- $this->db->create('user', [$this->login, $this->password]);
- //redirect to login page
- }
- }
- /**
- * собственно регистрация пользователя
- */
- function create(){
- $user = new User;
- $user->login = параметры_запроса['login'];
- $user->encrypt_password(параметры_запроса['пароль']);
- if($user->save()){
- /**
- * действия после успешной регистрации:
- * оптравка сообщения на почту, редирект на главную страницу, etc.
- */
- } else {
- /**
- * сообщение об ошибке(на странице с формой регистрации, в мобильной приложении, etc.)
- */
- }
- }
- }
- /**
- * Класс отвечает за аутентификацию пользователя
- */
- class SessionsController {
- /**
- * Аутентификация(вход/логин) пользователя
- */
- function create(){
- $user = User::authenticate(параметры_запроса['login'], параметры_запроса['пароль']);
- if(!(empty($user))){
- $_SESSION['user'] = $user->id; //как пример действий по созданию сессии пользователя
- /**
- * дальше выполняется необходимая после успешной аутентификации логика.
- * например, редирект пользователя на какую-либо страницу
- */
- } else {
- /**
- * действия после ошибки аутентификации:
- * вывод сообщения об ошибке, возможный редирект
- */
- }
- }
- /**
- * Прекраещение сессии пользователя(выход)
- */
- function destroy(){
- unset($_SESSION['user']); //если аутентификация использует $_SESSION
- /**
- * действия после завершения сессии пользователя
- * например, редирект пользователя
- */
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement