package auth import ( "context" "muyu-apiserver/gateway/internal/svc" "muyu-apiserver/gateway/internal/types" jwtpkg "muyu-apiserver/pkg/jwt" "muyu-apiserver/rpc/system/pb" "github.com/zeromicro/go-zero/core/logx" ) type LoginLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewLoginLogic(ctx context.Context, svcCtx *svc.ServiceContext) *LoginLogic { return &LoginLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *LoginLogic) Login(req *types.LoginReq) (resp *types.LoginResp, err error) { rpcResp, err := l.svcCtx.SystemRpc.Login(l.ctx, &pb.LoginReq{ Username: req.Username, Password: req.Password, }) if err != nil { return nil, err } token, err := jwtpkg.GenerateToken( l.svcCtx.Config.Auth.AccessSecret, l.svcCtx.Config.Auth.AccessExpire, rpcResp.UserId, rpcResp.RoleKey, ) if err != nil { return nil, err } return &types.LoginResp{ Token: token, UserInfo: types.UserInfo{ UserId: rpcResp.UserId, Username: rpcResp.Username, RealName: rpcResp.RealName, Avatar: rpcResp.Avatar, RoleName: rpcResp.RoleName, }, }, nil }