277 lines
11 KiB
PHP
277 lines
11 KiB
PHP
<?php
|
|
|
|
namespace app\controller;
|
|
|
|
use app\model\SmsContent;
|
|
use app\model\User;
|
|
use app\model\UsersLog;
|
|
use app\model\UsersToken;
|
|
use support\Request;
|
|
use support\View;
|
|
|
|
class UserController
|
|
{
|
|
public function regedit(Request $request)
|
|
{
|
|
View::assign(["nickname" => session('nickname', "未登录")]);
|
|
View::assign([
|
|
"header" => view('common/header')->rawBody(),
|
|
"footer" => view('common/footer')->rawBody()
|
|
]);
|
|
|
|
return view('user/regedit');
|
|
}
|
|
|
|
public function login(Request $request)
|
|
{
|
|
View::assign(["nickname" => session('nickname', "未登录")]);
|
|
View::assign([
|
|
"header" => view('common/header')->rawBody(),
|
|
"footer" => view('common/footer')->rawBody()
|
|
]);
|
|
return view('user/login');
|
|
}
|
|
|
|
public function logout(Request $request)
|
|
{
|
|
session(['nickname' => null, 'user_id' => null]);
|
|
View::assign(["nickname" => session('nickname', "未登录")]);
|
|
View::assign([
|
|
"header" => view('common/header')->rawBody(),
|
|
"footer" => view('common/footer')->rawBody()
|
|
]);
|
|
return msg('退出成功', "您可以继续操作。");
|
|
}
|
|
|
|
public function enter(Request $request)
|
|
{
|
|
View::assign(["nickname" => session('nickname', "未登录")]);
|
|
View::assign([
|
|
"header" => view('common/header')->rawBody(),
|
|
"footer" => view('common/footer')->rawBody()
|
|
]);
|
|
|
|
$username = $request->post('username', '');
|
|
$password = $request->post('password', '');
|
|
if (empty($username) || empty($password)) {
|
|
return msg('请输入用户名或密码', "请输入用户名或密码后继续。", "/user/login", "返回");
|
|
}
|
|
$user = User::where('username', $username)->first();
|
|
if (!$user) {
|
|
return msg('用户不存在', "请输入正确的用户名后继续。", "/user/login", "返回");
|
|
}
|
|
if (!password_verify($password, $user->password)) {
|
|
return msg('密码错误', "请输入正确的密码后继续。", "/user/login", "返回");
|
|
}
|
|
session([
|
|
'nickname' => $user->nickname,
|
|
'user_id' => $user->id
|
|
]);
|
|
|
|
$logs = new UsersLog();
|
|
$logs->user_id = $user->id;
|
|
$logs->ip = $request->getRemoteIp() . ":" . $request->getRemotePort();
|
|
$logs->save();
|
|
|
|
return msg('登录成功', "您可以继续操作。");
|
|
}
|
|
|
|
public function password(Request $request): \support\Response
|
|
{
|
|
if (session('nickname', "未登录") === "未登录") return msg('请先登录', "请登录后继续。", "/user/login", '立即登录');
|
|
View::assign(["nickname" => session('nickname', "未登录")]);
|
|
View::assign([
|
|
"header" => view('common/header')->rawBody(),
|
|
"footer" => view('common/footer')->rawBody()
|
|
]);
|
|
|
|
return view('user/password');
|
|
}
|
|
|
|
public function update(Request $request)
|
|
{
|
|
// 修改密码
|
|
if (session('nickname', "未登录") === "未登录") return msg('请先登录', "请登录后继续。", "/user/login", '立即登录');
|
|
$password = $request->post('password', '');
|
|
$repassword = $request->post('confirmPassword', '');
|
|
if (empty($password)) {
|
|
return msg('请输入密码', "请输入密码后继续。", "/user/password", "返回");
|
|
}
|
|
if (strlen($password) < 6 || strlen($password) > 16) {
|
|
return msg('密码长度为6-16位', "请输入6-16位密码后继续。", "/user/password", "返回");
|
|
}
|
|
if ($password !== $repassword) {
|
|
return msg('两次密码不一致', "请输入两次密码后继续。", "/user/password", "返回");
|
|
}
|
|
$user = User::where('id', session('user_id'))->first();
|
|
$user->password = password_hash($password, PASSWORD_DEFAULT);
|
|
$user->save();
|
|
session(['nickname' => null, 'user_id' => null]);
|
|
return msg('修改成功', "请登录后继续。", "/user/login", "登录");
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
View::assign(["nickname" => session('nickname', "未登录")]);
|
|
View::assign([
|
|
"header" => view('common/header')->rawBody(),
|
|
"footer" => view('common/footer')->rawBody()
|
|
]);
|
|
|
|
$agreement = $request->post('agreement', 'off');
|
|
if ($agreement !== 'on') {
|
|
return msg('请先同意用户协议', "请勾选用户协议后继续。", "/user/regedit", "返回");
|
|
}
|
|
$username = $request->post('username', '');
|
|
$nickname = $request->post('nickname', '');
|
|
$nickname = empty($nickname) ? '用户' . uniqid() : $nickname;
|
|
$password = $request->post('password', '');
|
|
$repassword = $request->post('confirmPassword', '');
|
|
if (empty($username) || empty($password)) {
|
|
return msg('请输入用户名或密码', "请输入用户名或密码后继续。", "/user/regedit", "返回");
|
|
}
|
|
if (strlen($username) < 4 || strlen($username) > 16) {
|
|
return msg('用户名长度为4-16位', "请输入4-16位用户名后继续。", "/user/regedit", "返回");
|
|
}
|
|
if (strlen($password) < 6 || strlen($password) > 16) {
|
|
return msg('密码长度为6-16位', "请输入6-16位密码后继续。", "/user/regedit", "返回");
|
|
}
|
|
if ($password !== $repassword) {
|
|
return msg('两次密码不一致', "请输入两次密码后继续。", "/user/regedit", "返回");
|
|
}
|
|
|
|
$user = User::where('username', $username)->first();
|
|
if ($user) {
|
|
return msg('用户已存在', "请输入其他用户名后继续。", "/user/regedit", "返回");
|
|
}
|
|
|
|
$user = new User();
|
|
$user->username = $username;
|
|
$user->nickname = $nickname;
|
|
$user->password = password_hash($password, PASSWORD_DEFAULT);
|
|
$user->save();
|
|
|
|
return msg('注册成功', "请登录后继续。", "/user/login", "登录");
|
|
}
|
|
|
|
|
|
public function token(Request $request)
|
|
{
|
|
if (session('nickname', "未登录") === "未登录") return msg('请先登录', "请登录后继续。", "/user/login", '立即登录');
|
|
View::assign(["nickname" => session('nickname', "未登录")]);
|
|
View::assign([
|
|
"header" => view('common/header')->rawBody(),
|
|
"footer" => view('common/footer')->rawBody()
|
|
]);
|
|
|
|
$user = User::where('id', session('user_id'))->first();
|
|
if (!$user) {
|
|
session(['nickname' => null, 'user_id' => null]);
|
|
return msg('用户不存在', "请重新登录后继续。", "/user/login", "登录");
|
|
}
|
|
|
|
$users_token = UsersToken::where('user_id', $user->id)->first();
|
|
if (!$users_token) {
|
|
$users_token = new UsersToken();
|
|
$users_token->user_id = $user->id;
|
|
$uid_md5 = md5($user->id . uniqid());
|
|
$users_token->token = strtoupper($user->id) . $uid_md5;
|
|
$users_token->save();
|
|
}
|
|
|
|
return view('user/token', [
|
|
'token' => $users_token->token,
|
|
'updateTime' => $users_token->updated_at
|
|
]);
|
|
|
|
}
|
|
|
|
public function tokenUpdate(Request $request)
|
|
{
|
|
if (session('nickname', "未登录") === "未登录") return msg('请先登录', "请登录后继续。", "/user/login", '立即登录');
|
|
View::assign(["nickname" => session('nickname', "未登录")]);
|
|
View::assign([
|
|
"header" => view('common/header')->rawBody(),
|
|
"footer" => view('common/footer')->rawBody()
|
|
]);
|
|
|
|
$user = User::where('id', session('user_id'))->first();
|
|
if (!$user) {
|
|
session(['nickname' => null, 'user_id' => null]);
|
|
return msg('用户不存在', "请重新登录后继续。", "/user/login", "登录");
|
|
}
|
|
|
|
$users_token = UsersToken::where('user_id', $user->id)->first();
|
|
if (!$users_token) {
|
|
$users_token = new UsersToken();
|
|
$users_token->user_id = $user->id;
|
|
$uid_md5 = md5($user->id . uniqid());
|
|
$users_token->token = strtoupper($user->id) . $uid_md5;
|
|
$users_token->save();
|
|
return msg('更新成功', "请使用新的密钥访问所有应用。", "/user/token", "我的密钥");
|
|
}
|
|
$users_token->token = strtoupper($user->id) . md5($user->id . uniqid());
|
|
$users_token->save();
|
|
return msg('更新成功', "请使用新的密钥访问所有应用。", "/user/token", "我的密钥");
|
|
}
|
|
|
|
public function cleanStart(Request $request)
|
|
{
|
|
if (session('nickname', "未登录") === "未登录") return msg('请先登录', "请登录后继续。", "/user/login", '立即登录');
|
|
View::assign(["nickname" => session('nickname', "未登录")]);
|
|
View::assign([
|
|
"header" => view('common/header')->rawBody(),
|
|
"footer" => view('common/footer')->rawBody()
|
|
]);
|
|
|
|
$user = User::where('id', session('user_id'))->first();
|
|
if (!$user) {
|
|
session(['nickname' => null, 'user_id' => null]);
|
|
return msg('用户不存在', "请重新登录后继续。", "/user/login", "登录");
|
|
}
|
|
|
|
$smsContent = SmsContent::where('user_id', $user->id)->get();
|
|
foreach ($smsContent as $item) {
|
|
$item->delete();
|
|
}
|
|
return msg('清除成功', "所有短信已清除。", "/user/clean", "返回");
|
|
}
|
|
|
|
public function clean(Request $request)
|
|
{
|
|
if (session('nickname', "未登录") === "未登录") return msg('请先登录', "请登录后继续。", "/user/login", '立即登录');
|
|
View::assign(["nickname" => session('nickname', "未登录")]);
|
|
View::assign([
|
|
"header" => view('common/header')->rawBody(),
|
|
"footer" => view('common/footer')->rawBody()
|
|
]);
|
|
|
|
$user = User::where('id', session('user_id'))->first();
|
|
if (!$user) {
|
|
session(['nickname' => null, 'user_id' => null]);
|
|
return msg('用户不存在', "请重新登录后继续。", "/user/login", "登录");
|
|
}
|
|
|
|
return view('user/clean');
|
|
}
|
|
public function logs(Request $request)
|
|
{
|
|
if (session('nickname', "未登录") === "未登录") return msg('请先登录', "请登录后继续。", "/user/login", '立即登录');
|
|
View::assign(["nickname" => session('nickname', "未登录")]);
|
|
View::assign([
|
|
"header" => view('common/header')->rawBody(),
|
|
"footer" => view('common/footer')->rawBody()
|
|
]);
|
|
|
|
$user = User::where('id', session('user_id'))->first();
|
|
if (!$user) {
|
|
session(['nickname' => null, 'user_id' => null]);
|
|
return msg('用户不存在', "请重新登录后继续。", "/user/login", "登录");
|
|
}
|
|
|
|
$logs = UsersLog::where('user_id', $user->id)->orderBy('id', 'desc')->paginate(100);
|
|
return view('user/logs', [
|
|
'logs' => $logs
|
|
]);
|
|
}
|
|
} |