Login.php
2.5 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
117
118
119
120
121
122
123
124
125
126
127
<?php
namespace Controller;
use Lib\Mail\Mail;
use Lib\Mail\MailFun;
use Lib\Verify;
use Model\emailSql;
/**
* 登录
* @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']) || !Verify::sEmail($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');
}
// 进行远程登录,验证
$login = (new Mail($formData['email'],$formData['password'],$formData['imap']))->login(false);
if( $login === 0){
app()->e('login_error_imap');
}elseif ($login === -1){
app()->e('email_server_error');
}
// 验证smtp登录
if(!MailFun::smtpLoginTest($formData['smtp'],$formData['email'],$formData['password'])){
app()->e('email_smtp_server_error');
}
// 是否存在
$id = db()->value(emailSql::hasEmail($formData['email']));
$data = [
'password' => base64_encode($formData['password']),
'imap' => $formData['imap'],
'smtp' => $formData['smtp'],
'status' => 1,
'pwd_error' => 0,
];
if($id){
// 修改
$ret = db()->update(emailSql::$table,$data,dbWhere(['id'=>$id]));
}else{
// 新增
$data['email'] = $formData['email'];
$ret = db()->insert(emailSql::$table,$data);
if($ret){
// // 增加邮件数量
// redis()->incr('email_total');
// 立即处理 同步
redis()->lPush('sync_email_lists', $ret);
}
}
if($ret){
app()->_json(
db()->first(
emailSql::first(
$formData['email'],
'`id`,`email`,`imap`,`smtp`,`status`,`created_at`'
)
)
);
}
app()->e('login_error');
}
}