Files
sentcms/app/controller/user/Index.php
2022-04-29 20:26:03 +08:00

138 lines
3.5 KiB
PHP

<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\user;
use app\model\auth\Member;
use think\facade\Session;
/**
* @title 用户中心
*/
class Index extends Base {
/**
* @title 用户首页
* @return [type] [description]
*/
public function index() {
return $this->fetch();
}
/**
* @title 用户登录
* @return [type] [description]
*/
public function login() {
if ($this->request->isAjax()) {
try {
$userinfo = (new Member())->login($this->request);
if ($userinfo) {
Session::set('userInfo', $userinfo);
return $this->success('登录成功!', url('/user/index/index'));
}
} catch (Exception $e) {
return $this->error($e->getError(), '');
}
} else {
return $this->fetch();
}
}
/**
* @title 用户退出
* @return [type] [description]
*/
public function logout() {
Session::delete('userInfo');
$this->redirect('/user/index/login');
}
/**
* @title 用户注册
* @return [type] [description]
*/
public function register() {
if ($this->request->isAjax()) {
$result = (new Member())->register($this->request);
if (false !== $result) {
return $this->success("注册成功!", url('/user/index/login'));
} else {
return $this->error("注册失败!");
}
} else {
return $this->fetch();
}
}
/**
* @title 忘记密码
* @return [type] [description]
*/
public function forget() {
if ($this->request->isAjax()) {
$data = $this->request->post();
$map = [];
if (!$data['username'] || !$data['email']) {
return $this->error("请完整填写信息!");
}
$map[] = ['username', '=', $data['username']];
$map[] = ['email', '=', $data['email']];
$user = Member::where($map)->findOrEmpty();
if (!$user->isEmpty()) {
//发生重置密码连接电子邮件
$result = Member::sendFindPaswd($user);
if (false !== $result) {
return $this->success("已发送找回密码邮件!", url('/user/index/login'));
} else {
return $this->error("发送邮件失败!");
}
} else {
return $this->error('无此用户!');
}
} else {
return $this->fetch();
}
}
/**
* @title 重置密码
* @return [type] [description]
*/
public function resetpasswd() {
if ($this->request->isAjax()) {
$token = $this->request->get('token');
$data = $this->request->post();
list($username, $email) = explode("|", \xin\helper\Secure::decrypt($token, \think\facade\Env::get('jwt.secret')));
if (!$username || !$email) {
return $this->error("找回密码地址错误或已过期!");
}
$map[] = ['username', '=', $username];
$map[] = ['email', '=', $email];
$user = Member::where($map)->findOrEmpty();
if (!$user->isEmpty()) {
$data['salt'] = \xin\helper\Str::random(6);
$result = Member::update($data, ['uid' => $user['uid']]);
if (false !== $result) {
return $this->success("已重置!", url('/user/index/login'));
} else {
return $this->error("发送邮件失败!");
}
} else {
return $this->error('无此用户!');
}
} else {
$token = $this->request->param('token');
return $this->fetch();
}
}
}