gy-doc-code
[ class tree: gy-doc-code ] [ index: gy-doc-code ] [ all elements ]

Source for file User.php

Documentation is available at User.php

  1. <?php
  2.  
  3. namespace Gy\Core\User;
  4.  
  5. use Gy\Core\User\AccessUserGroup;
  6.  
  7. if (!defined("GY_CORE"&& (GY_CORE !== true)) die"gy: err include core" );
  8.  
  9. class User
  10.  
  11.     protected $authorized = false;
  12.     protected $dataUser;
  13.     protected $nameCookie = 'gy_user_auth';
  14.     protected $admin = false
  15.     public $tableName = 'users';
  16.  
  17.     public function __construct()
  18.     {
  19.         $this->checkUserCookie();
  20.     }
  21.  
  22.     /**
  23.      * getThisUserGroups - получить группы текущего пользователя
  24.      * @return array 
  25.      */
  26.     public function getThisUserGroups()
  27.     {
  28.         $arResult array();
  29.         if (!empty($this->dataUser['groups'])) {
  30.             $arResult $this->dataUser['groups'];
  31.         }
  32.         return $arResult;
  33.     }
  34.  
  35.     /**
  36.      * getDataThisUser - получить данные по текущему, авторизованному пользователю
  37.      * @return array 
  38.      */
  39.     public function getDataThisUser()
  40.     {
  41.         return $this->dataUser;
  42.     }
  43.  
  44.     /**
  45.      * isAdmin - проверить является ли текущий, авторизованный пользователем администратором
  46.      * @return booleand 
  47.      */
  48.     public function isAdmin()
  49.     {
  50.         return $this->admin;
  51.     }
  52.  
  53.     /**
  54.      * getAuthorized - узнать авторизован ли пользователь
  55.      * @return booleand 
  56.      */
  57.     public function getAuthorized()
  58.     {
  59.         return $this->authorized;
  60.     }
  61.  
  62.     /**
  63.      * getId - получить id текущего пользователя
  64.      * @return int 
  65.      */
  66.     public function getId(){
  67.         return $this->dataUser['id'];
  68.     }
  69.  
  70.     /**
  71.      * authorized - авторизовать пользователя
  72.      * @param type $log - логин
  73.      * @param type $pass - пароль
  74.      * @return booleand 
  75.      */
  76.     public function authorized($log$pass )
  77.     {
  78.         $result $this->chackUser($log$pass);
  79.         $this->authorized = $result;
  80.         return $result;
  81.     }
  82.  
  83.     /**
  84.      * chackUser - проверить существует ли пользователь
  85.      * @global type $DB 
  86.      * @global type $CRYPTO 
  87.      * @param type $log - логин
  88.      * @param type $pass - пароль
  89.      * @return booleand 
  90.      */
  91.     protected function chackUser($log$pass)
  92.     {
  93.         $result false;
  94.  
  95.         global $DB;
  96.         global $CRYPTO;
  97.  
  98.         $res $DB->selectDb(
  99.             $this->tableName
  100.             array('*'),
  101.             array(
  102.                 'AND' => array
  103.                     array('=' => array('login'"'".$log."'" ) ),
  104.                     array'=' => array('pass',"'".md5($pass.$CRYPTO->getSole())."'") )
  105.                 ),
  106.             )
  107.         );
  108.  
  109.         if ($arRes $DB->fetch($res)) {
  110.  
  111.             //$this->setUserCookie($arRes['id'] , $CRYPTO->getRandString());
  112.             $this->setUserCookie($arRes['id'$CRYPTO->getStringForUserCookie($arRes['login']$arRes['name']$arRes['id']));
  113.             $result true;
  114.         }
  115.  
  116.         return $result;
  117.  
  118.     }
  119.  
  120.     /**
  121.      * setUserCookie - установить пользовательскую куку
  122.      * @global type $DB 
  123.      * @param int $userId - id пользователя
  124.      * @param string $StringCookie - строка, значение куки
  125.      * @return boolean 
  126.      */
  127.     protected function setUserCookie($userId$StringCookie)
  128.     {
  129.         setcookie($this->nameCookie$StringCookie0'/');
  130.         global $DB;
  131.  
  132.         $res $DB->updateDb(
  133.             $this->tableName,
  134.             array('hash_auth' => $StringCookie),
  135.             array'=' => array('id' $userId ) )
  136.         );
  137.  
  138.         return true;
  139.     }
  140.  
  141.     /**
  142.      * deleteUserCookie - удалить пользовательскую куку
  143.      * @global type $_COOKIE 
  144.      * @global type $DB 
  145.      * @param int $userId - id пользователя
  146.      * @return boolean 
  147.      */
  148.     protected function deleteUserCookie($userId)
  149.     {
  150.         global $_COOKIE;
  151.         unset($_COOKIE[$this->nameCookie]);
  152.         global $DB;
  153.  
  154.         $res $DB->updateDb(
  155.             $this->tableName
  156.             array('hash_auth' => 'NULL'),
  157.             array'=' => array('id' $userId ) )
  158.         );
  159.  
  160.         return true;
  161.     }
  162.  
  163.     /**
  164.      * checkUserCookie - проверить пользовательскую куку
  165.      * @global type $_COOKIE 
  166.      * @return boolean 
  167.      */
  168.     public function checkUserCookie()
  169.     {
  170.         $result false;
  171.  
  172.         global $_COOKIE;
  173.  
  174.         if (!empty($_COOKIE[$this->nameCookie])) {
  175.  
  176.             $dataUser $this->findUserByCookie($_COOKIE[$this->nameCookie]);
  177.  
  178.             if ($dataUser !== false{
  179.                 $this->dataUser = $dataUser;
  180.  
  181.                 // получить группы к каким относится пользователь
  182.                 $this->dataUser['groups'AccessUserGroup::getListGroupsByUser($dataUser['id']);
  183.  
  184.                 $this->authorized = true;
  185.                 if (!empty($this->dataUser['groups']['admins'])) {
  186.                     $this->admin = true;
  187.                 }
  188.                 $result true;
  189.             }
  190.         }
  191.         return $result;
  192.     }
  193.  
  194.     /**
  195.      * findUserByCookie - найти пользователя по значению куки
  196.      * @global type $DB 
  197.      * @param string $cookie 
  198.      * @return array - данные пользователя
  199.      */
  200.     protected function findUserByCookie($cookie)
  201.     {
  202.         $result false;
  203.  
  204.         global $DB;
  205.  
  206.         $res $DB->selectDb(
  207.             $this->tableName,
  208.             array('*')
  209.             array'=' => array('hash_auth'"'".$cookie."'") )
  210.         );
  211.  
  212.         if ($arRes $DB->fetch($res)) {
  213.             $result $arRes;
  214.         }
  215.  
  216.         return $result;
  217.     }
  218.  
  219.     /**
  220.      * userExit - сделать выход для пользователя
  221.      * @return boolean 
  222.      */
  223.     public function userExit()
  224.     {
  225.         return $this->deleteUserCookie($this->dataUser['id']);
  226.     }
  227.  
  228.     /**
  229.      * getAllDataUsers - получить данные по пользователю
  230.      * @global type $DB 
  231.      * @return array 
  232.      */
  233.     public function getAllDataUsers()
  234.     {
  235.         $result array();
  236.  
  237.         global $DB;
  238.         $res $DB->selectDb(
  239.             $this->tableName,
  240.             array('*')
  241.         );
  242.         $result $DB->fetchAll($resfalse);
  243.  
  244.         // получить группы пользователей
  245.         foreach ($result as $key => $value{
  246.             $result[$key]['groups'AccessUserGroup::getListGroupsByUser($value['id']);
  247.         }
  248.  
  249.         return $result;
  250.     }
  251.  
  252.     /**
  253.      * getUserById - получить данные по пользователю по id
  254.      * @global type $DB 
  255.      * @param type $id 
  256.      * @return array 
  257.      */
  258.     public function getUserById($id)
  259.     {
  260.         $result array();
  261.         global $DB;
  262.         $res $DB->selectDb(
  263.             $this->tableName,
  264.             array('*'),
  265.             array(
  266.                 '=' => array('id'$id)
  267.             )
  268.         );
  269.         $result $DB->fetch($resfalse);
  270.  
  271.         if (!empty($result)) {
  272.             // получить группы текущего пользователя
  273.             $result['groups'AccessUserGroup::getListGroupsByUser($id);
  274.         }
  275.  
  276.         return $result;
  277.     }
  278.  
  279.     /**
  280.      * addUsers - добавить пользователя
  281.      * @global type $DB 
  282.      * @param type $data 
  283.      * @return boolean 
  284.      */
  285.     public function addUsers($data)
  286.     {
  287.         $result false;
  288.  
  289.         // id, login, name, pass, groups
  290.         global $DB;
  291.         $res $DB->insertDb($this->tableName$data);
  292.  
  293.         if ($res{
  294.             $result true;
  295.         }
  296.  
  297.         return $result;
  298.     }
  299.  
  300.     /**
  301.      * updateUserById - обновление данных пользователя
  302.      * @global type $DB 
  303.      * @param int $userId - id пользователя
  304.      * @param array $arParams - данные пользователя
  305.      * @return boolean 
  306.      */
  307.     public function updateUserById($userId$arParams)
  308.     {
  309.         $result false;
  310.  
  311.         unset($arParams['id']);
  312.  
  313.         global $DB;
  314.         $res $DB->updateDb($this->tableName$arParamsarray('=' => array('id'$userId)));
  315.  
  316.         if ($res{
  317.             $result true;
  318.         }
  319.  
  320.         return $result;
  321.     }
  322.  
  323.     /**
  324.      * deleteUserById - удалить пользователя
  325.      * @global type $DB 
  326.      * @param int $idUser - id пользователя
  327.      * @return string 
  328.      */
  329.     public function deleteUserById($idUser)
  330.     {
  331.         $result false;
  332.  
  333.         if (is_numeric($idUser&& ($idUser != 1)) {
  334.             global $DB;
  335.  
  336.             $res $DB->deleteDb($this->tableNamearray('='=>array('id'$idUser)));
  337.  
  338.             if ($res{
  339.                 $result true;
  340.             }
  341.         }
  342.         return $result;
  343.     }
  344.  
  345. }

Documentation generated on Sat, 27 Apr 2024 11:17:30 +0300 by phpDocumentor 1.4.3