<?php
namespace Cart;
/**
* 用户类
* @package Cart
*/
class User {
// 用户id
private $user_id;
// 分组id
private $user_group_id;
// 用户名
private $username;
// 权限
private $permission = array();
// 构造方法
public function __construct($registry) {
// 注册数据库类
$this->db = $registry->get('db');
// 注册请求类
$this->request = $registry->get('request');
//注册session类
$this->session = $registry->get('session');
// 查询用户信息
if (isset($this->session->data['user_id'])) {
$user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user WHERE user_id = '" . (int)$this->session->data['user_id'] . "' AND status = '1'");
if ($user_query->num_rows) {
$this->user_id = $user_query->row['user_id'];
$this->username = $user_query->row['username'];
$this->user_group_id = $user_query->row['user_group_id'];
$this->db->query("UPDATE " . DB_PREFIX . "user SET ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "' WHERE user_id = '" . (int)$this->session->data['user_id'] . "'");
$user_group_query = $this->db->query("SELECT permission FROM " . DB_PREFIX . "user_group WHERE user_group_id = '" . (int)$user_query->row['user_group_id'] . "'");
$permissions = json_decode($user_group_query->row['permission'], true);
if (is_array($permissions)) {
foreach ($permissions as $key => $value) {
$this->permission[$key] = $value;
}
}
} else {
$this->logout();
}
}
}
// 登陆
public function login($username, $password) {
$user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user WHERE username = '" . $this->db->escape($username) . "' AND status = '1'");
if ($user_query->num_rows) {
if (password_verify($password, $user_query->row['password'])) {
if (password_needs_rehash($user_query->row['password'], PASSWORD_DEFAULT)) {
$new_password_hashed = password_hash($password, PASSWORD_DEFAULT);
}
} elseif ($user_query->row['password'] == sha1($user_query->row['salt'] . sha1($user_query->row['salt'] . sha1($password))) || $user_query->row['password'] == md5($password)) {
$new_password_hashed = password_hash($password, PASSWORD_DEFAULT);
} else {
return false;
}
$this->session->data['user_id'] = $user_query->row['user_id'];
$this->user_id = $user_query->row['user_id'];
$this->username = $user_query->row['username'];
$this->user_group_id = $user_query->row['user_group_id'];
if (isset($new_password_hashed)) {
$this->db->query("UPDATE " . DB_PREFIX . "user SET salt = '', password = '" . $this->db->escape($new_password_hashed) . "' WHERE user_id = '" . (int)$this->user_id . "'");
}
$user_group_query = $this->db->query("SELECT permission FROM " . DB_PREFIX . "user_group WHERE user_group_id = '" . (int)$user_query->row['user_group_id'] . "'");
$permissions = json_decode($user_group_query->row['permission'], true);
if (is_array($permissions)) {
foreach ($permissions as $key => $value) {
$this->permission[$key] = $value;
}
}
return true;
} else {
return false;
}
}
// 退出
public function logout() {
unset($this->session->data['user_id']);
$this->user_id = '';
$this->username = '';
}
// 是否有权限
public function hasPermission($key, $value) {
if (isset($this->permission[$key])) {
return in_array($value, $this->permission[$key]);
} else {
return false;
}
}
// 是否登陆
public function isLogged() {
return $this->user_id;
}
// 获取用户id
public function getId() {
return $this->user_id;
}
// 获取用户名
public function getUserName() {
return $this->username;
}
public function getGroupId() {
return $this->user_group_id;
}
}
【opencart3源码分析】用户类user.php
猜你喜欢
转载自blog.csdn.net/qq2942713658/article/details/81516577
今日推荐
周排行