package com.mrxu.admin; import com.alibaba.fastjson.JSONObject; import com.mrxu.admin.controller.AdminBaseController; import com.mrxu.base.dto.LoginDto; import com.mrxu.base.entity.SysMenu; import com.mrxu.base.enums.MenuForFront; import com.mrxu.base.model.LoginUserInfo; import com.mrxu.base.service.SysMenuService; import com.mrxu.framework.boot.bean.ResponseObj; import com.mrxu.framework.common.util.MrxuAssert; import com.wf.captcha.utils.CaptchaUtil; import io.swagger.annotations.Api; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.authz.annotation.RequiresUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.servlet.error.ErrorController; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; @Slf4j @Api(tags = "商户管理") @Controller @RequiredArgsConstructor(onConstructor = @__(@Autowired)) public class MainController extends AdminBaseController implements ErrorController { @Value("${spring.profiles.active}") private String profiles; // 万能验证码 private String rightCode = "0add8f2717b0691442d548f1fd277e4f"; private final SysMenuService menuService; @ResponseBody @RequestMapping("/login.json") public ResponseObj login(String username, String password, String code, @RequestParam(defaultValue="false",required=true)Boolean remember, HttpServletRequest request) { log.info("登录用户:{}",username); MrxuAssert.isNotEmpty(username,"请输入账号"); // 为了方便本地dev环境不校验验证码 if(!"dev".equals(profiles)) { MrxuAssert.isTrue(rightCode.equals(code) || CaptchaUtil.ver(code, request),"验证码不正确"); } SecurityUtils.getSubject().login(new UsernamePasswordToken(username, password, remember)); log.info("用户:{}登录成功",username); return success(request.getSession().getId()); } @ResponseBody @PostMapping("/login") public ResponseObj login(@RequestBody LoginDto loginDto, HttpServletRequest request) { SecurityUtils.getSubject().login(new UsernamePasswordToken(loginDto.getUsername(), loginDto.getPassword(), loginDto.getRemember())); return success(request.getSession().getId()); } @RequiresUser @ResponseBody @GetMapping("/getUserInfo.json") public ResponseObj getUserInfo() { LoginUserInfo userInfo = new LoginUserInfo(); return success(userInfo); } /** * 主页 */ @RequestMapping({"/", "/index"}) public String index(Model model) { List menus = menuService.getUserMenuTree(getLoginUser(), MenuForFront.oldFront); model.addAttribute("menus",menus); JSONObject tenant = new JSONObject(); model.addAttribute("tenant",tenant); return "index.html"; } /** * 登录页 */ @GetMapping("/login.html") public String login() { return "login.html"; } /** * logout退出 * @return */ @GetMapping("/logout") public String logout() { if(SecurityUtils.getSubject() != null) { SecurityUtils.getSubject().logout(); } return "redirect:/login.html"; } @GetMapping("/home.html") public String home() { return "crm/home.html"; } /** * 图形验证码 */ @RequestMapping("/assets/captcha") public void captcha(HttpServletRequest request, HttpServletResponse response) { try { CaptchaUtil.out(5, request, response); } catch (IOException e) { e.printStackTrace(); } } /** * 主页弹窗页面 */ @RequestMapping("/tpl/{name}") public String tpl(@PathVariable("name") String name) { return "index/" + name + ".html"; } /** * 错误页 */ @RequestMapping("/error") public String error(HttpServletRequest request) { String code = request.getAttribute("javax.servlet.error.status_code").toString(); if("404".equals(code)) { return "error/404.html"; } request.setAttribute("message",request.getAttribute("javax.servlet.error.message")); return "error/500.html"; } // 1 第一次提交修改 @Override public String getErrorPath() { return "/error"; } }