| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- package handler
- import (
- "context"
- "dashoo.cn/common_definition/admin/user_def"
- "dashoo.cn/common_definition/auth"
- "dashoo.cn/common_definition/comm_def"
- "dashoo.cn/micro/app/service"
- "dashoo.cn/opms_libary/gtoken"
- "dashoo.cn/opms_libary/micro_srv"
- "dashoo.cn/opms_libary/myerrors"
- "github.com/gogf/gf/encoding/gjson"
- "github.com/gogf/gf/frame/g"
- "github.com/gogf/gf/os/glog"
- "github.com/gogf/gf/util/gconv"
- )
- type AuthHandler struct{}
- func init() {
- // 启动gtoken
- gtoken.GFToken = >oken.GfToken{
- Timeout: g.Config().GetInt("gtoken.timeout"), // 15天
- EncryptKey: []byte(g.Config().GetString("gtoken.encrypt-key")),
- CacheMode: g.Config().GetInt8("gtoken.cache-mode"),
- MultiLogin: g.Config().GetBool("gtoken.multi-login"),
- }
- gtoken.GFToken.Start()
- }
- // Login 用户登录验证
- func (h *AuthHandler) Login(ctx context.Context, req *user_def.LoginReq, rsp *comm_def.CommonMsg) error {
- // 参数验证
- if req.UserName == "" || req.Password == "" {
- return myerrors.TipsError("请求参数不存在。")
- }
- userService, err := service.NewUserService(ctx)
- if err != nil {
- return err
- }
- userInfo, err := userService.Login(req.UserName, req.Password)
- loginLogService, _ := service.NewLoginLogService(ctx)
- loginLogService.Invoke(ctx, req.UserName, err)
- if err != nil {
- return err
- }
- tenant, _ := micro_srv.GetTenant(ctx)
- tokenResp := gtoken.GFToken.GetOrGenToken(tenant, userInfo.UserName, userInfo.Uuid, userInfo)
- rsp.Msg = tokenResp.Msg
- tokenData := gconv.Map(tokenResp.Data)
- tokenData["isFirstLogin"] = userInfo.IsFirstLogin
- rsp.Data = tokenData
- return nil
- }
- // LogOut 退出登录
- func (h *AuthHandler) LogOut(ctx context.Context, req interface{}, rsp *comm_def.CommonMsg) error {
- token, err := micro_srv.GetToken(ctx)
- if err != nil {
- return err
- } else if token == "" {
- return myerrors.TipsError("请求参数不存在。")
- }
- tokenResp := gtoken.GFToken.RemoveToken(token)
- if err != nil {
- return err
- }
- rsp.Msg = tokenResp.Msg
- rsp.Data = tokenResp.Data
- return nil
- }
- func (h *AuthHandler) GetToken(ctx context.Context, req *auth.Request, rsp *comm_def.CommonMsg) (err error) {
- glog.Info("Received AuthHandler.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 := gtoken.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 (h *AuthHandler) RemoveToken(ctx context.Context, reqToken string, rsp *comm_def.CommonMsg) error {
- glog.Info("Received AuthHandler.RemoveToken request, token:", reqToken)
- tokenResp := gtoken.GFToken.RemoveToken(reqToken)
- if err := gconv.Struct(tokenResp, rsp); err != nil {
- return err
- }
- return nil
- }
- func (h *AuthHandler) ValidToken(ctx context.Context, reqToken string, rsp *comm_def.CommonMsg) error {
- glog.Info("Received AuthHandler.ValidToken request, token:", reqToken)
- tokenResp := gtoken.GFToken.ValidToken(reqToken)
- //tokenData := gconv.Map(tokenResp.Data)
- //userInfo := tokenData["data"].(*request.UserInfo)
- //userService, err := service.NewUserService(ctx)
- //if err != nil {
- // return err
- //}
- ////数据权限
- //userInfo.DataScope, err = userService.GetDataScope(userInfo.Id)
- //if err != nil {
- // g.Log().Error(err)
- // return myerrors.TipsError("获取用户数据权限失败")
- //}
- if err := gconv.Struct(tokenResp, rsp); err != nil {
- return err
- }
- return nil
- }
|