api/src/Topxia/Api/Resource/Emails.php
(开头部分) 1KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
<?php
namespace Topxia\Api\Resource;
use Silex\Application;
use AppBundle\Common\SimpleValidator;
use AppBundle\Common\EncryptionToolkit;
use Topxia\Service\Common\ServiceKernel;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder;
class Emails extends BaseResource
{
public function post(Application $app, Request $request)
{
$data = $request->request->all();
if (!isset($data['email'])) {
return $this->error('500', '请输入邮箱!');
}
$this->limiterCheck($data['email']);
if (!isset($data['password'])) {
return $this->error('500', '请输入更改后的密码!');
}
if (!SimpleValidator::email($data['email'])) {
return $this->error('500', 'email不符合要求');
}
$password = EncryptionToolkit::XXTEADecrypt(base64_decode($data['password']), $request->getHost());
if (!SimpleValidator::password($password)) {
return $this->error('500', '密码不符合要求');
}
$user = $this->getUserService()->getUserByEmail($data['email']);
if (!$user) {
return $this->error('500', '该邮箱未在网校注册');
}
$salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);
$data['rawPassword'] = array(
'salt' => $salt,
'password' => $this->getPasswordEncoder()->encodePassword($password, $salt),
);
$tokenType = 'email_password_reset';
$EmailToken = $this->getTokenService()->makeToken($tokenType, array(
'times' => 5,
'duration' => 60 * 30,
'userId' => $user['id'],
'data' => array(
'userId' => $user['id'],
'rawPassword' => array(
'salt' => $salt,
'password' => $this->getPasswordEncoder()->encodePassword($password, $salt),
),
),
));
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。