123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- <?php
- namespace app\common\model;
- use app\common\ErrorCode;
- class User extends Base
- {
- public static $fieldStr = "id,login_name,salt,valid,last_login_time,login_count,token";
- /**
- * 检测用户是否存在
- * @param $login_name
- * @return array
- */
- public static function checkRegUser($login_name)
- {
- //检测账号是否被注册
- $where['login_name'] = $login_name;
- $exist = self::where($where)->find();
- if ($exist) {
- //用户存在
- return self::standardOutput(9999, "用户已存在");
- }
- return self::standardOutput(ErrorCode::CODE_SUCC);
- }
- /**
- * 用户注册
- * @param $login_name
- * @param $password
- * @return array
- */
- public static function regUser($login_name, $password)
- {
- //注册用户
- $res = self::checkRegUser($login_name);
- if ($res["code"] != 0) {
- return $res;
- }
- //创建用户
- $salt = randNum(4);//生成随机盐
- $user = new User([
- "login_name" => $login_name,
- "salt" => $salt,
- "password" => md5($salt . $password),
- "ext1" => $salt . $password
- ]);
- $res = $user->save();
- if ($res === false) {
- return self::standardOutput(ErrorCode::CODE_DB_ERROR, ErrorCode::getError(ErrorCode::CODE_DB_ERROR));
- }
- return self::standardOutput(ErrorCode::CODE_SUCC);
- }
- /**
- * 用户登录
- * @param $login_name
- * @param $password
- */
- public static function login($login_name, $password)
- {
- $whereUser = [];
- $whereUser["login_name"] = $login_name;
- $user = self::where($whereUser)->find();
- if (!$user) {
- return self::standardOutput(9999, "用户不存在");
- }
- $passwordMd5 = md5($user->salt . $password);
- if ($passwordMd5 != $user->password) {
- return self::standardOutput(9999, "用户密码不正确");
- }
- //更新用户登录 信息
- $user->last_login_time = getNow();
- $user->login_count = $user->login_count + 1;
- $user->token = $user->getToken();
- $user->hidden(["salt","password"]);
- $res = $user->save();
- if ($res === false) {
- //数据库读写失败
- return self::standardOutput(ErrorCode::CODE_DB_ERROR, ErrorCode::getError(ErrorCode::CODE_DB_ERROR));
- }
- return self::standardOutput(ErrorCode::CODE_SUCC, "登录成功", $user);
- }
- /**
- * 获取token
- * @return string
- */
- public function getToken()
- {
- $expireDays = 7;//过期时间,单位天
- //token: md5([用户名][当前时间])|[用户id]|[过期时间]
- $token = base64_encode(md5($this->login_name . getNow()) . "|" . $this->id . "|" . (time() + 86400 * $expireDays));
- return $token;
- }
- /**
- * 修改密码
- */
- public function changePassword($orgPassword, $newPassword)
- {
- //校验旧密码
- $passwordMd5 = md5($this->salt . $orgPassword);
- if ($passwordMd5 != $this->password) {
- $str=$this->salt . $orgPassword."---".$passwordMd5."---".$this->password;
- return self::standardOutput(9999, "原密码不正确".$str);
- }
- $this->password = md5($this->salt . $newPassword);
- $res = $this->save();
- if ($res === false) {
- //数据库读写失败
- return self::standardOutput(ErrorCode::CODE_DB_ERROR, ErrorCode::getError(ErrorCode::CODE_DB_ERROR));
- }
- return self::standardOutput(ErrorCode::CODE_SUCC);
- }
- /**
- * 退出登录
- */
- public function loginOut()
- {
- $this->token = "";
- $res = $this->save();
- if ($res === false) {
- //数据库读写失败
- return self::standardOutput(ErrorCode::CODE_DB_ERROR, ErrorCode::getError(ErrorCode::CODE_DB_ERROR));
- }
- return self::standardOutput(ErrorCode::CODE_SUCC);
- }
- }
|