Advertisement
Guest User

Untitled

a guest
Aug 15th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.48 KB | None | 0 0
  1. <?php
  2. /**
  3. *  Подразумевается, что это класс-наследник AR, обладающий методами поиска и сохранения данных в БД
  4. */
  5. class User {
  6.   public $id;
  7.   public $login;
  8.   private $pass;
  9.  
  10.   private function encrypt_password($password)
  11.   {
  12.     if(!(empty($password))){
  13.       $this->pass = <хэш от полученного $password>;//специфика получения хэша опущена
  14.     }
  15.   }
  16.  
  17.   public static function authenticate($login, $password)
  18.   {
  19.     $user = User->find('login', $login);//название метода "find" условное, предполагается, что используемый AR в том или ином виде реализует методы поиска по полям
  20.     if((!empty($user)) &&($user.pass === <хэш от полуученного $password>)){
  21.       return $user;
  22.     } else {
  23.       return null;
  24.     }
  25.   }
  26. }
  27.  
  28. /**
  29. *  Класс отвечает за регистрацию пользователя
  30. */
  31. class UsersController {
  32.   function register()
  33.   {
  34.       if($this->check($this->login))
  35.       {
  36.           //бла бла вы уже зарегистрированны
  37.       }else{
  38.           $this->db->create('user', [$this->login, $this->password]);
  39.           //redirect to login page
  40.       }
  41.   }
  42.  
  43.   /**
  44.   *  собственно регистрация пользователя
  45.   */
  46.   function create(){
  47.     $user = new User;
  48.     $user->login = параметры_запроса['login'];
  49.     $user->encrypt_password(параметры_запроса['пароль']);
  50.     if($user->save()){
  51.       /**
  52.       *  действия после успешной регистрации:
  53.       *  оптравка сообщения на почту, редирект на главную страницу, etc.
  54.       */
  55.     } else {
  56.       /**
  57.       *  сообщение об ошибке(на странице с формой регистрации, в мобильной приложении, etc.)
  58.       */
  59.     }
  60.   }
  61. }
  62.  
  63. /**
  64. *  Класс отвечает за аутентификацию пользователя
  65. */
  66. class SessionsController {
  67.   /**
  68.   *  Аутентификация(вход/логин) пользователя
  69.   */
  70.   function create(){
  71.     $user = User::authenticate(параметры_запроса['login'], параметры_запроса['пароль']);
  72.     if(!(empty($user))){
  73.       $_SESSION['user'] = $user->id; //как пример действий по созданию сессии пользователя
  74.       /**
  75.       *  дальше выполняется необходимая после успешной аутентификации логика.
  76.       *  например, редирект пользователя на какую-либо страницу
  77.       */
  78.     } else {
  79.       /**
  80.       *  действия после ошибки аутентификации:
  81.       *  вывод сообщения об ошибке, возможный редирект
  82.       */
  83.     }
  84.  
  85.   }
  86.   /**
  87.   *  Прекраещение сессии пользователя(выход)
  88.   */
  89.   function destroy(){
  90.     unset($_SESSION['user']); //если аутентификация использует $_SESSION
  91.     /**
  92.       *  действия после завершения сессии пользователя
  93.       *  например, редирект пользователя
  94.       */
  95.   }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement