feat: add SMS verification registration with UniSMS provider
- Add phone field to user model with index and helper methods - Implement SMS provider interface with UniSMS (合一短信) implementation - Add SMS verification code sending endpoint with rate limiting (1/60s) - Support SMS registration in Register() (mutually exclusive with email) - Add SMS configuration to admin settings (provider, keys, signature, template) - Display phone number in admin user list contact column - Add i18n translations for all SMS-related messages (zh-CN, en, zh-TW) - Add Claude Code skills: sync-upstream, migrate-server - Update CLAUDE.md with git conventions and deployment guide Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
22
common/sms_unisms.go
Normal file
22
common/sms_unisms.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package common
|
||||
|
||||
import (
|
||||
unisms "github.com/apistd/uni-go-sdk/sms"
|
||||
)
|
||||
|
||||
type UniSmsProvider struct{}
|
||||
|
||||
func (p *UniSmsProvider) SendCode(phone string, code string) error {
|
||||
client := unisms.NewClient(SMSAccessKeyId, SMSAccessKeySecret)
|
||||
message := unisms.BuildMessage()
|
||||
message.SetTo(phone)
|
||||
message.SetSignature(SMSSignName)
|
||||
message.SetTemplateId(SMSTemplateCode)
|
||||
message.SetTemplateData(map[string]string{"code": code})
|
||||
_, err := client.Send(message)
|
||||
return err
|
||||
}
|
||||
|
||||
func init() {
|
||||
RegisterSmsProvider("unisms", &UniSmsProvider{})
|
||||
}
|
||||
Reference in New Issue
Block a user