mirror of
https://github.com/bufanyun/hotgo.git
synced 2025-09-17 16:56:39 +08:00
102 lines
2.5 KiB
Go
102 lines
2.5 KiB
Go
// Package common
|
|
// @Link https://github.com/bufanyun/hotgo
|
|
// @Copyright Copyright (c) 2022 HotGo CLI
|
|
// @Author Ms <133814250@qq.com>
|
|
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
//
|
|
package common
|
|
|
|
import (
|
|
"context"
|
|
"github.com/gogf/gf/v2/crypto/gmd5"
|
|
"github.com/gogf/gf/v2/errors/gerror"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
"github.com/gogf/gf/v2/net/ghttp"
|
|
"github.com/gogf/gf/v2/util/gconv"
|
|
"hotgo/api/backend/common"
|
|
"hotgo/internal/consts"
|
|
"hotgo/internal/library/cache"
|
|
"hotgo/internal/library/captcha"
|
|
"hotgo/internal/library/jwt"
|
|
"hotgo/internal/model/input/adminin"
|
|
"hotgo/internal/service"
|
|
)
|
|
|
|
var Site = cSite{}
|
|
|
|
type cSite struct{}
|
|
|
|
// Ping ping
|
|
func (c *cSite) Ping(ctx context.Context, req *common.SitePingReq) (res *common.SitePingRes, err error) {
|
|
return
|
|
}
|
|
|
|
// Config 获取配置
|
|
func (c *cSite) Config(ctx context.Context, req *common.SiteConfigReq) (res *common.SiteConfigRes, err error) {
|
|
|
|
wsAddr, _ := g.Cfg().Get(ctx, "hotgo.wsAddr", "ws://127.0.0.1:8000/ws")
|
|
g.Log().Warningf(ctx, "wsAddr:%+v", wsAddr.String())
|
|
res = &common.SiteConfigRes{
|
|
Version: consts.VersionApp,
|
|
WsAddr: wsAddr.String(),
|
|
}
|
|
return
|
|
}
|
|
|
|
// Captcha 登录验证码
|
|
func (c *cSite) Captcha(ctx context.Context, req *common.LoginCaptchaReq) (res *common.LoginCaptchaRes, err error) {
|
|
|
|
// 获取生成的验证码图片
|
|
Cid, Base64 := captcha.GetVerifyImgString(ctx)
|
|
res = &common.LoginCaptchaRes{Cid: Cid, Base64: Base64}
|
|
|
|
return
|
|
}
|
|
|
|
// Login 提交登录
|
|
func (c *cSite) Login(ctx context.Context, req *common.LoginReq) (res *common.LoginRes, err error) {
|
|
|
|
//// 校验 验证码
|
|
//if !captcha.VerifyString(req.Cid, req.Code) {
|
|
// err = gerror.New("验证码错误")
|
|
// return
|
|
//}
|
|
//
|
|
var in adminin.MemberLoginInp
|
|
if err = gconv.Scan(req, &in); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
model, err := service.AdminMember().Login(ctx, in)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if err = gconv.Scan(model, &res); err != nil {
|
|
return nil, err
|
|
}
|
|
return
|
|
}
|
|
|
|
// Logout 注销登录
|
|
func (c *cSite) Logout(ctx context.Context, req *common.LoginLogoutReq) (res *common.LoginLogoutRes, err error) {
|
|
|
|
var authorization = jwt.GetAuthorization(ghttp.RequestFromCtx(ctx))
|
|
|
|
// 获取jwtToken
|
|
jwtToken := consts.RedisJwtToken + gmd5.MustEncryptString(authorization)
|
|
if len(jwtToken) == 0 {
|
|
err = gerror.New("当前用户未登录!")
|
|
return res, err
|
|
}
|
|
|
|
// 删除登录token
|
|
ca := cache.New()
|
|
_, err = ca.Remove(ctx, jwtToken)
|
|
if err != nil {
|
|
return res, err
|
|
}
|
|
|
|
return
|
|
}
|