Login.php
2.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
namespace Controller;
use Lib\Mail\Mail;
use Model\emailSql;
use mysql_xdevapi\Exception;
/**
* 登录
* @author:dc
* @time 2023/2/18 16:49
* Class Login
* @package Controller
*/
class Login {
/**
* 登录操作
* @return int[]
* @author:dc
* @time 2023/2/13 11:50
*/
public function login(){
// $mail,$password,$imap,$smtp
$formData = app()->request(['email','password','imap','smtp']);
if(empty($formData['email']) || !preg_match("/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/",$formData['email'])){
app()->e('email_verify_error');
}
if(empty($formData['password'])){
app()->e('password_verify_error');
}
if(empty($formData['imap'])){
app()->e('imap_verify_error');
}
if(empty($formData['smtp'])){
app()->e('smtp_verify_error');
}
// 进行远程登录,验证
try{
(new Mail())->login($formData['email'],$formData['password'],$formData['imap']);
}catch (\Exception $e){
if($e->getCode()==403){
app()->e('login_error_imap');
}
}
// 是否存在
$id = db()->value(emailSql::hasEmail($formData['email']));
$data = [
'password' => base64_encode($formData['password']),
'imap' => $formData['imap'],
'smtp' => $formData['smtp'],
'status' => 1,
'pwd_error' => 0,
'name' => '',
'token' => md5($formData['email'].$formData['password'].$formData['imap']),
];
if($id){
// 修改
$ret = db()->update(emailSql::$table,$data,dbWhere(['id'=>$id]));
}else{
// 新增
$ret = db()->insert(emailSql::$table,$data);
if($ret){
// // 增加邮件数量
// redis()->incr('email_total');
// 立即处理 同步
redis()->lPush('sync_email_lists', $ret);
}
}
if($ret){
app()->_json([
'token' => $data['token']
]);
}
app()->e('login_error');
}
}