hasMany('Comment','user_id','id'); } //用户关联所属区域 public function userArea() { return $this->belongsTo('UserArea','user_raea_id','id'); } public function article() { return $this->hasMany(Article::class); } //登陆校验 public function login($data) { //查询使用邮箱或者用户名登陆 $user = $this::whereOr('email',$data['name'])->whereOr('name',$data['name'])->findOrEmpty(); if(!($user->isEmpty())){ //被禁用和待审核 if($user['status'] == -1){ return Lang::get('Account disabled'); } if($user['status'] == 0){ return Lang::get('Pending approval'); } //错误登陆连续3次且小于10分钟 if((time() - $user->login_error_time < 60) && is_int($user->login_error_num/3)){ return Lang::get('Please log in 10 minutes later'); } //对输入的密码字段进行MD5加密,再进行数据库的查询 $salt = substr(md5($user['create_time']),-6); $pwd = substr_replace(md5($data['password']),$salt,0,6); $data['password'] = md5($pwd); if($user['password'] == $data['password']){ //将用户数据写入Session Session::set('user_id',$user['id']); Session::set('user_name',$user['name']); //记住密码 if(isset($data['remember'])){ $salt = Config::get('taoler.salt'); //加密auth存入cookie $auth = md5($user['name'].$salt).":".$user['id']; Cookie::set('auth',$auth,604800); //Cookie::set('user_id', $user['id'], 604800); //Cookie::set('user_name', $user['name'], 604800); } $userInfo = ['type'=>'log','id'=>$user->id]; event(new UserLogin($userInfo)); //查询结果1表示有用户,用户名密码正确 return 1; } else {//密码错误登陆错误次数加1 $userInfo = ['type'=>'logError','id'=>$user->id]; event(new UserLogin($userInfo)); //echo $user->login_error_num; //连续3次错误 if(is_int(($user->login_error_num+1)/3) && $user->login_error_num >0 ){ return Lang::get('Login error 3, Please log in 10 minutes later'); } } } return Lang::get('username or password error'); } //更新数据 public function updata($data) { //dump($data); } //注册校验 public function reg($data) { // public/static/res/images/avatar的所有图片 $images = Files::getAllFile('static/res/images/avatar'); //随机图片 $i = array_rand($images); $img = $images[$i]; $data['user_img'] = '/'.str_replace('\\','/',$img); //随机存入默认头像 // $code = mt_rand('1','11'); // $data['user_img'] = "/static/res/images/avatar/$code.jpg"; $data['create_time'] = time(); $salt = substr(md5($data['create_time']),-6); $data['password'] = substr_replace(md5($data['password']),$salt,0,6); $data['status'] = Config::get('taoler.config.regist_check'); $msg = $data['status'] ? '注册成功请登录' : '注册成功,请等待审核'; $result = $this->save($data); if ($result) { return ['code'=>1,'msg'=>$msg]; } else{ return '注册失败'; } } //重置密码 public function respass($data) { //halt($data); $user = $this->where('id',$data['uid'])->find(); $salt = substr(md5($user['create_time']),-6); $data['password'] = substr_replace(md5($data['password']),$salt,0,6); $result = $user->save($data); if ($result) { return 1; } else{ return '更改失败'; } } //更新设置 public function setNew($data) { $userId = $data['user_id']; $user = User::where('id',$userId)->find(); $result = $user->allowField(['email','active','nickname','sex','city','area_id','sign'])->save($data); if($result){ return 1; }else{ return '修改失败'; } } //用户修改密码 public function setpass($data) { $user = $this->find($data['user_id']); $salt = substr(md5($user['create_time']),-6); $pwd = substr_replace(md5($data['nowpass']),$salt,0,6); $data['nowpass'] = md5($pwd); $result = $data['nowpass'] == $user['password']; if(!$result){ return '当前密码不正确'; } $data['password'] = substr_replace(md5($data['password']),$salt,0,6); $user->password = $data['password']; $result = $user->save(); if($result){ return 1; }else{ return '修改失败,请改换密码'; } } }