2017-12-29 16:18:40 +08:00
|
|
|
|
package com.nis.web.controller;
|
|
|
|
|
|
|
|
|
|
|
|
import java.io.UnsupportedEncodingException;
|
2018-12-12 11:46:44 +08:00
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
import java.util.Map;
|
2017-12-29 16:18:40 +08:00
|
|
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
|
|
|
|
|
|
import org.apache.shiro.authz.UnauthorizedException;
|
|
|
|
|
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
|
|
|
|
|
import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
|
|
|
|
|
|
import org.apache.shiro.web.util.WebUtils;
|
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
|
import org.springframework.stereotype.Controller;
|
|
|
|
|
|
import org.springframework.ui.Model;
|
|
|
|
|
|
import org.springframework.ui.ModelMap;
|
|
|
|
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
2018-12-12 11:46:44 +08:00
|
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
2017-12-29 16:18:40 +08:00
|
|
|
|
|
2018-12-12 11:46:44 +08:00
|
|
|
|
import com.google.gson.Gson;
|
|
|
|
|
|
import com.google.gson.GsonBuilder;
|
|
|
|
|
|
import com.google.gson.reflect.TypeToken;
|
2017-12-29 16:18:40 +08:00
|
|
|
|
import com.nis.util.Configurations;
|
|
|
|
|
|
import com.nis.util.Constants;
|
|
|
|
|
|
import com.nis.util.CookieUtil;
|
2018-12-12 11:46:44 +08:00
|
|
|
|
import com.nis.util.StringUtil;
|
2017-12-29 16:18:40 +08:00
|
|
|
|
import com.nis.util.StringUtils;
|
2018-12-12 11:46:44 +08:00
|
|
|
|
import com.nis.util.httpclient.HttpClientUtil;
|
2017-12-29 16:18:40 +08:00
|
|
|
|
import com.nis.web.security.IdGen;
|
|
|
|
|
|
import com.nis.web.security.SystemAuthorizingRealm.Principal;
|
|
|
|
|
|
import com.nis.web.security.UserUtils;
|
|
|
|
|
|
import com.nis.web.service.SystemService;
|
|
|
|
|
|
|
|
|
|
|
|
@Controller
|
|
|
|
|
|
public class LoginController extends BaseController {
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
private SystemService systemService;
|
|
|
|
|
|
|
2018-12-12 11:46:44 +08:00
|
|
|
|
@RequestMapping("${adminPath}/newIndex")
|
|
|
|
|
|
public String newIndex(){
|
|
|
|
|
|
return "/newIndex";
|
|
|
|
|
|
}
|
2017-12-29 16:18:40 +08:00
|
|
|
|
|
2018-12-12 11:46:44 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 根据ip46,协议tcp,udp查询带宽 间隔5分钟数据
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="${adminPath}/newIndex/ntcEntranceReport")
|
|
|
|
|
|
@ResponseBody
|
|
|
|
|
|
public List ntcEntranceReport(){
|
|
|
|
|
|
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
|
|
|
|
|
List list = new ArrayList();
|
2018-12-12 12:00:46 +08:00
|
|
|
|
/*String url = "http://192.168.10.204:7777/galaxy-service/service/log/v1/ntcEntranceReport?searchBusinessType=2&searchReportStartTime=2018-07-18%2000:00:00&searchReportEndTime=2018-07-19%2000:00:00";
|
2018-12-12 11:46:44 +08:00
|
|
|
|
try {
|
|
|
|
|
|
String string = HttpClientUtil.get(url);
|
|
|
|
|
|
Gson gson = new GsonBuilder().create();
|
|
|
|
|
|
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
|
|
|
|
|
|
logger.info("首页,间隔5分钟数据"+fromJsonList);
|
|
|
|
|
|
Map map = (Map) fromJsonList.get("data");
|
|
|
|
|
|
list = (List) map.get("list");
|
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
logger.error("带宽详情数据获取错误"+e);
|
2018-12-12 12:00:46 +08:00
|
|
|
|
}*/
|
2018-12-12 11:46:44 +08:00
|
|
|
|
return list;
|
|
|
|
|
|
}
|
2017-12-29 16:18:40 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 默认进入系统动作,即跳转登录操作
|
|
|
|
|
|
* @return
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="login",method=RequestMethod.GET)
|
|
|
|
|
|
public String login(HttpServletRequest request, HttpServletResponse response, Model model){
|
|
|
|
|
|
Principal principal = UserUtils.getPrincipal();
|
|
|
|
|
|
|
|
|
|
|
|
logger.debug("login, active session size: {}"+systemService.getActiveSessions(false).size());
|
|
|
|
|
|
|
|
|
|
|
|
if (Constants.TRUE.equals(Configurations.getStringProperty("notAllowRefreshIndex", "false"))) {
|
|
|
|
|
|
try {
|
|
|
|
|
|
CookieUtil.addCookie(response, "LOGINED", "false");
|
|
|
|
|
|
} catch (UnsupportedEncodingException e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 如果已经登录,则跳转到管理首页
|
|
|
|
|
|
if(principal != null && !principal.isMobileLogin()){
|
|
|
|
|
|
return "redirect:" + adminPath + "/index";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return "login";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 登录失败时调用的方法,真正登录方法在shiro filter时实现。
|
|
|
|
|
|
* @return
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="login",method=RequestMethod.POST)
|
|
|
|
|
|
public String loginFail(HttpServletRequest request, HttpServletResponse response, Model model){
|
|
|
|
|
|
|
|
|
|
|
|
Principal principal = UserUtils.getPrincipal();
|
|
|
|
|
|
// 如果已经登录,则跳转到管理首页
|
|
|
|
|
|
if(principal != null){
|
|
|
|
|
|
return "redirect:" + adminPath + "/index";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
String username = WebUtils.getCleanParam(request, FormAuthenticationFilter.DEFAULT_USERNAME_PARAM);
|
|
|
|
|
|
boolean rememberMe = WebUtils.isTrue(request, FormAuthenticationFilter.DEFAULT_REMEMBER_ME_PARAM);
|
|
|
|
|
|
boolean mobile = WebUtils.isTrue(request, Constants.DEFAULT_MOBILE_PARAM);
|
|
|
|
|
|
String exception = (String)request.getAttribute(FormAuthenticationFilter.DEFAULT_ERROR_KEY_ATTRIBUTE_NAME);
|
|
|
|
|
|
String message = (String)request.getAttribute(Constants.DEFAULT_MESSAGE_PARAM);
|
|
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isBlank(message) || StringUtils.equals(message, "null")){
|
|
|
|
|
|
message = "用户或密码错误, 请重试!";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
model.addAttribute(FormAuthenticationFilter.DEFAULT_USERNAME_PARAM, username);
|
|
|
|
|
|
model.addAttribute(FormAuthenticationFilter.DEFAULT_REMEMBER_ME_PARAM, rememberMe);
|
|
|
|
|
|
model.addAttribute(Constants.DEFAULT_MOBILE_PARAM, mobile);
|
|
|
|
|
|
model.addAttribute(FormAuthenticationFilter.DEFAULT_ERROR_KEY_ATTRIBUTE_NAME, exception);
|
|
|
|
|
|
model.addAttribute(Constants.DEFAULT_MESSAGE_PARAM, message);
|
|
|
|
|
|
|
|
|
|
|
|
if (logger.isDebugEnabled()){
|
|
|
|
|
|
logger.debug("login fail, active session size: "+systemService.getActiveSessions(false).size()+", message: "+message+", exception: "+exception);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 非授权异常,登录失败,验证码加1。
|
|
|
|
|
|
if (!UnauthorizedException.class.getName().equals(exception)){
|
|
|
|
|
|
model.addAttribute("isValidateCodeLogin", UserUtils.isValidateCodeLogin(username, true, false));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 验证失败清空验证码
|
|
|
|
|
|
request.getSession().setAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY, IdGen.uuid());
|
|
|
|
|
|
|
|
|
|
|
|
// 如果是手机登录,则返回JSON字符串
|
|
|
|
|
|
if (mobile){
|
|
|
|
|
|
return renderString(response, model);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return "login";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@RequiresPermissions("user")
|
|
|
|
|
|
@RequestMapping("/nis/index")
|
|
|
|
|
|
public String index(HttpServletRequest request, HttpServletResponse response,ModelMap model){
|
|
|
|
|
|
Principal principal = UserUtils.getPrincipal();
|
|
|
|
|
|
// 登录成功后,验证码计算器清零
|
|
|
|
|
|
UserUtils.isValidateCodeLogin(principal.getLoginName(), false, true);
|
|
|
|
|
|
|
|
|
|
|
|
if (logger.isDebugEnabled()){
|
|
|
|
|
|
logger.debug("show index, active session size: {}"+ systemService.getActiveSessions(false).size());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 如果已登录,再次访问主页,则退出原账号。
|
|
|
|
|
|
if (Constants.TRUE.equals(Configurations.getStringProperty("notAllowRefreshIndex","false"))){
|
|
|
|
|
|
|
|
|
|
|
|
String logined;
|
|
|
|
|
|
try {
|
|
|
|
|
|
logined = CookieUtil.getValue(request, "LOGINED");
|
|
|
|
|
|
if (StringUtils.isBlank(logined) || "false".equals(logined)){
|
|
|
|
|
|
CookieUtil.addCookie(response, "LOGINED", "true");
|
|
|
|
|
|
}else if (StringUtils.equals(logined, "true")){
|
|
|
|
|
|
UserUtils.getSubject().logout();
|
|
|
|
|
|
return "redirect:" + "/login";
|
|
|
|
|
|
}
|
|
|
|
|
|
} catch (UnsupportedEncodingException e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 如果是手机登录,则返回JSON字符串
|
|
|
|
|
|
if (principal.isMobileLogin()){
|
|
|
|
|
|
if (request.getParameter("login") != null){
|
|
|
|
|
|
return renderString(response, principal);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (request.getParameter("index") != null){
|
|
|
|
|
|
return "home";
|
|
|
|
|
|
}
|
|
|
|
|
|
return "redirect:" + "/login";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
model.addAttribute("adminPath", adminPath);
|
2018-09-03 12:49:57 +08:00
|
|
|
|
model.addAttribute("log_time_start",Constants.LOG_TIME_START);
|
|
|
|
|
|
model.addAttribute("log_time_range",Constants.LOG_TIME_RANGE);
|
|
|
|
|
|
model.addAttribute("log_total",this.getMsgProp().getProperty("log_total"));
|
2017-12-29 16:18:40 +08:00
|
|
|
|
return "/home";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 获取主题方案
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value = "/theme/{theme}")
|
|
|
|
|
|
public String getThemeInCookie(@PathVariable String theme, HttpServletRequest request, HttpServletResponse response){
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(theme)){
|
|
|
|
|
|
CookieUtil.addCookie(response, "theme", theme);
|
|
|
|
|
|
}else{
|
|
|
|
|
|
theme = CookieUtil.getValue(request, "theme");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return "redirect:"+request.getParameter("url");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 修改权限组
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value = "/permission/{roleId}")
|
|
|
|
|
|
public String switchPermissionGroup(@PathVariable String roleId, HttpServletRequest request, HttpServletResponse response){
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(roleId)){
|
|
|
|
|
|
System.out.println("*****************");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return "redirect:"+request.getParameter("url");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@RequestMapping(value="/validateCode")
|
|
|
|
|
|
public void validateCode(HttpServletRequest request, HttpServletResponse response,String captcha) {
|
|
|
|
|
|
renderString(response, UserUtils.validateCodeIsValid(captcha));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|