SiteInterceptor.java
2.68 KB
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package com.jflyfox.component.interceptor;
import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.core.Controller;
import com.jflyfox.component.util.JFlyFoxUtils;
import com.jflyfox.modules.admin.site.SessionSite;
import com.jflyfox.modules.admin.site.SiteConstant;
import com.jflyfox.modules.admin.site.SiteService;
import com.jflyfox.modules.admin.site.TbSite;
import java.util.List;
/**
* 站点认证拦截器
*
* @author flyfox 2014-2-11
*/
public class SiteInterceptor implements Interceptor {
// private static final Logger log =
// Logger.getLogger(SiteInterceptor.class);
private SiteService siteSvc = new SiteService();
public void intercept(Invocation ai) {
Controller controller = ai.getController();
SessionSite sessionSite = controller.getSessionAttr(SiteConstant.getSessionSite());
TbSite defaultSite = siteSvc.getDefaultSite();
if (defaultSite == null) {
throw new RuntimeException("nout set default site");
}
// 如果修改了默认站点,重新设置site session
if (sessionSite != null && defaultSite.getId() != sessionSite.getSiteDefalutId()) {
sessionSite = null;
}
// 单站点设置
if (!SiteConstant.isMultiSite()) {
if (sessionSite == null) {
sessionSite = new SessionSite();
sessionSite.setSiteDefalutId(defaultSite.getId());
sessionSite.setSiteId(defaultSite.getId());
sessionSite.setModel(defaultSite);
controller.setSessionAttr(SiteConstant.getSessionSite(), sessionSite);
}
ai.invoke();
return;
}
// 请求路径
String tmpPath = ai.getActionKey();
tmpPath = JFlyFoxUtils.handlerPath(tmpPath);
boolean isBack = JFlyFoxUtils.isBack(tmpPath);
// 单站点不返回站点列表
List<TbSite> sites = siteSvc.getSiteList();
if (isBack) {
controller.setAttr(SiteConstant.getSessionSites(), sites);
} else {
// 前台站点地址解析
if (sessionSite == null) {
sessionSite = new SessionSite();
}
// 通过site匹配站点
String siteServer = controller.getRequest().getServerName();
int siteId = 0;
sessionSite.setLastSite(siteServer);
sessionSite.setSiteId(siteId);
for (TbSite tmpSite : sites) {
if (siteServer.equals(tmpSite.getDomainPc()) //
|| siteServer.equals(tmpSite.getDomainMobile())) {
siteId = tmpSite.getId();
sessionSite.setSiteId(siteId);
sessionSite.setModel(tmpSite);
break;
}
}
// 没有就用默认的,设置站点对象
if (siteId == 0) {
sessionSite.setSiteId(defaultSite.getId());
sessionSite.setModel(defaultSite);
}
sessionSite.setSiteDefalutId(defaultSite.getId());
controller.setSessionAttr(SiteConstant.getSessionSite(), sessionSite);
}
ai.invoke();
}
}