提取接口添加IP与实名验证; SendSms 添加调试模式验证码发送跳过逻辑

This commit is contained in:
2025-04-21 19:01:23 +08:00
parent 806dca928f
commit 089e2b7590
4 changed files with 36 additions and 28 deletions

View File

@@ -3,14 +3,14 @@
核心流程: 核心流程:
- [x] 注册与登录 - [x] 注册与登录
- [ ] 对接接口 - [x] 对接接口
- [ ] 人机风险分级验证 - [ ] 人机风险分级验证
- [ ] jwt 签发 - [ ] jwt 签发
- [x] 鉴权 - [x] 鉴权
- [x] 实名认证 - [x] 实名认证
- [x] 对接接口 - [x] 对接接口
- [x] 充值或购买 - [x] 充值或购买
- [ ] 对接接口 - [x] 对接接口
- [ ] 提取记录 - [ ] 提取记录
- [x] 提取 IP - [x] 提取 IP
- [ ] 长效提取 - [ ] 长效提取
@@ -24,14 +24,8 @@
错误处理类型转换失败问题 错误处理类型转换失败问题
transition 服务,查询后立即完成,提供是否访问接口参数,统一主动与回调调用
callback 结果直接由 api 端提供,不通过前端转发 callback 结果直接由 api 端提供,不通过前端转发
统一套餐创建逻辑
删除账单的状态字段,状态从关联表中计算获得
统一简化包导入别名 统一简化包导入别名
更新数据库填充 更新数据库填充

View File

@@ -28,6 +28,17 @@ func CreateChannel(c *fiber.Ctx) error {
if err != nil { if err != nil {
return err return err
} }
// 获取用户信息
user, err := q.User.
Where(q.User.ID.Eq(authContext.Payload.Id)).
Take()
if err != nil {
return err
}
if user.IDToken == "" {
return fiber.NewError(fiber.StatusForbidden, "账号未实名")
}
count, err := q.Whitelist.Where( count, err := q.Whitelist.Where(
q.Whitelist.UserID.Eq(authContext.Payload.Id), q.Whitelist.UserID.Eq(authContext.Payload.Id),
q.Whitelist.Host.Eq(c.IP()), q.Whitelist.Host.Eq(c.IP()),
@@ -36,7 +47,7 @@ func CreateChannel(c *fiber.Ctx) error {
return err return err
} }
if count == 0 { if count == 0 {
return fiber.NewError(fiber.StatusForbidden, fmt.Sprintf("forbidden %s", c.IP())) return fiber.NewError(fiber.StatusForbidden, fmt.Sprintf("非白名单IP %s", c.IP()))
} }
req := new(CreateChannelReq) req := new(CreateChannelReq)

View File

@@ -78,25 +78,27 @@ func (s *verifierService) SendSms(ctx context.Context, phone string, purpose Ver
code := rand.Intn(900000) + 100000 // 6-digit code between 100000-999999 code := rand.Intn(900000) + 100000 // 6-digit code between 100000-999999
// 发送短信验证码 // 发送短信验证码
params, err := json.Marshal(map[string]string{ if env.DebugExternalChange {
"code": strconv.Itoa(code), params, err := json.Marshal(map[string]string{
}) "code": strconv.Itoa(code),
if err != nil { })
return err if err != nil {
} return err
response, err := g.Aliyun.Sms.SendSms(&client.SendSmsRequest{ }
PhoneNumbers: &phone, response, err := g.Aliyun.Sms.SendSms(&client.SendSmsRequest{
SignName: &env.AliyunSmsSignature, PhoneNumbers: &phone,
TemplateCode: &env.AliyunSmsTemplateLogin, SignName: &env.AliyunSmsSignature,
TemplateParam: u.P(string(params)), TemplateCode: &env.AliyunSmsTemplateLogin,
}) TemplateParam: u.P(string(params)),
if err != nil { })
_ = rds.Client.Del(ctx, key, keyLock).Err() if err != nil {
return err _ = rds.Client.Del(ctx, key, keyLock).Err()
} return err
if response.Body.Code == nil || *response.Body.Code != "OK" { }
_ = rds.Client.Del(ctx, key, keyLock).Err() if response.Body.Code == nil || *response.Body.Code != "OK" {
return VerifierServiceError("验证码发送失败") _ = rds.Client.Del(ctx, key, keyLock).Err()
return VerifierServiceError("验证码发送失败")
}
} }
// 设置验证码 // 设置验证码

View File

@@ -46,6 +46,7 @@ func (s *Server) Run() error {
// config // config
s.fiber = fiber.New(fiber.Config{ s.fiber = fiber.New(fiber.Config{
ProxyHeader: fiber.HeaderXForwardedFor,
ErrorHandler: ErrorHandler, ErrorHandler: ErrorHandler,
}) })