123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- <?php
- namespace app\service\admin;
- use laytp\library\Token;
- use laytp\traits\Error;
- /**
- * 后台用户服务实现者
- * @package app\service\admin
- */
- class User
- {
- use Error;
- protected $_user = null;//实例化的用户对象
- protected $_token = null;//用户登录凭证,token
- protected $_isLogin = null;//当前用户是否登录
- protected $userModel = null;//用户数据模型
- protected $allowFields = ['id', 'username', 'nickname', 'avatar', 'is_super_manager', 'status', 'create_time'];
- protected $tokenKeepTime = 365 * 24 * 60 * 60;//Token默认有效时长,单位秒,365天
- /**
- * 初始化
- * @param $token
- * @return bool
- */
- public function init($token)
- {
- if (!$token) {
- $this->setError('token不能为空,请重新登录');
- return false;
- }
- $data = Token::get($token);
- if (!$data) {
- $this->setError('token无效,请重新登录');
- return false;
- }
- $userId = intval($data['user_id']);
- if ($userId > 0) {
- $user = \app\model\admin\User::with(['avatar_file'])->findOrEmpty($userId);
- if (!$user) {
- $this->setError('账号不存在,请重新登录');
- return false;
- }
- //用户状态 1正常 2禁用
- if ($user['status'] != 1) {
- $this->setError('账号被禁用,请联系管理员');
- return false;
- }
- $this->_user = $user;
- $this->_isLogin = true;
- $this->_token = $token;
- return true;
- } else {
- $this->setError('账号不存在,请重新登录');
- return false;
- }
- }
- /**
- * 退出登录
- * @return bool
- */
- public function logout()
- {
- if (!$this->_isLogin) {
- $this->setError('你没有登录');
- return false;
- }
- //设置登录标识
- $this->_isLogin = false;
- //删除Token
- Token::delete($this->_token);
- return true;
- }
- /**
- * 获取登录用户信息
- */
- public function getUserInfo()
- {
- $data = $this->_user->toArray();
- $allowFields = $this->getAllowFields();
- $userInfo = array_intersect_key($data, array_flip($allowFields));
- $userInfo['avatar_file'] = $data['avatar_file'];
- $userInfo = array_merge($userInfo, ['token' => $this->_token]);
- return $userInfo;
- }
- /**
- * 获取允许输出的字段
- * @return array
- */
- public function getAllowFields()
- {
- return $this->allowFields;
- }
- /**
- * 获取User模型
- * @return User
- */
- public function getUser()
- {
- return $this->_user;
- }
- /**
- * 判断是否登录
- * @return boolean
- */
- public function isLogin()
- {
- if ($this->_isLogin) {
- return true;
- }
- return false;
- }
- /**
- * 获取当前Token
- * @return string
- */
- public function getToken()
- {
- return $this->_token;
- }
- }
|