package handler import ( "context" "dashoo.cn/common_definition/admin/user_def" "dashoo.cn/common_definition/comm_def" "dashoo.cn/micro/app/common/gtoken" "dashoo.cn/opms_libary/micro_srv" "github.com/gogf/gf/errors/gerror" "github.com/gogf/gf/encoding/gjson" "github.com/gogf/gf/frame/g" "github.com/gogf/gf/os/glog" "github.com/gogf/gf/util/gconv" "dashoo.cn/common_definition/auth" ) type Auth struct{} var gfToken *gtoken.GfToken func init() { // 启动gtoken gfToken = >oken.GfToken{ Timeout: 24 * 60 * 60 * 1000, // 24小时 EncryptKey: []byte(g.Config().GetString("gtoken.encrypt-key")), CacheMode: g.Config().GetInt8("gtoken.cache-mode"), MultiLogin: g.Config().GetBool("gtoken.multi-login"), } gfToken.Start() } // Login 用户登录验证 func (e *Auth) Login(ctx context.Context, req *user_def.LoginReq, rsp *comm_def.CommonMsg) error { // 获取租户码 tenant, err := micro_srv.GetTenant(ctx) if err != nil { return err } g.Log().Info("Received User.Login request @ " + tenant) // 参数验证 if req.UserName == "" || req.Password == "" { return NoParamsErr } service, err := user.NewService(tenant) if err != nil { g.Log().Error(err) return gerror.New("系统异常,请重新尝试") } userInfo, err := service.Login(ctx, tenant, req.UserName, pridecrypt) rsp.Data = userInfo rsp.Code = code rsp.Msg = msg return nil } // LogOut 退出登录 //func (e *Auth) LogOut(ctx context.Context, req interface{}, rsp *comm_def.CommonMsg) error { // // 获取租户码 // tenant, err := micro_srv.GetTenant(ctx) // if err != nil { // return err // } // g.Log().Info("Received User.LogOut request @ " + tenant) // token, err := micro_srv.GetToken(ctx) // if err != nil { // return err // } // if token == "" { // return NoParamsErr // } // service, err := user.NewService(tenant) // if err != nil { // g.Log().Error(err) // return gerror.New("系统异常,请重新尝试") // } // err = service.LogOut(ctx, token) // _, err, code, msg := myerrors.CheckError(err) // if err != nil { // glog.Error(err) // return err // } // rsp.Code = code // rsp.Msg = msg // return nil //} func (e *Auth) GetToken(ctx context.Context, req *auth.Request, rsp *auth.Response) (err error) { glog.Info("Received Auth.GetToken request, UserKey:", req.UserKey, " @ ", req.Tenant) // 获取Data,换成对象 var json interface{} if req.Data != "" { json, err = gjson.DecodeToJson(req.Data) if err != nil { return err } } tokenResp := gfToken.GetOrGenToken(req.Tenant, req.UserKey, req.Uuid, json) if err := gconv.Struct(tokenResp, rsp); err != nil { return err } glog.Info(tokenResp.DataString()) return nil } func (e *Auth) RemoveToken(ctx context.Context, reqToken string, rsp *auth.Response) error { glog.Info("Received Auth.RemoveToken request, token:", reqToken) tokenResp := gfToken.RemoveToken(reqToken) if err := gconv.Struct(tokenResp, rsp); err != nil { return err } return nil } func (e *Auth) ValidToken(ctx context.Context, reqToken string, rsp *auth.Response) error { glog.Info("Received Auth.ValidToken request, token:", reqToken) tokenResp := gfToken.ValidToken(reqToken) if err := gconv.Struct(tokenResp, rsp); err != nil { return err } return nil }