package controllers
|
|
import (
|
"basic.com/dbapi.git"
|
"github.com/gin-gonic/gin"
|
"net/http"
|
"time"
|
"webserver/extend/code"
|
"webserver/extend/util"
|
"webserver/middlewares/auth"
|
)
|
|
type UserController struct {
|
|
}
|
|
type UserVo struct {
|
UserName string `json:"username"`
|
Password string `json:"password"`
|
}
|
|
// @Summary 用户登录
|
// @Description 用户登录
|
// @Accept x-www-form-urlencoded
|
// @Produce json
|
// @Tags 用户
|
// @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-u/sys/login [post]
|
func (uc UserController) Login(c *gin.Context) {
|
userName := c.PostForm("username")
|
password := c.PostForm("password")
|
if userName == "" || password == "" {
|
util.ResponseFormat(c,code.RequestParamError,"参数有误")
|
return
|
}
|
var api dbapi.UserApi
|
flag, data := api.Login(userName, password)
|
if flag {
|
authDriver := auth.GenerateAuthDriver()
|
loginedM := util.Struct2Map(data)
|
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
|
// @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/current [get]
|
func (uc UserController) Current(c *gin.Context) {
|
authDriver := auth.GenerateAuthDriver()
|
user := (*authDriver).User(c)
|
if user !=nil {
|
c.JSON(http.StatusOK,user)
|
} else {
|
c.JSON(http.StatusUnauthorized,"")
|
}
|
}
|
|
// @Summary token过期后刷新token
|
// @Description token过期后刷新token
|
// @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,"未找到refresh_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,"请重新登录")
|
}
|
}
|
|
// @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,"保存失败")
|
}
|
}
|