ad5081d3
孙向锦
初始化项目
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
package com.fh.controller.system.login;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.crypto.hash.SimpleHash;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.fh.controller.base.BaseController;
import com.fh.service.fhoa.datajur.DatajurManager;
import com.fh.service.system.appuser.AppuserManager;
import com.fh.service.system.buttonrights.ButtonrightsManager;
import com.fh.service.system.fhbutton.FhbuttonManager;
import com.fh.service.system.fhlog.FHlogManager;
import com.fh.service.system.loginimg.LogInImgManager;
import com.fh.service.system.menu.MenuManager;
import com.fh.entity.system.Menu;
import com.fh.entity.system.Role;
import com.fh.entity.system.User;
import com.fh.service.system.role.RoleManager;
import com.fh.service.system.user.UserManager;
import com.fh.util.AppUtil;
import com.fh.util.Const;
import com.fh.util.DateUtil;
import com.fh.util.Jurisdiction;
import com.fh.util.PageData;
import com.fh.util.RightsHelper;
import com.fh.util.Tools;
|
bed6e1fc
孙向锦
添加其他功能
|
43
|
|
ad5081d3
孙向锦
初始化项目
|
44
45
46
47
48
49
|
/**
* 总入口
* @author fh QQ 3 1 3 5 9 6 7 9 0[青苔]
* 修改日期:2015/11/2
*/
/**
|
ad5081d3
孙向锦
初始化项目
|
50
51
52
53
54
|
*
*/
@Controller
public class LoginController extends BaseController {
|
bed6e1fc
孙向锦
添加其他功能
|
55
|
@Resource(name = "userService")
|
ad5081d3
孙向锦
初始化项目
|
56
|
private UserManager userService;
|
bed6e1fc
孙向锦
添加其他功能
|
57
|
@Resource(name = "menuService")
|
ad5081d3
孙向锦
初始化项目
|
58
|
private MenuManager menuService;
|
bed6e1fc
孙向锦
添加其他功能
|
59
|
@Resource(name = "roleService")
|
ad5081d3
孙向锦
初始化项目
|
60
|
private RoleManager roleService;
|
bed6e1fc
孙向锦
添加其他功能
|
61
|
@Resource(name = "buttonrightsService")
|
ad5081d3
孙向锦
初始化项目
|
62
|
private ButtonrightsManager buttonrightsService;
|
bed6e1fc
孙向锦
添加其他功能
|
63
|
@Resource(name = "fhbuttonService")
|
ad5081d3
孙向锦
初始化项目
|
64
|
private FhbuttonManager fhbuttonService;
|
bed6e1fc
孙向锦
添加其他功能
|
65
|
@Resource(name = "appuserService")
|
ad5081d3
孙向锦
初始化项目
|
66
|
private AppuserManager appuserService;
|
bed6e1fc
孙向锦
添加其他功能
|
67
|
@Resource(name = "datajurService")
|
ad5081d3
孙向锦
初始化项目
|
68
|
private DatajurManager datajurService;
|
bed6e1fc
孙向锦
添加其他功能
|
69
|
@Resource(name = "fhlogService")
|
ad5081d3
孙向锦
初始化项目
|
70
|
private FHlogManager FHLOG;
|
bed6e1fc
孙向锦
添加其他功能
|
71
|
@Resource(name = "loginimgService")
|
ad5081d3
孙向锦
初始化项目
|
72
|
private LogInImgManager loginimgService;
|
bed6e1fc
孙向锦
添加其他功能
|
73
74
75
76
|
/**
* 访问登录页
*
|
ad5081d3
孙向锦
初始化项目
|
77
78
79
|
* @return
* @throws Exception
*/
|
bed6e1fc
孙向锦
添加其他功能
|
80
81
|
@RequestMapping(value = "/login_toLogin")
public ModelAndView toLogin() throws Exception {
|
ad5081d3
孙向锦
初始化项目
|
82
83
84
|
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
|
bed6e1fc
孙向锦
添加其他功能
|
85
|
pd = this.setLoginPd(pd); // 设置登录页面的配置参数
|
ad5081d3
孙向锦
初始化项目
|
86
|
mv.setViewName("system/index/login");
|
bed6e1fc
孙向锦
添加其他功能
|
87
|
mv.addObject("pd", pd);
|
ad5081d3
孙向锦
初始化项目
|
88
89
|
return mv;
}
|
bed6e1fc
孙向锦
添加其他功能
|
90
91
92
93
|
/**
* 请求登录,验证用户
*
|
ad5081d3
孙向锦
初始化项目
|
94
95
96
|
* @return
* @throws Exception
*/
|
bed6e1fc
孙向锦
添加其他功能
|
97
|
@RequestMapping(value = "/login_login", produces = "application/json;charset=UTF-8")
|
ad5081d3
孙向锦
初始化项目
|
98
|
@ResponseBody
|
bed6e1fc
孙向锦
添加其他功能
|
99
100
|
public Object login() throws Exception {
Map<String, String> map = new HashMap<String, String>();
|
ad5081d3
孙向锦
初始化项目
|
101
102
103
|
PageData pd = new PageData();
pd = this.getPageData();
String errInfo = "";
|
81df8ce6
孙向锦
去掉多余的信息
|
104
|
String KEYDATA[] = pd.getString("KEYDATA").split(";;;");
|
bed6e1fc
孙向锦
添加其他功能
|
105
|
if (null != KEYDATA && KEYDATA.length >= 2) {
|
ad5081d3
孙向锦
初始化项目
|
106
|
Session session = Jurisdiction.getSession();
|
bed6e1fc
孙向锦
添加其他功能
|
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
String sessionCode = (String) session
.getAttribute(Const.SESSION_SECURITY_CODE); // 获取session中的验证码
String USERNAME = KEYDATA[0]; // 登录过来的用户名
String PASSWORD = KEYDATA[1]; // 登录过来的密码
pd.put("USERNAME", USERNAME);
String passwd = new SimpleHash("SHA-1", USERNAME, PASSWORD)
.toString(); // 密码加密
pd.put("PASSWORD", passwd);
pd = userService.getUserByNameAndPwd(pd); // 根据用户名和密码去读取用户信息
if (pd != null) {
this.removeSession(USERNAME);// 请缓存
pd.put("LAST_LOGIN", DateUtil.getTime().toString());
userService.updateLastLogin(pd);
User user = new User();
user.setUSER_ID(pd.getString("USER_ID"));
user.setUSERNAME(pd.getString("USERNAME"));
user.setPASSWORD(pd.getString("PASSWORD"));
user.setNAME(pd.getString("NAME"));
user.setRIGHTS(pd.getString("RIGHTS"));
user.setROLE_ID(pd.getString("ROLE_ID"));
user.setLAST_LOGIN(pd.getString("LAST_LOGIN"));
user.setIP(pd.getString("IP"));
user.setSTATUS(pd.getString("STATUS"));
session.setAttribute(Const.SESSION_USER, user); // 把用户信息放session中
session.removeAttribute(Const.SESSION_SECURITY_CODE); // 清除登录验证码的session
// shiro加入身份验证
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(
USERNAME, PASSWORD);
try {
subject.login(token);
} catch (AuthenticationException e) {
errInfo = "身份验证失败!";
|
ad5081d3
孙向锦
初始化项目
|
140
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
141
142
143
144
145
146
147
148
149
|
} else {
errInfo = "usererror"; // 用户名或密码有误
logBefore(logger, USERNAME + "登录系统密码或用户名错误");
FHLOG.save(USERNAME, "登录系统密码或用户名错误");
}
if (Tools.isEmpty(errInfo)) {
errInfo = "success"; // 验证成功
logBefore(logger, USERNAME + "登录系统");
FHLOG.save(USERNAME, "登录系统");
|
ad5081d3
孙向锦
初始化项目
|
150
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
151
|
}
|
ad5081d3
孙向锦
初始化项目
|
152
153
154
|
map.put("result", errInfo);
return AppUtil.returnObject(new PageData(), map);
}
|
bed6e1fc
孙向锦
添加其他功能
|
155
156
157
158
159
160
|
/**
* 访问系统首页
*
* @param changeMenu
* :切换菜单参数
|
ad5081d3
孙向锦
初始化项目
|
161
162
|
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
163
164
165
|
@RequestMapping(value = "/main/{changeMenu}")
public ModelAndView login_index(
@PathVariable("changeMenu") String changeMenu) {
|
ad5081d3
孙向锦
初始化项目
|
166
167
168
|
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
|
bed6e1fc
孙向锦
添加其他功能
|
169
|
try {
|
ad5081d3
孙向锦
初始化项目
|
170
|
Session session = Jurisdiction.getSession();
|
bed6e1fc
孙向锦
添加其他功能
|
171
|
User user = (User) session.getAttribute(Const.SESSION_USER); // 读取session中的用户信息(单独用户信息)
|
ad5081d3
孙向锦
初始化项目
|
172
|
if (user != null) {
|
bed6e1fc
孙向锦
添加其他功能
|
173
174
175
176
177
|
User userr = (User) session.getAttribute(Const.SESSION_USERROL); // 读取session中的用户信息(含角色信息)
if (null == userr) {
user = userService.getUserAndRoleById(user.getUSER_ID()); // 通过用户ID读取用户信息和角色信息
session.setAttribute(Const.SESSION_USERROL, user); // 存入session
} else {
|
ad5081d3
孙向锦
初始化项目
|
178
179
180
|
user = userr;
}
String USERNAME = user.getUSERNAME();
|
bed6e1fc
孙向锦
添加其他功能
|
181
182
|
Role role = user.getRole(); // 获取用户角色
String roleRights = role != null ? role.getRIGHTS() : ""; // 角色权限(菜单权限)
|
ad5081d3
孙向锦
初始化项目
|
183
|
String ROLE_IDS = user.getROLE_IDS();
|
bed6e1fc
孙向锦
添加其他功能
|
184
185
186
187
|
session.setAttribute(USERNAME + Const.SESSION_ROLE_RIGHTS,
roleRights); // 将角色权限存入session
session.setAttribute(Const.SESSION_USERNAME, USERNAME); // 放入用户名到session
this.setAttributeToAllDEPARTMENT_ID(session, USERNAME); // 把用户的组织机构权限放到session里面
|
ad5081d3
孙向锦
初始化项目
|
188
|
List<Menu> allmenuList = new ArrayList<Menu>();
|
bed6e1fc
孙向锦
添加其他功能
|
189
190
|
allmenuList = this.getAttributeMenu(session, USERNAME,
roleRights, getArrayRoleRights(ROLE_IDS)); // 菜单缓存
|
ad5081d3
孙向锦
初始化项目
|
191
|
List<Menu> menuList = new ArrayList<Menu>();
|
bed6e1fc
孙向锦
添加其他功能
|
192
193
194
195
196
197
198
|
menuList = this.changeMenuF(allmenuList, session, USERNAME,
changeMenu); // 切换菜单
if (null == session.getAttribute(USERNAME + Const.SESSION_QX)) {
session.setAttribute(USERNAME + Const.SESSION_QX,
this.getUQX(USERNAME)); // 主职角色按钮权限放到session中
session.setAttribute(USERNAME + Const.SESSION_QX2,
this.getUQX2(USERNAME)); // 副职角色按钮权限放到session中
|
ad5081d3
孙向锦
初始化项目
|
199
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
200
|
this.getRemortIP(USERNAME); // 更新登录IP
|
ad5081d3
孙向锦
初始化项目
|
201
202
203
|
mv.setViewName("system/index/main");
mv.addObject("user", user);
mv.addObject("menuList", menuList);
|
bed6e1fc
孙向锦
添加其他功能
|
204
205
|
} else {
mv.setViewName("system/index/login");// session失效后跳转登录页面
|
ad5081d3
孙向锦
初始化项目
|
206
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
207
|
} catch (Exception e) {
|
ad5081d3
孙向锦
初始化项目
|
208
209
210
|
mv.setViewName("system/index/login");
logger.error(e.getMessage(), e);
}
|
bed6e1fc
孙向锦
添加其他功能
|
211
212
|
pd.put("SYSNAME", Tools.readTxtFile(Const.SYSNAME)); // 读取系统名称
mv.addObject("pd", pd);
|
ad5081d3
孙向锦
初始化项目
|
213
214
|
return mv;
}
|
bed6e1fc
孙向锦
添加其他功能
|
215
216
217
218
|
/**
* 获取副职角色权限List
*
|
ad5081d3
孙向锦
初始化项目
|
219
220
221
222
|
* @param ROLE_IDS
* @return
* @throws Exception
*/
|
bed6e1fc
孙向锦
添加其他功能
|
223
224
|
public List<String> getArrayRoleRights(String ROLE_IDS) throws Exception {
if (Tools.notEmpty(ROLE_IDS)) {
|
ad5081d3
孙向锦
初始化项目
|
225
226
|
List<String> list = new ArrayList<String>();
String arryROLE_ID[] = ROLE_IDS.split(",fh,");
|
bed6e1fc
孙向锦
添加其他功能
|
227
|
for (int i = 0; i < arryROLE_ID.length; i++) {
|
ad5081d3
孙向锦
初始化项目
|
228
229
230
|
PageData pd = new PageData();
pd.put("ROLE_ID", arryROLE_ID[i]);
pd = roleService.findObjectById(pd);
|
bed6e1fc
孙向锦
添加其他功能
|
231
|
if (null != pd) {
|
ad5081d3
孙向锦
初始化项目
|
232
|
String RIGHTS = pd.getString("RIGHTS");
|
bed6e1fc
孙向锦
添加其他功能
|
233
|
if (Tools.notEmpty(RIGHTS)) {
|
ad5081d3
孙向锦
初始化项目
|
234
235
236
237
238
|
list.add(RIGHTS);
}
}
}
return list.size() == 0 ? null : list;
|
bed6e1fc
孙向锦
添加其他功能
|
239
|
} else {
|
ad5081d3
孙向锦
初始化项目
|
240
241
242
|
return null;
}
}
|
bed6e1fc
孙向锦
添加其他功能
|
243
244
245
246
|
/**
* 菜单缓存
*
|
ad5081d3
孙向锦
初始化项目
|
247
248
249
250
251
252
253
|
* @param session
* @param USERNAME
* @param roleRights
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
|
bed6e1fc
孙向锦
添加其他功能
|
254
255
|
public List<Menu> getAttributeMenu(Session session, String USERNAME,
String roleRights, List<String> arrayRoleRights) throws Exception {
|
ad5081d3
孙向锦
初始化项目
|
256
|
List<Menu> allmenuList = new ArrayList<Menu>();
|
bed6e1fc
孙向锦
添加其他功能
|
257
258
259
260
261
|
if (null == session.getAttribute(USERNAME + Const.SESSION_allmenuList)) {
allmenuList = menuService.listAllMenuQx("0"); // 获取所有菜单
if (Tools.notEmpty(roleRights)) {
allmenuList = this.readMenu(allmenuList, roleRights,
arrayRoleRights); // 根据角色权限获取本权限的菜单列表
|
ad5081d3
孙向锦
初始化项目
|
262
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
263
264
265
266
267
|
session.setAttribute(USERNAME + Const.SESSION_allmenuList,
allmenuList);// 菜单权限放入session中
} else {
allmenuList = (List<Menu>) session.getAttribute(USERNAME
+ Const.SESSION_allmenuList);
|
ad5081d3
孙向锦
初始化项目
|
268
269
270
|
}
return allmenuList;
}
|
bed6e1fc
孙向锦
添加其他功能
|
271
272
273
274
275
276
277
278
|
/**
* 根据角色权限获取本权限的菜单列表(递归处理)
*
* @param menuList
* :传入的总菜单
* @param roleRights
* :加密的权限字符串
|
ad5081d3
孙向锦
初始化项目
|
279
280
|
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
281
282
283
284
285
286
287
288
289
290
|
public List<Menu> readMenu(List<Menu> menuList, String roleRights,
List<String> arrayRoleRights) {
for (int i = 0; i < menuList.size(); i++) {
Boolean b1 = RightsHelper.testRights(roleRights, menuList.get(i)
.getMENU_ID());
menuList.get(i).setHasMenu(b1); // 赋予主职角色菜单权限
if (!b1 && null != arrayRoleRights) {
for (int n = 0; n < arrayRoleRights.size(); n++) {
if (RightsHelper.testRights(arrayRoleRights.get(n),
menuList.get(i).getMENU_ID())) {
|
ad5081d3
孙向锦
初始化项目
|
291
292
293
294
295
|
menuList.get(i).setHasMenu(true);
break;
}
}
}
|
bed6e1fc
孙向锦
添加其他功能
|
296
297
298
|
if (menuList.get(i).isHasMenu()) { // 判断是否有此菜单权限
this.readMenu(menuList.get(i).getSubMenu(), roleRights,
arrayRoleRights);// 是:继续排查其子菜单
|
ad5081d3
孙向锦
初始化项目
|
299
300
301
302
|
}
}
return menuList;
}
|
bed6e1fc
孙向锦
添加其他功能
|
303
304
305
306
|
/**
* 切换菜单处理
*
|
ad5081d3
孙向锦
初始化项目
|
307
308
309
310
311
312
313
|
* @param allmenuList
* @param session
* @param USERNAME
* @param changeMenu
* @return
*/
@SuppressWarnings("unchecked")
|
bed6e1fc
孙向锦
添加其他功能
|
314
315
|
public List<Menu> changeMenuF(List<Menu> allmenuList, Session session,
String USERNAME, String changeMenu) {
|
ad5081d3
孙向锦
初始化项目
|
316
317
|
List<Menu> menuList = new ArrayList<Menu>();
/** 菜单缓存为空 或者 传入的菜单类型和当前不一样的时候,条件成立,重新拆分菜单,把选择的菜单类型放入缓存 */
|
bed6e1fc
孙向锦
添加其他功能
|
318
319
|
if (null == session.getAttribute(USERNAME + Const.SESSION_menuList)
|| (!changeMenu.equals(session.getAttribute("changeMenu")))) {
|
ad5081d3
孙向锦
初始化项目
|
320
321
322
323
|
List<Menu> menuList1 = new ArrayList<Menu>();
List<Menu> menuList2 = new ArrayList<Menu>();
List<Menu> menuList3 = new ArrayList<Menu>();
List<Menu> menuList4 = new ArrayList<Menu>();
|
bed6e1fc
孙向锦
添加其他功能
|
324
|
for (int i = 0; i < allmenuList.size(); i++) {// 拆分菜单
|
ad5081d3
孙向锦
初始化项目
|
325
|
Menu menu = allmenuList.get(i);
|
bed6e1fc
孙向锦
添加其他功能
|
326
327
328
329
330
331
332
333
|
if ("1".equals(menu.getMENU_TYPE())) {
menuList1.add(menu); // 系统菜单
} else if ("2".equals(menu.getMENU_TYPE())) {
menuList2.add(menu); // 业务菜单
} else if ("3".equals(menu.getMENU_TYPE())) {
menuList3.add(menu); // 菜单类型三
} else if ("4".equals(menu.getMENU_TYPE())) {
menuList4.add(menu); // 菜单类型四
|
ad5081d3
孙向锦
初始化项目
|
334
335
336
|
}
}
session.removeAttribute(USERNAME + Const.SESSION_menuList);
|
bed6e1fc
孙向锦
添加其他功能
|
337
338
339
|
if ("index".equals(changeMenu)) {
session.setAttribute(USERNAME + Const.SESSION_menuList,
menuList2);
|
ad5081d3
孙向锦
初始化项目
|
340
341
342
|
session.removeAttribute("changeMenu");
session.setAttribute("changeMenu", "index");
menuList = menuList2;
|
bed6e1fc
孙向锦
添加其他功能
|
343
344
345
|
} else if ("2".equals(changeMenu)) {
session.setAttribute(USERNAME + Const.SESSION_menuList,
menuList1);
|
ad5081d3
孙向锦
初始化项目
|
346
347
348
|
session.removeAttribute("changeMenu");
session.setAttribute("changeMenu", "2");
menuList = menuList1;
|
bed6e1fc
孙向锦
添加其他功能
|
349
350
351
|
} else if ("3".equals(changeMenu)) {
session.setAttribute(USERNAME + Const.SESSION_menuList,
menuList3);
|
ad5081d3
孙向锦
初始化项目
|
352
353
354
|
session.removeAttribute("changeMenu");
session.setAttribute("changeMenu", "3");
menuList = menuList3;
|
bed6e1fc
孙向锦
添加其他功能
|
355
356
357
|
} else if ("4".equals(changeMenu)) {
session.setAttribute(USERNAME + Const.SESSION_menuList,
menuList4);
|
ad5081d3
孙向锦
初始化项目
|
358
359
360
361
|
session.removeAttribute("changeMenu");
session.setAttribute("changeMenu", "4");
menuList = menuList4;
}
|
bed6e1fc
孙向锦
添加其他功能
|
362
363
364
|
} else {
menuList = (List<Menu>) session.getAttribute(USERNAME
+ Const.SESSION_menuList);
|
ad5081d3
孙向锦
初始化项目
|
365
366
367
|
}
return menuList;
}
|
bed6e1fc
孙向锦
添加其他功能
|
368
369
370
371
|
/**
* 把用户的组织机构权限放到session里面
*
|
ad5081d3
孙向锦
初始化项目
|
372
373
374
|
* @param session
* @param USERNAME
* @return
|
bed6e1fc
孙向锦
添加其他功能
|
375
|
* @throws Exception
|
ad5081d3
孙向锦
初始化项目
|
376
|
*/
|
bed6e1fc
孙向锦
添加其他功能
|
377
378
379
380
|
public void setAttributeToAllDEPARTMENT_ID(Session session, String USERNAME)
throws Exception {
String DEPARTMENT_IDS = "0", DEPARTMENT_ID = "0";
if (!"admin".equals(USERNAME)) {
|
ad5081d3
孙向锦
初始化项目
|
381
|
PageData pd = datajurService.getDEPARTMENT_IDS(USERNAME);
|
bed6e1fc
孙向锦
添加其他功能
|
382
383
|
DEPARTMENT_IDS = null == pd ? "无权" : pd.getString("DEPARTMENT_IDS");
DEPARTMENT_ID = null == pd ? "无权" : pd.getString("DEPARTMENT_ID");
|
ad5081d3
孙向锦
初始化项目
|
384
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
385
386
|
session.setAttribute(Const.DEPARTMENT_IDS, DEPARTMENT_IDS); // 把用户的组织机构权限集合放到session里面
session.setAttribute(Const.DEPARTMENT_ID, DEPARTMENT_ID); // 把用户的最高组织机构权限放到session里面
|
ad5081d3
孙向锦
初始化项目
|
387
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
388
|
|
ad5081d3
孙向锦
初始化项目
|
389
390
|
/**
* 进入tab标签
|
bed6e1fc
孙向锦
添加其他功能
|
391
|
*
|
ad5081d3
孙向锦
初始化项目
|
392
393
|
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
394
395
|
@RequestMapping(value = "/tab")
public String tab() {
|
ad5081d3
孙向锦
初始化项目
|
396
397
|
return "system/index/tab";
}
|
bed6e1fc
孙向锦
添加其他功能
|
398
|
|
ad5081d3
孙向锦
初始化项目
|
399
400
|
/**
* 进入首页后的默认页面
|
bed6e1fc
孙向锦
添加其他功能
|
401
|
*
|
ad5081d3
孙向锦
初始化项目
|
402
|
* @return
|
bed6e1fc
孙向锦
添加其他功能
|
403
|
* @throws Exception
|
ad5081d3
孙向锦
初始化项目
|
404
|
*/
|
bed6e1fc
孙向锦
添加其他功能
|
405
406
|
@RequestMapping(value = "/login_default")
public ModelAndView defaultPage() throws Exception {
|
ad5081d3
孙向锦
初始化项目
|
407
408
|
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
|
bed6e1fc
孙向锦
添加其他功能
|
409
410
411
412
413
414
415
|
pd.put("userCount",
Integer.parseInt(userService.getUserCount("").get("userCount")
.toString()) - 1); // 系统用户数
pd.put("appUserCount",
Integer.parseInt(appuserService.getAppUserCount("")
.get("appUserCount").toString())); // 会员数
mv.addObject("pd", pd);
|
ad5081d3
孙向锦
初始化项目
|
416
417
418
|
mv.setViewName("system/index/default");
return mv;
}
|
bed6e1fc
孙向锦
添加其他功能
|
419
|
|
ad5081d3
孙向锦
初始化项目
|
420
421
|
/**
* 用户注销
|
bed6e1fc
孙向锦
添加其他功能
|
422
|
*
|
ad5081d3
孙向锦
初始化项目
|
423
424
|
* @param session
* @return
|
bed6e1fc
孙向锦
添加其他功能
|
425
|
* @throws Exception
|
ad5081d3
孙向锦
初始化项目
|
426
|
*/
|
bed6e1fc
孙向锦
添加其他功能
|
427
428
429
430
|
@RequestMapping(value = "/logout")
public ModelAndView logout() throws Exception {
String USERNAME = Jurisdiction.getUsername(); // 当前登录的用户名
logBefore(logger, USERNAME + "退出系统");
|
ad5081d3
孙向锦
初始化项目
|
431
432
433
|
FHLOG.save(USERNAME, "退出");
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
|
bed6e1fc
孙向锦
添加其他功能
|
434
435
436
|
this.removeSession(USERNAME);// 请缓存
// shiro销毁登录
Subject subject = SecurityUtils.getSubject();
|
ad5081d3
孙向锦
初始化项目
|
437
438
439
|
subject.logout();
pd = this.getPageData();
pd.put("msg", pd.getString("msg"));
|
bed6e1fc
孙向锦
添加其他功能
|
440
|
pd = this.setLoginPd(pd); // 设置登录页面的配置参数
|
ad5081d3
孙向锦
初始化项目
|
441
|
mv.setViewName("system/index/login");
|
bed6e1fc
孙向锦
添加其他功能
|
442
|
mv.addObject("pd", pd);
|
ad5081d3
孙向锦
初始化项目
|
443
444
|
return mv;
}
|
bed6e1fc
孙向锦
添加其他功能
|
445
|
|
ad5081d3
孙向锦
初始化项目
|
446
447
448
|
/**
* 清理session
*/
|
bed6e1fc
孙向锦
添加其他功能
|
449
450
|
public void removeSession(String USERNAME) {
Session session = Jurisdiction.getSession(); // 以下清除session缓存
|
ad5081d3
孙向锦
初始化项目
|
451
452
453
454
455
456
457
458
459
460
461
462
463
|
session.removeAttribute(Const.SESSION_USER);
session.removeAttribute(USERNAME + Const.SESSION_ROLE_RIGHTS);
session.removeAttribute(USERNAME + Const.SESSION_allmenuList);
session.removeAttribute(USERNAME + Const.SESSION_menuList);
session.removeAttribute(USERNAME + Const.SESSION_QX);
session.removeAttribute(USERNAME + Const.SESSION_QX2);
session.removeAttribute(Const.SESSION_userpds);
session.removeAttribute(Const.SESSION_USERNAME);
session.removeAttribute(Const.SESSION_USERROL);
session.removeAttribute("changeMenu");
session.removeAttribute("DEPARTMENT_IDS");
session.removeAttribute("DEPARTMENT_ID");
}
|
bed6e1fc
孙向锦
添加其他功能
|
464
465
466
467
|
/**
* 设置登录页面的配置参数
*
|
ad5081d3
孙向锦
初始化项目
|
468
469
470
|
* @param pd
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
471
472
473
474
|
public PageData setLoginPd(PageData pd) {
pd.put("SYSNAME", Tools.readTxtFile(Const.SYSNAME)); // 读取系统名称
String strLOGINEDIT = Tools.readTxtFile(Const.LOGINEDIT); // 读取登录页面配置
if (null != strLOGINEDIT && !"".equals(strLOGINEDIT)) {
|
ad5081d3
孙向锦
初始化项目
|
475
|
String strLo[] = strLOGINEDIT.split(",fh,");
|
bed6e1fc
孙向锦
添加其他功能
|
476
|
if (strLo.length == 2) {
|
ad5081d3
孙向锦
初始化项目
|
477
478
479
480
481
|
pd.put("isZhuce", strLo[0]);
pd.put("isMusic", strLo[1]);
}
}
try {
|
bed6e1fc
孙向锦
添加其他功能
|
482
|
List<PageData> listImg = loginimgService.listAll(pd); // 登录背景图片
|
ad5081d3
孙向锦
初始化项目
|
483
484
485
486
487
488
|
pd.put("listImg", listImg);
} catch (Exception e) {
e.printStackTrace();
}
return pd;
}
|
bed6e1fc
孙向锦
添加其他功能
|
489
490
491
492
|
/**
* 获取用户权限
*
|
ad5081d3
孙向锦
初始化项目
|
493
494
495
|
* @param session
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
496
|
public Map<String, String> getUQX(String USERNAME) {
|
ad5081d3
孙向锦
初始化项目
|
497
498
499
500
|
PageData pd = new PageData();
Map<String, String> map = new HashMap<String, String>();
try {
pd.put(Const.SESSION_USERNAME, USERNAME);
|
bed6e1fc
孙向锦
添加其他功能
|
501
|
|
ad5081d3
孙向锦
初始化项目
|
502
|
PageData userpd = new PageData();
|
bed6e1fc
孙向锦
添加其他功能
|
503
|
userpd = userService.findByUsername(pd); // 通过用户名获取用户信息
|
ad5081d3
孙向锦
初始化项目
|
504
505
|
String ROLE_ID = userpd.get("ROLE_ID").toString();
String ROLE_IDS = userpd.getString("ROLE_IDS");
|
bed6e1fc
孙向锦
添加其他功能
|
506
507
508
509
510
511
|
pd.put("ROLE_ID", ROLE_ID); // 获取角色ID
pd = roleService.findObjectById(pd); // 获取角色信息
map.put("adds", pd.getString("ADD_QX")); // 增
map.put("dels", pd.getString("DEL_QX")); // 删
map.put("edits", pd.getString("EDIT_QX")); // 改
map.put("chas", pd.getString("CHA_QX")); // 查
|
ad5081d3
孙向锦
初始化项目
|
512
|
List<PageData> buttonQXnamelist = new ArrayList<PageData>();
|
bed6e1fc
孙向锦
添加其他功能
|
513
514
515
516
|
if ("admin".equals(USERNAME)) {
buttonQXnamelist = fhbuttonService.listAll(pd); // admin用户拥有所有按钮权限
} else {
if (Tools.notEmpty(ROLE_IDS)) {// (主副职角色综合按钮权限)
|
ad5081d3
孙向锦
初始化项目
|
517
518
|
ROLE_IDS = ROLE_IDS + ROLE_ID;
String arryROLE_ID[] = ROLE_IDS.split(",fh,");
|
bed6e1fc
孙向锦
添加其他功能
|
519
520
521
522
523
|
buttonQXnamelist = buttonrightsService
.listAllBrAndQxnameByZF(arryROLE_ID);
} else { // (主职角色按钮权限)
buttonQXnamelist = buttonrightsService
.listAllBrAndQxname(pd); // 此角色拥有的按钮权限标识列表
|
ad5081d3
孙向锦
初始化项目
|
524
525
|
}
}
|
bed6e1fc
孙向锦
添加其他功能
|
526
527
|
for (int i = 0; i < buttonQXnamelist.size(); i++) {
map.put(buttonQXnamelist.get(i).getString("QX_NAME"), "1"); // 按钮权限
|
ad5081d3
孙向锦
初始化项目
|
528
529
530
|
}
} catch (Exception e) {
logger.error(e.toString(), e);
|
bed6e1fc
孙向锦
添加其他功能
|
531
|
}
|
ad5081d3
孙向锦
初始化项目
|
532
533
|
return map;
}
|
bed6e1fc
孙向锦
添加其他功能
|
534
535
536
537
|
/**
* 获取用户权限(处理副职角色)
*
|
ad5081d3
孙向锦
初始化项目
|
538
539
540
|
* @param session
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
541
|
public Map<String, List<String>> getUQX2(String USERNAME) {
|
ad5081d3
孙向锦
初始化项目
|
542
543
544
545
546
|
PageData pd = new PageData();
Map<String, List<String>> maps = new HashMap<String, List<String>>();
try {
pd.put(Const.SESSION_USERNAME, USERNAME);
PageData userpd = new PageData();
|
bed6e1fc
孙向锦
添加其他功能
|
547
|
userpd = userService.findByUsername(pd); // 通过用户名获取用户信息
|
ad5081d3
孙向锦
初始化项目
|
548
|
String ROLE_IDS = userpd.getString("ROLE_IDS");
|
bed6e1fc
孙向锦
添加其他功能
|
549
|
if (Tools.notEmpty(ROLE_IDS)) {
|
ad5081d3
孙向锦
初始化项目
|
550
551
552
553
554
555
|
String arryROLE_ID[] = ROLE_IDS.split(",fh,");
PageData rolePd = new PageData();
List<String> addsList = new ArrayList<String>();
List<String> delsList = new ArrayList<String>();
List<String> editsList = new ArrayList<String>();
List<String> chasList = new ArrayList<String>();
|
bed6e1fc
孙向锦
添加其他功能
|
556
|
for (int i = 0; i < arryROLE_ID.length; i++) {
|
ad5081d3
孙向锦
初始化项目
|
557
558
559
560
561
562
563
|
rolePd.put("ROLE_ID", arryROLE_ID[i]);
rolePd = roleService.findObjectById(rolePd);
addsList.add(rolePd.getString("ADD_QX"));
delsList.add(rolePd.getString("DEL_QX"));
editsList.add(rolePd.getString("EDIT_QX"));
chasList.add(rolePd.getString("CHA_QX"));
}
|
bed6e1fc
孙向锦
添加其他功能
|
564
565
566
567
|
maps.put("addsList", addsList); // 增
maps.put("delsList", delsList); // 删
maps.put("editsList", editsList); // 改
maps.put("chasList", chasList); // 查
|
ad5081d3
孙向锦
初始化项目
|
568
569
570
|
}
} catch (Exception e) {
logger.error(e.toString(), e);
|
bed6e1fc
孙向锦
添加其他功能
|
571
|
}
|
ad5081d3
孙向锦
初始化项目
|
572
573
|
return maps;
}
|
bed6e1fc
孙向锦
添加其他功能
|
574
575
576
577
|
/**
* 更新登录用户的IP
*
|
ad5081d3
孙向锦
初始化项目
|
578
579
580
|
* @param USERNAME
* @throws Exception
*/
|
bed6e1fc
孙向锦
添加其他功能
|
581
|
public void getRemortIP(String USERNAME) throws Exception {
|
ad5081d3
孙向锦
初始化项目
|
582
583
584
|
PageData pd = new PageData();
HttpServletRequest request = this.getRequest();
String ip = "";
|
bed6e1fc
孙向锦
添加其他功能
|
585
586
587
588
589
|
if (request.getHeader("x-forwarded-for") == null) {
ip = request.getRemoteAddr();
} else {
ip = request.getHeader("x-forwarded-for");
}
|
ad5081d3
孙向锦
初始化项目
|
590
591
592
|
pd.put("USERNAME", USERNAME);
pd.put("IP", ip);
userService.saveIP(pd);
|
bed6e1fc
孙向锦
添加其他功能
|
593
594
|
}
|
ad5081d3
孙向锦
初始化项目
|
595
|
}
|