First Commit

This commit is contained in:
Administrator
2025-05-12 12:04:42 +08:00
commit 6a5e13974c
1248 changed files with 366157 additions and 0 deletions

View File

@@ -0,0 +1,108 @@
package quant.rich.emoney.controller;
import java.util.Objects;
import javax.security.auth.login.LoginException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import jodd.util.Base64;
import quant.rich.emoney.controller.common.BaseController;
import quant.rich.emoney.entity.config.PlatformConfig;
import quant.rich.emoney.pojo.dto.R;
import quant.rich.emoney.service.AuthService;
import quant.rich.emoney.service.ConfigService;
import quant.rich.emoney.util.EncryptUtils;
@Controller
@RequestMapping("/admin/v1")
public class LoginControllerV1 extends BaseController {
@Autowired
ConfigService configService;
@Autowired
PlatformConfig platformConfig;
@Autowired
AuthService authService;
@GetMapping("/login")
public String login() {
if (isLogin()) {
return "redirect:/admin/v1/index";
}
if (!platformConfig.getIsInited()) {
return "admin/v1/init";
}
return "admin/v1/login";
}
@PostMapping("/login")
@ResponseBody
public R<?> login(String username, String password, String captcha, String redirect) throws LoginException {
// 登录流程
if (platformConfig.getIsInited()) {
if (StringUtils.isBlank(captcha)) {
throw new LoginException("验证码不能为空");
}
Object sessionCaptcha = session.getAttribute(AuthService.CAPTCHA);
if (Objects.isNull(sessionCaptcha) || !captcha.equalsIgnoreCase(sessionCaptcha.toString())) {
throw new LoginException("验证码错误");
}
if (StringUtils.isAnyBlank(username) || !passwordIsNotEmpty(password)) {
throw new LoginException("用户名和密码不能为空");
}
if (!username.equals(platformConfig.getUsername())
|| !password.equals(platformConfig.getPassword())) {
session.removeAttribute(AuthService.CAPTCHA);
throw new LoginException("用户名或密码错误");
}
String to = "/admin/v1";
if (StringUtils.isNotEmpty(redirect)) {
to = Base64.decodeToString(redirect);
}
authService.setLogin(username, password);
session.removeAttribute(AuthService.CAPTCHA);
return R.ok(to);
}
// 初始化流程
if (StringUtils.isAnyBlank(username) || !passwordIsNotEmpty(password)) {
throw new LoginException("用户名和密码不能为空");
}
platformConfig.setUsername(username).setPassword(password).setIsInited(true);
boolean success = configService.saveOrUpdate(platformConfig);
if (!success) {
throw new LoginException("无法配置用户名和密码,请检查");
}
String to = Base64.decodeToString("/admin/v1/login");
return R.ok(to);
}
@GetMapping("/logout")
public String logout() {
return "redirect:/admin/v1/login";
}
static final String EMPTY_PASSWORD = EncryptUtils.sha3("", 224);
static boolean passwordIsNotEmpty(String password) {
return StringUtils.isNotEmpty(password) && !password.equalsIgnoreCase(EMPTY_PASSWORD);
}
}