From 7c811247ecf143e08c576986a884bedadc57dd66 Mon Sep 17 00:00:00 2001 From: liuxiaolong <liuxiaolong@aiotlink.com> Date: 星期五, 05 六月 2020 18:29:41 +0800 Subject: [PATCH] add refresh token to resp --- controllers/user.go | 186 +++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 165 insertions(+), 21 deletions(-) diff --git a/controllers/user.go b/controllers/user.go index 48a3121..9dbdb68 100644 --- a/controllers/user.go +++ b/controllers/user.go @@ -2,7 +2,6 @@ import ( "basic.com/dbapi.git" - "fmt" "github.com/gin-gonic/gin" "net/http" "time" @@ -22,15 +21,15 @@ // @Summary 鐢ㄦ埛鐧诲綍 // @Description 鐢ㄦ埛鐧诲綍 -// @Accept json +// @Accept x-www-form-urlencoded // @Produce json // @Tags 鐢ㄦ埛 -// @Param username query string true "鐢ㄦ埛鍚�" -// @Param password query string true "瀵嗙爜" +// @Param username formData string true "鐢ㄦ埛鍚�" +// @Param password formData string true "瀵嗙爜" // @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" // @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}" -// @Router /data/api-v/sys/login [post] -func (controller UserController) Login(c *gin.Context) { +// @Router /data/api-u/sys/login [post] +func (uc UserController) Login(c *gin.Context) { userName := c.PostForm("username") password := c.PostForm("password") if userName == "" || password == "" { @@ -42,20 +41,61 @@ if flag { authDriver := auth.GenerateAuthDriver() loginedM := util.Struct2Map(data) - tokenStr := (*authDriver).Login(c.Request, c.Writer, loginedM) - c.JSON(200,map[string]interface{}{ - "userInfo":loginedM, - "access_token":tokenStr, - "refresh_token":tokenStr, - "scope":"app", - "token_type":"Bearer", - "expires_in":time.Now().Add(time.Hour * 8).Unix(), - }) + tokenM := make(map[string]interface{},2) + tokenM["id"] = loginedM["id"] + tokenM["username"] = loginedM["username"] + tokenM["permissions"] = loginedM["permissions"] + b,tokenStr,refreshTokenStr := (*authDriver).Login(c.Request, c.Writer, tokenM) + if b { + userId := loginedM["id"].(string) + auth.RemoveOutUser(userId) + + c.JSON(200,map[string]interface{}{ + "userInfo":loginedM, + "access_token": tokenStr, + "refresh_token": refreshTokenStr, + "scope":"app", + "token_type":"Bearer", + "expires_in":time.Now().Add(time.Hour * 8).Unix(), + }) + } else { + c.JSON(500,"鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒") + } } else { c.JSON(500,"鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒") } } +// @Security ApiKeyAuth +// @Summary 淇敼褰撳墠鐧诲綍鐢ㄦ埛鐨勫瘑鐮� +// @Description 淇敼褰撳墠鐧诲綍鐢ㄦ埛鐨勫瘑鐮� +// @Accept x-www-form-urlencoded +// @Produce json +// @Tags 鐢ㄦ埛 +// @Param oldPwd formData string true "鏃у瘑鐮�" +// @Param newPwd formData string true "鏂板瘑鐮�" +// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" +// @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}" +// @Router /data/api-u/users/updatePwd [post] +func (uc UserController) UpdatePwd(c *gin.Context) { + oldPwd := c.PostForm("oldPwd") + newPwd := c.PostForm("newPwd") + if oldPwd == "" || newPwd == "" { + util.ResponseFormat(c,code.RequestParamError,"鍙傛暟鏈夎") + return + } + authDriver := auth.GenerateAuthDriver() + userM := (*authDriver).User(c) + userId := userM["id"].(string) + var userApi dbapi.UserApi + if b,_ :=userApi.UpdatePwd(userId, oldPwd, newPwd);b { + util.ResponseFormat(c,code.UpdateSuccess,"鏇存柊鎴愬姛") + } else { + util.ResponseFormat(c,code.AccountPassUnmatch,"瀵嗙爜鏈夎") + } +} + +// @Security ApiKeyAuth // @Summary 鑾峰彇褰撳墠鐢ㄦ埛淇℃伅 // @Description 鑾峰彇褰撳墠鐢ㄦ埛淇℃伅 // @Accept json @@ -63,22 +103,126 @@ // @Tags 鐢ㄦ埛 // @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" // @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}" -// @Router /data/api-v/users/current [get] -func (controller UserController) Current(c *gin.Context) { +// @Router /data/api-u/users/current [get] +func (uc UserController) Current(c *gin.Context) { authDriver := auth.GenerateAuthDriver() user := (*authDriver).User(c) - fmt.Println("current:",user) if user !=nil { c.JSON(http.StatusOK,user) } else { c.JSON(http.StatusUnauthorized,"") } } -// @Router /data/api-u/sys/refresh_token [post] -func (controller UserController) RefreshToken(c *gin.Context){ +// @Summary token杩囨湡鍚庡埛鏂皌oken +// @Description token杩囨湡鍚庡埛鏂皌oken +// @Accept x-www-form-urlencoded +// @Produce json +// @Tags 鐢ㄦ埛 +// @Param refresh_token formData string true "涓婃鑾峰彇token鏃惰繑鍥炵殑refresh_token鍊�" +// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" +// @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}" +// @Router /data/api-u/sys/refresh_token [post] +func (uc UserController) RefreshToken(c *gin.Context){ + refreshToken := c.PostForm("refresh_token") + if refreshToken == "" { + util.ResponseFormat(c,code.TokenNotFound,"鏈壘鍒皉efresh_token") + return + } + authDriver := auth.GenerateAuthDriver() + if b,newToken,newRefreshToken := (*authDriver).RefreshToken(refreshToken);b { + util.ResponseFormat(c,code.Success,map[string]string{ + "token": newToken, + "refresh_token": newRefreshToken, + }) + } else { + util.ResponseFormat(c,code.NotLogin,"璇烽噸鏂扮櫥褰�") + } } -func (controller UserController) Logout(c *gin.Context){ +// @Router /data/api-u/sys/logout [get] +func (uc UserController) Logout(c *gin.Context){ + c.JSON(http.StatusOK,"閫�鍑烘垚鍔�") +} +// @Security ApiKeyAuth +// @Summary 鏌ユ壘鎵�鏈夌敤鎴� +// @Description 鏌ユ壘鎵�鏈夌敤鎴� +// @Accept json +// @Produce json +// @Tags 鐢ㄦ埛 +// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" +// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}" +// @Router /data/api-u/users/findAllUser [get] +func (uc UserController) FindAllUser(c *gin.Context) { + authDriver := auth.GenerateAuthDriver() + userM := (*authDriver).User(c) + userId := userM["id"].(string) + var api dbapi.UserApi + b,d := api.FindAllUser(userId) + if b { + util.ResponseFormat(c,code.Success,d) + } else { + util.ResponseFormat(c,code.ComError,"") + } +} + +type UserEditVo struct { + Id string `json:"id"` + UserName string `json:"username"` + NewPwd string `json:"newPwd"` + MenuIds []string `json:"menuIds"` +} + +// @Security ApiKeyAuth +// @Summary 缂栬緫姝ょ敤鎴凤紝杩斿洖姝ょ敤鎴风殑鏉冮檺鑿滃崟 +// @Description 缂栬緫姝ょ敤鎴凤紝杩斿洖姝ょ敤鎴风殑鏉冮檺鑿滃崟 +// @Accept x-www-form-urlencoded +// @Produce json +// @Tags 鐢ㄦ埛 +// @Param userId formData string true "鐢ㄦ埛id" +// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" +// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}" +// @Router /data/api-u/users/findById [post] +func (uc UserController) FindById(c *gin.Context) { + userId := c.PostForm("userId") + if userId == "" { + util.ResponseFormat(c,code.RequestParamError,"鍙傛暟鏈夎") + return + } + var api dbapi.UserApi + b, d := api.FindById(userId) + if b { + util.ResponseFormat(c,code.Success,d) + } else { + util.ResponseFormat(c,code.ComError,"") + } +} + +// @Security ApiKeyAuth +// @Summary 鏇存柊鐢ㄦ埛鍚嶏紝瀵嗙爜鍜岃彍鍗曟潈闄� +// @Description 鏇存柊鐢ㄦ埛鍚嶏紝瀵嗙爜鍜岃彍鍗曟潈闄� +// @Accept json +// @Produce json +// @Tags 鐢ㄦ埛 +// @Param userVo body controllers.UserEditVo true "鐢ㄦ埛鍙婃潈闄愪俊鎭�" +// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" +// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}" +// @Router /data/api-v/users/saveAuth [post] +func (uc UserController) SaveAuth(c *gin.Context) { + var userEditVo UserEditVo + err := c.BindJSON(&userEditVo) + if err !=nil || userEditVo.Id =="" || userEditVo.UserName == "" { + util.ResponseFormat(c,code.RequestParamError,"") + return + } + paramBody := util.Struct2Map(userEditVo) + var api dbapi.UserApi + b, d := api.SaveAuth(paramBody) + if b { + auth.SetOutUser(userEditVo.Id) + util.ResponseFormat(c,code.UpdateSuccess,d) + } else { + util.ResponseFormat(c,code.UpdateFail,"淇濆瓨澶辫触") + } } \ No newline at end of file -- Gitblit v1.8.0