123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package com.yihu.hos.tenant.service;
- import com.yihu.hos.common.constants.ContextAttributes;
- import com.yihu.hos.interceptor.LocalContext;
- import com.yihu.hos.tenant.model.TenantModel;
- import com.yihu.hos.tenant.model.TenantSession;
- import com.yihu.hos.system.dao.UserDao;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- /**
- * @created Airhead 2016/11/16.
- */
- @Service
- public class AuthenticateService {
- @Autowired
- private UserDao userDao;
- @Resource(name = TenantService.BEAN_ID)
- private TenantService tenantService;
- public boolean isAuth(HttpServletRequest request, HttpServletResponse response) throws Exception {
- HttpSession session = request.getSession();
- TenantSession tenantSession = (TenantSession) session.getAttribute(ContextAttributes.TENANT_SESSION);
- if (tenantSession == null) {
- return false;
- }
- LocalContext.getContext().setAttachment(ContextAttributes.SCHEMA, tenantSession.getSchema());
- return true;
- }
- /**
- * //TODO 需要进一步完善逻辑
- * 租户登录授权
- * @param httpSession
- * @param tenantName
- * @return
- * @throws Exception
- */
- public boolean auth(HttpSession httpSession, String tenantName) throws Exception {
- //授权租户,切换到指定数据库,需要先清除原先的数据库指定,切回global_db表,获取租户信息
- LocalContext.getContext().removeAttachment(ContextAttributes.SCHEMA);
- TenantModel tenantModel = tenantService.findTenantByName(tenantName);
- //TODO:现在只是简单逻辑,需要修改成安全逻辑
- if (tenantModel == null ) {
- return false;
- }
- //切换Schema到对应租户
- LocalContext.getContext().setAttachment(ContextAttributes.SCHEMA, tenantModel.getSchema());
- LocalContext.getContext().setAttachment(ContextAttributes.SCHEMA_TEMP, tenantModel.getSchema());
- // UserModel userModel = userDao.findOne(user);
- // //TODO:现在只是简单逻辑,需要修改成安全逻辑
- // if (userModel == null || !password.equals(userModel.getPassword())) {
- // return "User Auth Failed";
- // }
- LocalContext.getContext().setAttachment(ContextAttributes.TENANT_NAME,tenantModel.getName());
- httpSession.setAttribute(ContextAttributes.TENANT_SESSION, new TenantSession(tenantModel.getName(), tenantModel.getSchema()));
- return true;
- }
- /**
- * 登出 - 移除租户授权信息
- * @param httpSession
- * @return
- * @throws Exception
- */
- public String logout(HttpSession httpSession) throws Exception {
- //移除Schema及缓存
- LocalContext.getContext().removeAttachment(ContextAttributes.SCHEMA);
- LocalContext.getContext().removeAttachment(ContextAttributes.SCHEMA_TEMP);
- httpSession.removeAttribute(ContextAttributes.TENANT_SESSION);
- return "Tenan Logout Success";
- }
- }
|