Files
YwxAppThink/app/api/controller/v1/Ems.php
T

94 lines
3.1 KiB
PHP

<?php
// +----------------------------------------------------------------------
// | YwxApp [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2026-2036 http://ywxapp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: ywxapp<admin@ywxapp.cn>
// +----------------------------------------------------------------------
declare (strict_types = 1);
namespace app\api\controller\v1;
use ywxapp\controller\ApiController;
use think\facade\Event;
use ywxapp\model\MemberUser as UserModel;
use ywxapp\library\Result;
use ywxapp\library\Email as EmailLib;
/**
* 邮箱验证码接口.
*/
class Ems extends ApiController
{
protected $noNeedLogin = '*';
protected $needRight = '*';
public function initialize()
{
}
/**
* 发送验证码
*
* @param string $email 邮箱
* @param string $event 事件名称
*/
public function send()
{
$email = $this->request->request('email');
$event = $this->request->request('event');
$event = $event ? $event : 'register';
Event::trigger('email_send', ['email'=>$email, 'event'=>'register'], true);
$userinfo = UserModel::getByEmail($email);
if ($event == 'register' && $userinfo)
Result::instance()->error(('已被注册'));
elseif (in_array($event, ['changeemail']) && $userinfo)
Result::instance()->error(('已被占用'));
elseif (in_array($event, ['changepwd', 'resetpwd']) && !$userinfo)
Result::instance()->error(('未注册'));
$ret = \ywxapp\library\Email::instance()->sendEmail($email, null, $event);
if (!$ret)
Result::instance()->error(('发送失败'));
Result::instance()->success(('发送成功'));
}
/**
* 检测验证码
*
* @param string $email 邮箱
* @param string $event 事件名称
* @param string $captcha 验证码
*/
public function check()
{
$email = $this->request->request('email');
$event = $this->request->request('event', 'register');
$captcha = $this->request->request('captcha');
$validate = validate([
'email' => 'email',
'event' => 'chsAlphaNum',
'code' => 'Num',
]);
if (!$validate->check(['email' => $email, 'event' => $event, 'code' => $captcha]))
Result::instance()->error($validate->getError());
$userinfo = UserModel::where('email', $email)->find();
if ($event == 'register' && $userinfo)
$this->result->error(('已被注册'));
elseif (in_array($event, ['changeemail']) && $userinfo)
Result::instance()->error(('已被占用'));
elseif (in_array($event, ['changepwd', 'resetpwd']) && !$userinfo)
Result::instance()->error(('未注册'));
$ret = EmailLib::instance()->check($email, $captcha, $event);
if (!$ret)
Result::instance()->error(('验证码不正确'));
Result::instance()->success(data: ('验证码正确'));
}
}