Selaa lähdekoodia

Merge branch 'v2' of https://git.qianqiusoft.com/qianqiusoft/light-apiengine into v2

zhangjq 6 vuotta sitten
vanhempi
commit
66d2a59042

+ 22 - 10
controllers/gen/SsoController_gen.go

@@ -1,10 +1,11 @@
+
 package gen
 
 import (
-	"git.qianqiusoft.com/qianqiusoft/light-apiengine/controllers/partial"
-	"git.qianqiusoft.com/qianqiusoft/light-apiengine/engine"
 	"git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
 	"github.com/gin-gonic/gin"
+	"git.qianqiusoft.com/qianqiusoft/light-apiengine/controllers/partial"
+	"git.qianqiusoft.com/qianqiusoft/light-apiengine/engine"
 )
 
 // SsoController operations for Sso
@@ -17,32 +18,43 @@ func NewSsoController(e *engine.ApiEngine) *SsoController {
 	return controller
 }
 
+
+
 // Login
 // @Title Login
-// @Description 用户登录
-// @Param	logininfo      false  "登录信息"
+// @Description 用户登录         
+// @Param	logininfo      false  "登录信息"  
 // @Success 200 {object} sysReturn
 // @Failure 403 :id is empty
 // @router /login  [post,get,put]
 func (c *SsoController) Login(ctx *gin.Context) {
 	//
-	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
 	partial.Sso_Login(&entitys.CtrlContext{ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
 // Logout
 // @Title Logout
-// @Description 用户退出
+// @Description 用户退出         
 // @Success 200 {object} sysReturn
 // @Failure 403 :id is empty
 // @router /logout  [post,get]
 func (c *SsoController) Logout(ctx *gin.Context) {
 	//
-	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
 	partial.Sso_Logout(&entitys.CtrlContext{ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
-func (c *SsoController) Validate(ctx *gin.Context) {
-	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
-	partial.Sso_Validate(&entitys.CtrlContext{ctx, db, c.apiengine.PlatformOrmEngine})
+// TokenValidate
+// @Title TokenValidate
+// @Description token验证         
+// @Param	token    string  false  "token"  
+// @Success 200 {object} sysReturn
+// @Failure 403 :id is empty
+// @router /token_validate  [post,get]
+func (c *SsoController) TokenValidate(ctx *gin.Context) {
+	//
+	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	partial.Sso_TokenValidate(&entitys.CtrlContext{ctx, db, c.apiengine.PlatformOrmEngine})
 }
+

+ 13 - 0
controllers/gen/SystemController_gen.go

@@ -344,3 +344,16 @@ func (c *SystemController) UpdateOrg(ctx *gin.Context) {
 	partial.System_UpdateOrg(&entitys.CtrlContext{ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
+// GetOrgByUserid
+// @Title GetOrgByUserid
+// @Description 根据用户id获取用户组织         
+// @Param	user_id    string  false  "用户id"  
+// @Success 200 {object} sysReturn
+// @Failure 403 :id is empty
+// @router /get_org_by_userid  [post,get]
+func (c *SystemController) GetOrgByUserid(ctx *gin.Context) {
+	//
+	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	partial.System_GetOrgByUserid(&entitys.CtrlContext{ctx, db, c.apiengine.PlatformOrmEngine})
+}
+

+ 19 - 0
controllers/partial/SsoController.go

@@ -111,6 +111,25 @@ func Sso_Validate(c *entitys.CtrlContext) {
 	}
 }
 
+// _TokenValidate
+// @Title _TokenValidate
+// @Description token验证
+// @Param	token    string  false  "token"
+// @Success 200 {object} Account
+// @Failure 403 :id is empty
+func Sso_TokenValidate(c *entitys.CtrlContext) {
+	token := c.Ctx.Query("token")
+
+	user, err := sysutils.TokenValidate(token)
+
+	if err != nil {
+		logs.Error(token, "校验AccessToken失败:", err)
+		c.Ctx.Data(401, "text", []byte(err.Error()))
+		return
+	}
+	c.Ctx.JSON(200, user)
+}
+
 func __none_func_sso__(params ...interface{}) bool {
 	return true
 }

+ 21 - 1
controllers/partial/SystemController.go

@@ -259,7 +259,8 @@ func System_UpdateUser(c *entitys.CtrlContext) {
 		return
 	}
 
-	_, err = c.Db.SqlMapClient("update_sys_user", &user).Execute()
+	paramMap, _ := sysutils.BeanToMap(&user)
+	_, err = c.Db.SqlMapClient("update_sys_user", paramMap).Execute()
 
 	if err == nil {
 		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
@@ -647,6 +648,25 @@ func System_UpdateOrg(c *entitys.CtrlContext) {
 	}
 }
 
+// _GetOrgByUserid
+// @Title _GetOrgByUserid
+// @Description 根据用户id获取用户组织
+// @Param	user_id    string  false  "用户id"
+// @Success 200 {object} Account
+// @Failure 403 :id is empty
+func System_GetOrgByUserid(c *entitys.CtrlContext) {
+	user_id := c.Ctx.Query("user_id")
+
+	var org sysmodel.SysOrg
+	err := c.Db.SqlMapClient("get_org_by_userid", user_id).Find(&org)
+
+	if err == nil {
+		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", org})
+	} else {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+	}
+}
+
 func __none_func_system__(params ...interface{}) bool {
 	return true
 }

+ 29 - 15
light-apiengine.xml

@@ -6,21 +6,28 @@
              desc="千秋开发平台"
              packagename="git.qianqiusoft.com/qianqiusoft/light-apiengine">
     <controllers>
-        <!--<controller name="sso" desc="用户单点登录功能" skip_login="true">-->
-            <!--<api name="login" desc="用户登录" method="post,get,put">-->
-                <!--<param name="logininfo" ref="$login_info" desc="登录信息"></param>-->
-                <!--<return>-->
-                    <!--<success ref="$sys_return"></success>-->
-                    <!--<failure ref="$sys_return"></failure>-->
-                <!--</return>-->
-            <!--</api>-->
-            <!--<api name="logout" desc="用户退出" method="post,get">-->
-                <!--<return>-->
-                    <!--<success ref="$sys_return"></success>-->
-                    <!--<failure ref="$sys_return"></failure>-->
-                <!--</return>-->
-            <!--</api>-->
-        <!--</controller>-->
+        <controller name="sso" desc="用户单点登录功能" skip_login="true">
+            <api name="login" desc="用户登录" method="post,get,put">
+                <param name="logininfo" ref="$login_info" desc="登录信息"></param>
+                <return>
+                    <success ref="$sys_return"></success>
+                    <failure ref="$sys_return"></failure>
+                </return>
+            </api>
+            <api name="logout" desc="用户退出" method="post,get">
+                <return>
+                    <success ref="$sys_return"></success>
+                    <failure ref="$sys_return"></failure>
+                </return>
+            </api>
+            <api name="token_validate" desc="token验证" method="post,get">
+                <param name="token" type="string" desc="token"></param>
+                <return>
+                    <success ref="$sys_return"></success>
+                    <failure ref="$sys_return"></failure>
+                </return>
+            </api>
+        </controller>
         <controller name="sys_attachment" desc="系统管理">
             <api name="upload" desc="上传文件" method="post">
                 <return>
@@ -186,6 +193,13 @@
                     <failure ref="$sys_return"></failure>
                 </return>
             </api>
+            <api name="get_org_by_userid" desc="根据用户id获取用户组织" method="post,get">
+                <param name="user_id"  type="string" desc="用户id"/>
+                <return>
+                    <success ref="$sys_return"></success>
+                    <failure ref="$sys_return"></failure>
+                </return>
+            </api>
         </controller>
         <controller name="api" desc="api接口">
             <api name="api_doc" method="get" desc="api文档">

+ 15 - 13
routers/sso.go

@@ -1,31 +1,33 @@
+
 package routers
 
 import (
 	"git.qianqiusoft.com/qianqiusoft/light-apiengine/engine"
-
+	
 	"git.qianqiusoft.com/qianqiusoft/light-apiengine/controllers/gen"
 )
 
-func init() {
+func init(){
 	addRegisterHandler(registerSsoRouter)
 }
 
-func registerSsoRouter(e *engine.ApiEngine) {
-	api := e.GinEngine.Group("/api")
-	v1 := api.Group("/v1/sso")
+func registerSsoRouter(e *engine.ApiEngine){
+	api:=e.GinEngine.Group("/api")
+	v1:=api.Group("/v1/sso")
+	
 
 	ctrler := gen.NewSsoController(e)
 
-	v1.GET("/login", ctrler.Login)
-	v1.POST("/login", ctrler.Login)
 
-	v1.GET("/logout", ctrler.Logout)
-	v1.POST("/logout", ctrler.Logout)
 
-	ssoclient := e.GinEngine.Group("/local/openid")
-	ssoclient.GET("/validate", ctrler.Validate)
+	v1.GET("/login",ctrler.Login)
+	v1.POST("/login",ctrler.Login)
 
-	openIdValidate := e.GinEngine.Group("/openid")
-	openIdValidate.GET("/validate", ctrler.Validate)
+	v1.GET("/logout",ctrler.Logout)
+	v1.POST("/logout",ctrler.Logout)
+
+	v1.GET("/token_validate",ctrler.TokenValidate)
+	v1.POST("/token_validate",ctrler.TokenValidate)
 
 }
+

+ 3 - 0
routers/system.go

@@ -95,5 +95,8 @@ func registerSystemRouter(e *engine.ApiEngine){
 	v1.GET("/update_org",ctrler.UpdateOrg)
 	v1.POST("/update_org",ctrler.UpdateOrg)
 
+	v1.GET("/get_org_by_userid",ctrler.GetOrgByUserid)
+	v1.POST("/get_org_by_userid",ctrler.GetOrgByUserid)
+
 }
 

+ 5 - 0
sqlconfig/light-apiengine-develop/sys_org.xml

@@ -0,0 +1,5 @@
+<sqlMap>
+    <sql id="get_org_by_userid">
+        select sys_org.* from sys_user, sys_org where sys_user.org_id = sys_org.id and sys_user.id = ?
+    </sql>
+</sqlMap>

+ 14 - 0
utils/token_store.go

@@ -114,6 +114,20 @@ func Validate(accessToken, loginId string, domain string) (*entitys.Token, error
 
 }
 
+func TokenValidate(token string) (*entitys.Token, error) {
+	user := globalTokenStore.Get(token)
+
+	if strings.EqualFold(user.AccessToken, token) {
+		logs.Info("get the token ", token, " of id ")
+		globalTokenStore.Refresh(token)
+		return user, nil
+	} else {
+		logs.Error(user.AccessToken, "is not equal to", token)
+		return user, errors.New(user.AccessToken + " is not equal to " + token)
+	}
+
+}
+
 //func ValidateApp(appName, accessToken, timestamp, signature string) (*entitys.Token, error) {
 //	fmt.Println(appName, accessToken, timestamp, signature)
 //	if appName == "" || timestamp == "" || accessToken == "" || signature == "" {

+ 3 - 0
wfclient/client.go

@@ -52,6 +52,7 @@ func Instance() *WFClient {
 		instance.endpoint = ""
 		instance.authorization = ""
 		instance.userId = ""
+		instance.token = ""
 		instance.callbackMap = make(map[string]func(CallbackArg))
 		HttpClientInstance().setRequestInterseptor(instance.wfReqInterseptor)
 	}
@@ -77,6 +78,7 @@ func (w *WFClient) Init(endpoint, userId, username, token, domain string) error
 	w.endpoint = endpoint
 	w.userId = userId
 	w.authorization, err = w.createAuthorization(username, token, domain)
+	w.token = token
 	if err != nil {
 		return err
 	} else {
@@ -367,6 +369,7 @@ func (w *WFClient) FetchWFINstances(page, rows int, filters, sidx, sord string)
  */
 func (w *WFClient) wfReqInterseptor(r *http.Request) {
 	r.Header.Add("Authorization", w.authorization)
+	r.Header.Add("token", w.token)
 }
 
 /**