package com.ibeetl.admin.core.web;
|
|
import com.ibeetl.admin.core.entity.CoreOrg;
|
import com.ibeetl.admin.core.entity.CoreUser;
|
import com.ibeetl.admin.core.rbac.UserLoginInfo;
|
import com.ibeetl.admin.core.rbac.tree.MenuItem;
|
import com.ibeetl.admin.core.service.CorePlatformService;
|
import com.ibeetl.admin.core.service.CoreUserService;
|
import com.ibeetl.admin.core.util.HttpRequestLocal;
|
import com.ibeetl.admin.core.util.PlatformException;
|
import com.ibeetl.admin.core.util.TokenUtils;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.servlet.ModelAndView;
|
|
import javax.imageio.ImageIO;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpSession;
|
import java.awt.*;
|
import java.awt.image.BufferedImage;
|
import java.io.IOException;
|
import java.util.Enumeration;
|
import java.util.Random;
|
|
//@Controller
|
@RestController
|
@Slf4j
|
public class IndexController {
|
|
@Autowired
|
CorePlatformService platformService;
|
|
@Autowired
|
CoreUserService userService;
|
|
@Autowired
|
HttpRequestLocal httpRequestLocal;
|
|
|
|
|
@RequestMapping("/")
|
public ModelAndView login() {
|
ModelAndView view = new ModelAndView("/login.html");
|
return view;
|
}
|
|
/**
|
* 登陆验证码
|
*/
|
@RequestMapping("/verify")
|
void verifyCode(HttpServletRequest req, HttpServletResponse resp)throws IOException {
|
// 创建图片
|
int width = 80;
|
int height = 40;
|
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
|
|
// 创建图层获得画板
|
Graphics g = image.getGraphics();
|
// 确认画笔颜色
|
g.setColor(Color.BLACK);
|
//填充矩形
|
g.fillRect(0,0,width-2,height-2);
|
// String dataString="ABCDEFGHIJHLMNOPQRSTUVWXYZabcdefghijklmnopqlstuvwxyz1234567890";
|
String dataString="1234567890";
|
//设置字体
|
g.setFont(new Font("宋体",Font.BOLD,30));
|
//缓存随机生成的字符
|
StringBuffer buf = new StringBuffer();
|
Random random = new Random();
|
|
//截取字符
|
for(int i=0;i<4;i++){
|
//设置字体颜色 随机
|
g.setColor(new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255)));
|
//获得一个随机字符
|
int index = random.nextInt(10);
|
String str = dataString.substring(index,index+1);
|
//加入画板
|
g.drawString(str,20*i,30);
|
buf.append(str);
|
}
|
|
|
//干扰线
|
for(int i=0;i<10;i++){
|
g.setColor(new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255)));
|
g.setColor(new Color(16,16,16));
|
g.drawLine(random.nextInt(width),random.nextInt(height),random.nextInt(width),random.nextInt(height)) ;
|
}
|
HttpSession session = req.getSession();
|
log.info("获取的验证码是: {}" , buf.toString());
|
session.setAttribute("cap",buf.toString());
|
|
//设置响应类型
|
resp.setContentType("image/jpeg");
|
//将图片发送给浏览器
|
ImageIO.write(image,"jpg",resp.getOutputStream());
|
}
|
|
@PostMapping("/login.do")
|
public ModelAndView login(String code, String password, String verify, HttpServletRequest request) {
|
|
String ipAddr = request.getRequestURL().toString();
|
if(!request.getSession().getAttribute("cap").toString().equalsIgnoreCase(verify)){
|
if(ipAddr.indexOf("192.168.0.100") != -1){
|
|
}else{
|
throw new PlatformException("验证码错误");
|
}
|
}
|
UserLoginInfo info = userService.login(code, password);
|
if (info == null) {
|
throw new PlatformException("用户名密码错");
|
}
|
CoreUser user = info.getUser();
|
CoreOrg currentOrg = info.getOrgs().get(0);
|
for (CoreOrg org : info.getOrgs()) {
|
if (org.getId() == user.getOrgId()) {
|
currentOrg = org;
|
break;
|
}
|
}
|
|
info.setCurrentOrg(currentOrg);
|
// 记录登录信息到session
|
this.platformService.setLoginUser(info.getUser(), info.getCurrentOrg(), info.getOrgs());
|
ModelAndView view = new ModelAndView("redirect:/index.do");
|
return view;
|
}
|
|
@RequestMapping("/index.do")
|
public ModelAndView index() {
|
ModelAndView view = new ModelAndView("/index.html");
|
CoreUser currentUser = platformService.getCurrentUser();
|
Long orgId = platformService.getCurrentOrgId();
|
MenuItem menuItem = platformService.getMenuItem(currentUser.getId(), orgId);
|
view.addObject("menus", menuItem);
|
return view;
|
}
|
|
@RequestMapping("/logout.do")
|
public ModelAndView logout(HttpServletRequest request) {
|
HttpSession session = request.getSession();
|
Enumeration eum = session.getAttributeNames();
|
while(eum.hasMoreElements()) {
|
String key = (String)eum.nextElement();
|
session.removeAttribute(key);
|
}
|
ModelAndView view = new ModelAndView("redirect:/");
|
return view;
|
}
|
@RequestMapping("/changeOrg.do")
|
public ModelAndView changeOrg(HttpServletRequest request,Long orgId) {
|
platformService.changeOrg(orgId);
|
ModelAndView view = new ModelAndView("redirect:/index.do");
|
return view;
|
}
|
|
}
|