Browse Source

Merge branch 'master' of luofaqiang/esb into master

罗发强 8 years ago
parent
commit
2c82a555a5

+ 10 - 3
hos-saas/src/main/java/com/yihu/hos/saas/controllers/AuthenticateController.java

@ -2,12 +2,14 @@ package com.yihu.hos.saas.controllers;
import com.yihu.hos.saas.services.AuthenticateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
 * @created Airhead 2016/11/16.
@ -18,8 +20,13 @@ public class AuthenticateController {
    @Autowired
    private AuthenticateService authenticateService;
    @RequestMapping(method = RequestMethod.POST)
    public String auth(HttpServletRequest request, HttpServletResponse response) {
        return authenticateService.auth(request, response);
    @RequestMapping(value = "/{tenantName}", method = RequestMethod.POST)
    public String auth(@PathVariable(name = "tenantName") String tenantName,
                       HttpServletRequest request, HttpServletResponse response) {
        HttpSession session = request.getSession();
        String tenantPassword = request.getParameter("tenantPassword");
        String user = request.getParameter("user");
        String password = request.getParameter("password");
        return authenticateService.auth(session, tenantName, tenantPassword, user, password);
    }
}

+ 20 - 0
hos-saas/src/main/java/com/yihu/hos/saas/daos/TenantDao.java

@ -0,0 +1,20 @@
package com.yihu.hos.saas.daos;
import com.yihu.hos.saas.models.TenantModel;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
 * @created Airhead 2016/11/16.
 */
@Component
@Transactional
public interface TenantDao extends CrudRepository<TenantModel, Long> {
    @Query("select a from TenantModel a where a.code = ?1 and a.valid=1")
    TenantModel findOneByCode(String code);
    @Query("select a from TenantModel a where a.name = ?1 and a.valid=1")
    TenantModel findOneByName(String name);
}

+ 106 - 0
hos-saas/src/main/java/com/yihu/hos/saas/models/TenantModel.java

@ -0,0 +1,106 @@
package com.yihu.hos.saas.models;
import com.yihu.hos.saas.models.common.IdModel;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * @created Airhead 2016/11/16.
 */
@Entity
@Table(name = "tenant")
public class TenantModel extends IdModel {
    private String code;
    private String name;
    private String password;
    private String schema;
    private Date created;
    private Long createdUnix;
    private Date updated;
    private Long updatedUnix;
    private Integer valid;
    @Column(name = "password")
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Column(name = "code")
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "schema")
    public String getSchema() {
        return schema;
    }
    public void setSchema(String schema) {
        this.schema = schema;
    }
    @Column(name = "created")
    public Date getCreated() {
        return created;
    }
    public void setCreated(Date created) {
        this.created = created;
    }
    @Column(name = "created_unix")
    public Long getCreatedUnix() {
        return createdUnix;
    }
    public void setCreatedUnix(Long createdUnix) {
        this.createdUnix = createdUnix;
    }
    @Column(name = "updated")
    public Date getUpdated() {
        return updated;
    }
    public void setUpdated(Date updated) {
        this.updated = updated;
    }
    @Column(name = "updated_unix")
    public Long getUpdatedUnix() {
        return updatedUnix;
    }
    public void setUpdatedUnix(Long updatedUnix) {
        this.updatedUnix = updatedUnix;
    }
    @Column(name = "valid")
    public Integer getValid() {
        return valid;
    }
    public void setValid(Integer valid) {
        this.valid = valid;
    }
}

+ 11 - 2
hos-saas/src/main/java/com/yihu/hos/saas/models/bo/UserSession.java

@ -8,16 +8,25 @@ import java.util.UUID;
public class UserSession {
    private String userCode;
    private String token;
    private String schema;
    public UserSession() {
    }
    public UserSession(String userCode) {
    public UserSession(String userCode, String schema) {
        this.userCode = userCode;
        this.schema = schema;
        token = UUID.randomUUID().toString();
    }
    public String getSchema() {
        return schema;
    }
    public void setSchema(String schema) {
        this.schema = schema;
    }
    public String getUserCode() {
        return userCode;
    }

+ 2 - 1
hos-saas/src/main/java/com/yihu/hos/saas/services/AuthenticateService.java

@ -4,6 +4,7 @@ import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
 * @created Airhead 2016/11/16.
@ -12,5 +13,5 @@ import javax.servlet.http.HttpServletResponse;
public interface AuthenticateService {
    boolean isAuth(HttpServletRequest request, HttpServletResponse response) throws Exception;
    String auth(HttpServletRequest request, HttpServletResponse response);
    String auth(HttpSession httpSession, String tenantName, String tenantPassword, String user, String password);
}

+ 21 - 15
hos-saas/src/main/java/com/yihu/hos/saas/services/impl/AuthenticateServiceImpl.java

@ -1,10 +1,10 @@
package com.yihu.hos.saas.services.impl;
import com.yihu.hos.saas.constants.ContextAttributes;
import com.yihu.hos.saas.daos.TenantDao;
import com.yihu.hos.saas.daos.UserDao;
import com.yihu.hos.saas.daos.UserTenantDao;
import com.yihu.hos.saas.models.TenantModel;
import com.yihu.hos.saas.models.UserModel;
import com.yihu.hos.saas.models.UserTenantModel;
import com.yihu.hos.saas.models.bo.UserSession;
import com.yihu.hos.saas.services.AuthenticateService;
import com.yihu.hos.saas.utils.LocalContext;
@ -20,8 +20,9 @@ import javax.servlet.http.HttpSession;
public class AuthenticateServiceImpl implements AuthenticateService {
    @Autowired
    private UserDao userDao;
    @Autowired
    private UserTenantDao userTenantDao;
    private TenantDao tenantDao;
    @Override
    public boolean isAuth(HttpServletRequest request, HttpServletResponse response) throws Exception {
@ -31,26 +32,31 @@ public class AuthenticateServiceImpl implements AuthenticateService {
            return false;
        }
        UserTenantModel userTenantModel = userTenantDao.findOne(userSession.getUserCode());
        LocalContext.getContext().setAttachment(ContextAttributes.SCHEMA, userTenantModel.getTenantSchema());
        LocalContext.getContext().setAttachment(ContextAttributes.SCHEMA, userSession.getSchema());
        return true;
    }
    @Override
    public String auth(HttpServletRequest request, HttpServletResponse response) {
        String name = request.getParameter("name");
        String password = request.getParameter("password");
        UserModel userModel = userDao.findOne(name);
        if (userModel == null) {
            return "Auth Failed";
    public String auth(HttpSession httpSession, String tenantName, String tenantPassword, String user, String password) {
        TenantModel tenantModel = tenantDao.findOneByName(tenantName);
        //TODO:现在只是简单逻辑,需要修改成安全逻辑
        if (tenantModel == null
//                || !password.equals(tenantModel.getPassword())
                ) {
            return "Tenant Auth Failed";
        }
        if (password.equals(userModel.getPassword())) {     //简单逻辑
            HttpSession session = request.getSession();
            session.setAttribute("userSession", new UserSession(userModel.getCode()));
        //切换Schema
        LocalContext.getContext().setAttachment(ContextAttributes.SCHEMA, tenantModel.getSchema());
        UserModel userModel = userDao.findOne(user);
        //TODO:现在只是简单逻辑,需要修改成安全逻辑
        if (userModel == null || !password.equals(userModel.getPassword())) {
            return "User Auth Failed";
        }
        httpSession.setAttribute("userSession", new UserSession(userModel.getCode(), tenantModel.getSchema()));
        return "Auth Success";
    }
}

+ 3 - 1
hos-saas/src/main/java/com/yihu/hos/saas/services/mockimpl/AuthenticateServiceMockImpl.java

@ -7,6 +7,7 @@ import com.yihu.hos.saas.utils.LocalContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
 * @created Airhead 2016/11/16.
@ -20,10 +21,11 @@ public class AuthenticateServiceMockImpl implements AuthenticateService {
    }
    @Override
    public String auth(HttpServletRequest request, HttpServletResponse response) {
    public String auth(HttpSession httpSession, String tenantName, String tenantPassword, String user, String password) {
        UserSession userSession = new UserSession();
        userSession.setUserCode("abc");
        userSession.setToken("1234567890");
        return null;
    }
    
}