package com.allinpay.its.boss.system.auth.action;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import com.allinpay.its.boss.framework.utils.SessionUtil;
import com.allinpay.its.boss.framework.utils.WebConstant;
import com.allinpay.its.boss.system.BaseAction;
import com.allinpay.its.boss.system.menu.model.FrameworkSysMenu;
import com.allinpay.its.boss.system.menu.service.FrameworkSysMenuServiceImpl;
import com.allinpay.its.boss.system.permission.model.FrameworkUserInf;
import com.allinpay.its.boss.system.permission.model.FrameworkUserRole;
import com.allinpay.its.boss.system.permission.service.FrameworkSysPermissionServiceImpl;
import com.allinpay.its.boss.system.permission.service.FrameworkUserInfServiceImpl;
import com.allinpay.its.boss.system.permission.service.FrameworkUserRoleServiceImpl;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 这个是主要的根目录的控制器
* @author Administrator
*
*/
@Controller
public class IndexAction extends BaseAction{
@Autowired
private FrameworkSysMenuServiceImpl menuService;
@Autowired
private FrameworkUserRoleServiceImpl userRoleService;
@Autowired
private FrameworkUserInfServiceImpl userInfService;
@Autowired
private FrameworkSysPermissionServiceImpl sysPermissionService;
@RequestMapping("")
public String initLogin(){
return "system/login";
}
@SuppressWarnings("unchecked")
@RequestMapping("/index")
public String index(Model model,FrameworkUserInf userModel,HttpServletRequest request){
//登录验证
boolean isAuth = true;
FrameworkUserInf userInf = userInfService.queryUserInfoByCondition(userModel.getUserName(), userModel.getUserPassword());
if (userInf == null) {
isAuth = false;
model.addAttribute("errMessage", "用户名,密码为空或错误,请重试!");
return "system/login";
} else {
String state = userInf.getState();
if (state != null && state.equals("1")) {
isAuth = false;
model.addAttribute("errMessage", "用户名当前不能使用,请重试!");
return "system/login";
}
}
if(isAuth){
//获取用户角色
FrameworkUserRole userRole = new FrameworkUserRole();
userRole.setUserId(userInf.getId());
userRole.setState(WebConstant.DATA_EXIST);
List<FrameworkUserRole> userRoles = userRoleService.getFrameworkUserRoleListByObj(userRole);
String userRoldIds="";
for(FrameworkUserRole role: userRoles){
userRoldIds += role.getSysRoleId()+",";
}
if(StringUtils.isNotBlank(userRoldIds)){
userRoldIds = userRoldIds.replace(userRoldIds.charAt(userRoldIds.length()-1), ',').trim();
userRoldIds = userRoldIds.substring(0, userRoldIds.length()-1);
// for(String r: userRoldIds.split(",")){
// userRoleNames += (String) DynSelect.getAllRoleForManyMap().get(r)+",";
// }
// userRoleNames = userRoleNames.replace(userRoleNames.charAt(userRoleNames.length()-1), ',').trim();
}
Map<String, Object> map = (Map<String, Object>) request.getSession().getAttribute(SessionUtil.USER_MAP);
if (map == null) {
map = new HashMap<String, Object>();
}
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
map.put(SessionUtil.USER_NAME, userInf.getUserName());
map.put(SessionUtil.USER_ID, userInf.getId());
map.put(SessionUtil.USER_ROEL, userRoldIds);
// map.put(SessionUtil.USER_ROEL_NAME, userRoleNames);
map.put(SessionUtil.USER_REAL_NAME, userInf.getRealName());
// map.put(SessionUtil.USER_FUNCATIONS, getFunction(userinfo.getInnerUserId()));
map.put(SessionUtil.USER_IP, ip);
//将用户的权限编码放到Session中,后面需要优化放到缓存框架中
map.put(SessionUtil.USER_PERM_CODE_LIST, sysPermissionService.getPermissionCodeByUserId(userInf.getId()));
request.getSession().setAttribute(SessionUtil.USER_MAP, map);
}
List<FrameworkSysMenu> level3List = menuService.getFrameworkSysMenuListByLevelId(3,userInf);
List<FrameworkSysMenu> level2List = menuService.getFrameworkSysMenuListBySubMenuList(level3List);
List<FrameworkSysMenu> level1List = menuService.getFrameworkSysMenuListBySubMenuList(level2List);
model.addAttribute("menuLevel1", level1List);
model.addAttribute("menuLevel2", level2List);
model.addAttribute("menuLevel3", level3List);
return "system/index";
}
@RequestMapping("/logOut")
public String userLogOut(HttpServletRequest request){
HttpSession session = request.getSession();
if(session.getAttribute(SessionUtil.USER_MAP) != null){
session.removeAttribute(SessionUtil.USER_MAP);
}
session.invalidate();
return "system/login";
}
@SuppressWarnings("unchecked")
@RequestMapping("/getPermissionByUser")
@ResponseBody
public String getPermissionByUser(HttpServletRequest request){
Map<String, Object> map = (Map<String, Object>) request.getSession().getAttribute(SessionUtil.USER_MAP);
if(map != null){
return (String)map.get(SessionUtil.USER_PERM_CODE_LIST);
}else{
return null;
}
}
}