/
regster.go
48 lines (38 loc) · 1.32 KB
/
regster.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package server
import (
"errors"
"github.com/isjyi/os/global"
"github.com/isjyi/os/models"
"github.com/isjyi/os/pkg/jwt"
"github.com/isjyi/os/tools"
"github.com/isjyi/os/tools/config"
"github.com/mojocn/base64Captcha"
"gorm.io/gorm"
)
// Register user register struct
type Register struct {
Phone string `json:"phone" label:"手机号" binding:"required,len=11,phone"` // 手机号
Password string `json:"passwrod" label:"密码" binding:"required,min=8,max=20"` // 密码
NickName string `json:"nickname" binding:"omitempty,min=5,max=12"` // 用户昵称
VCode
} //@name Register
var store = base64Captcha.DefaultMemStore
func (reg *Register) Register() (err error) {
var user models.SysUser
if config.OSConfig.Application.Mode != "dev" {
if !store.Verify(reg.UUID, reg.Code, true) {
return jwt.ErrInvalidVerificationode
}
}
if !errors.Is(global.Eloquent.Where("phone = ?", reg.Phone).First(&user).Error, gorm.ErrRecordNotFound) { // 判断用户名是否注册
return errors.New("用户名已注册")
}
if p, err := tools.GenerateFromPassword(reg.Password, config.OSConfig.Application.EncryptionCost); err != nil {
return err
} else {
reg.Password = p
}
user = models.SysUser{Phone: reg.Phone, NickName: reg.NickName, Password: reg.Password}
err = global.Eloquent.Create(&user).Error
return
}