注册逻辑

This commit is contained in:
yumo 2023-03-27 20:06:21 +08:00
parent 4f23f09295
commit cc6e85f5e0
5 changed files with 108 additions and 19 deletions

View File

@ -0,0 +1,81 @@
<?php
declare (strict_types=1);
namespace app\api\controller;
use app\BaseController;
use app\common\constant\Data;
use app\common\model\PvLog;
use app\common\model\UrlLog;
use think\facade\Session;
/**
* 控制器基础类
*/
class Base extends BaseController
{
/**
* 当前登陆用户信息
* @var
*/
protected $userInfo;
/**
* 当前登陆用户ID
* @var int
*/
protected $userId;
// 初始化
protected function initialize()
{
parent::initialize();
$this->userInfo = Session::get(Data::SESSION_KEY_USER_INFO);
$this->userId = Session::get(Data::SESSION_KEY_USER_ID);
if ($this->userId){
//模板兼容性标签
$this->assign('user_info', $this->userInfo);
$this->assign('user_id', $this->userId);
}
//判断是否关闭站点。
if (web_config('web_close')==1) {
$this->error('网站暂时关闭!', '', 'stop');
}
//判断后台统计配置是否开启 1 开启
if (web_config("web_statistics") == 1) {
//pv表 zz_pv_log 栏目存在 点击进入页面后
$pvLogModel = new PvLog();
$pvLogModel->set_view();
}
cache(Data::CURR_CATEGORY_PATENT_ID, false);
//模板兼容性标签
$this->assign('id', false);
$this->assign('cid', false);
//获取根域名
//判断是否开启了伪静态
// if (web_config('web_rewrite')=='0') {
// $this->request->setRoot('/?s=');
// } elseif(web_config('web_rewrite')=='1') {
// $this->request->setRoot('/');
// } else {
// $this->request->setRoot('/index.php');
// }
}
/**
* url 统计
* @param $title
* @author 木子的忧伤
* @date 2021-05-09 23:44
*/
protected function urlrecord($title)
{
$urlLogModel = new UrlLog();
//获取url
$urlInfo = $this->request->url(true);
$urlLogModel->set_url($title, $urlInfo);
}
}

View File

@ -7,6 +7,7 @@ use app\common\constant\Data;
use think\db\exception\DataNotFoundException;
use think\db\exception\DbException;
use think\db\exception\ModelNotFoundException;
use think\facade\Request;
use think\facade\Session;
use mailer\Mailer;
use think\Model;
@ -70,15 +71,19 @@ class User extends BaseModel
if (!$res) {
return self::setErrorInfo("账号注册失败,请稍后再试");
} else {
//开始发送激活邮件,激活邮件处理
//生成密码重置key 设置有效时间 过期无效
$key = md5($info->email . rand(1000, 99999));
cache($key, $res, 24 * 60 * 60); //缓存1天过后则失效根据用户id设置用户激活
$host = Request::domain();
//TODO 这里暂时未完成 设计是 支持模板来配置这里的任务 后台可以编辑模板这样子
$content = "您已经成功在蓝米云注册会员,请点击以下链接完成账号激活:{$host}/forget?action=rested&key={$key}&id=20
请在24小时内完成激活24小时后链接地址失效如果通过点击以上链接无法访问请将上面的地址复制到您使用的浏览器地址中进入如果您并没有访问过蓝米云官网或没有进行上述操作请忽略这封邮件此帐号将不会绑定您的邮箱。感谢您的访问祝您使用愉快";
$mailer = new Mailer();
$mailer->from('10086@qq.com')
->to('10086@qq.com')
->subject('邮件主题')
->text('邮件内容')
$mailer->from(system_config('title'))
->to($info->email)
->subject(system_config('title') . '注册激活邮件')
->text($content)
->send();
}
return false;
}
@ -193,9 +198,13 @@ class User extends BaseModel
* @throws DbException
* @throws ModelNotFoundException
*/
public static function resetPassword(string $userid, $password)
public static function resetPassword($key, $password)
{
$info = self::where('id', '=', $userid)->find();
$username = cache($key); //缓存1天过后则失效
if (empty($username)){
return self::setErrorInfo("链接已失效或者用户不存在");
}
$info = self::where('username|email', '=', $username)->find();
if (!$info) return self::setErrorInfo("用户不存在");
$info['password'] = md5(md5($password));
$info['status'] = 2;
@ -216,21 +225,21 @@ class User extends BaseModel
*/
public static function lostPassword($username)
{
$model = new self;
$info = self::where('username|email', '=', $username)->find();
if ($info) return self::setErrorInfo("账号或邮箱不存在,请检查后重试");
//生成密码重置key 设置有效时间 过期无效
$key = md5($info->email . rand(1000,99999));
cache($key,"----",24*60*60); //缓存1天过后则失效
//发送邮箱
$key = md5($info->email . rand(1000, 99999));
cache($key, $username, 24 * 60 * 60); //缓存1天过后则失效
$host = Request::domain();
//发送邮件
$content = "您好您在本网站进行重置密码操作请点击如下链接进入重置密码页面。【本链接24小时内容有效如果不是您的操作请忽略】
/forget?action=rested&key={$key}&id=20";
{$host}/forget?action=rested&key={$key}&id=20";
$mailer = new Mailer();
$mailer->from(system_config('title'))
->to($info->email)
->subject(system_config('title').'重置密码验证')
->subject(system_config('title') . '重置密码验证')
->text($content)
->send();
return false;
return true;
}
}

View File

@ -11,5 +11,4 @@ class UvLog extends BaseModel
//自动时间戳
protected $autoWriteTimestamp = true;
}

View File

@ -112,7 +112,7 @@ class User extends Base
switch ($action) {
case'rested':
//重置密码
if (!userModel::resetPassword($username, $password)) return app("json")->fail(userModel::getErrorInfo());
if (!userModel::resetPassword($key, $password)) return app("json")->fail(userModel::getErrorInfo());
return app("json")->success("密码重置成功!");
case 'LastPass':
// 验证码验证

View File

@ -128,13 +128,13 @@
</a>
<ul class="user-sub-menu sub-menu">
<li>
<a href="{:url('index/login/profile')}"><i class="fas fa-user-cog"></i> 账号设置</a>
<a href="{:url('index/user/profile')}"><i class="fas fa-user-cog"></i> 账号设置</a>
</li>
<!-- <li>-->
<!-- <a href="{:url('index/login/loginout')}"><i class="far fa-edit"></i>新建文章</a>-->
<!-- </li>-->
<li>
<a href="{:url('index/login/logout')}"><i class="fas fa-sign-out-alt"></i> 退出登录</a>
<a href="{:url('index/user/logout')}"><i class="fas fa-sign-out-alt"></i> 退出登录</a>
</li>
</ul>
</li>