/*
 * @description:
 * @Author: CP
 * @Date: 2020-09-17 17:15:00
 * @FilePath: \construction_management\web\middleware\jwt.go
 */
package middleware

import (
	"github.com/iris-contrib/middleware/jwt"
	"github.com/kataras/iris/v12"
	"go.mod/conf"
)

// ResModel 返回数据模板
type ResModel struct {
	Code string      `json:"code"`
	Msg  string      `json:"msg"`
	Data interface{} `json:"data"`
}

func JwtAuth() *jwt.Middleware {
	j2 := jwt.New(jwt.Config{
		// 注意，新增了一个错误处理函数
		ErrorHandler: func(ctx iris.Context, err error) {
			if err == nil {
				return
			}

			ctx.StopExecution()
			ctx.StatusCode(iris.StatusUnauthorized)
			ctx.JSON(ResModel{
				Code: "501",
				Msg:  err.Error(),
			})
		},
		// 设置一个函数返回秘钥，关键在于return []byte("这里设置秘钥")
		ValidationKeyGetter: func(token *jwt.Token) (interface{}, error) {

			return []byte(conf.SignSecret), nil
		},

		// 设置一个加密方法
		SigningMethod: jwt.SigningMethodHS256,
	})
	return j2
}
