-
Notifications
You must be signed in to change notification settings - Fork 0
/
register.go
123 lines (113 loc) · 3.2 KB
/
register.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package controllers
import (
"encoding/json"
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
"golang.org/x/crypto/bcrypt"
"library/common"
"models"
"regexp"
"strings"
"time"
)
type RegisterController struct {
BaseController
}
//邮箱正则
func IsEmail(str ...string) bool {
var b bool
for _, s := range str {
b, _ = regexp.MatchString("^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$", s)
if false == b {
return b
}
}
return b
}
func (c *RegisterController) Post() {
beego.Info(string(c.Ctx.Input.RequestBody))
registerData := map[string]interface{}{"user_password": "", "user_name": "", "Role": 1}
err := json.Unmarshal(c.Ctx.Input.RequestBody, ®isterData)
if err != nil {
c.SetJson(1, nil, "数据格式错误")
return
}
registerUsername := common.GetString(registerData["register_username"])
registerRealname := common.GetString(registerData["register_realname"])
registerEmail := common.GetString(registerData["register_email"])
registerRole := common.GetInt(registerData["Role"])
iseamil := IsEmail(registerEmail)
if iseamil == false {
c.SetJson(1, nil, "邮箱输入有误")
return
}
var user models.User
o := orm.NewOrm()
//先判断存在用户否
err = o.Raw("SELECT * FROM `user` WHERE username= ?", registerUsername).QueryRow(&user)
beego.Info(user)
if err == nil {
userId, _ := c.GetInt("id")
if userId == 0 {
c.SetJson(1, nil, "用户已存在,请更换账户名")
return
}
if userId != user.Id {
c.SetJson(1, nil, "用户不存在")
return
}
user.Role = int16(registerRole)
user.Email = registerEmail
user.Realname = registerRealname
if user.Role == 20 {
o.Raw("DELETE FROM `group` WHERE `user_id` = ? ", user.Id).Exec()
pro_ids := common.GetString(registerData["pro_ids"])
pro_idArr := strings.Split(pro_ids, ",")
for _, pro_id := range pro_idArr {
o.Raw("INSERT INTO `group`(`project_id`, `user_id`) VALUES (?, ?)", pro_id, user.Id).Exec()
}
}
err := models.UpdateUserById(&user)
if err != nil {
c.SetJson(1, nil, "数据库存储错误")
return
} else {
c.SetJson(0, nil, "success")
return
}
} else { //不存在,存库
var newuser models.User
userAuth := common.Md5String(registerUsername + common.GetString(time.Now().Unix()))
password := []byte("123456")
hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)
if err != nil {
panic(err)
}
newuser.Username = registerUsername
newuser.PasswordHash = string(hashedPassword)
newuser.IsEmailVerified = 1
newuser.Avatar = "default.jpg"
newuser.Role = int16(registerRole)
newuser.Status = 10
newuser.CreatedAt = time.Now()
newuser.UpdatedAt = time.Now()
newuser.AuthKey = userAuth
newuser.Email = registerEmail
newuser.Realname = registerRealname
newid, err := models.AddUser(&newuser)
if newuser.Role == 20 {
pro_ids := common.GetString(registerData["pro_ids"])
pro_idArr := strings.Split(pro_ids, ",")
for _, pro_id := range pro_idArr {
o.Raw("INSERT INTO `group`(`project_id`, `user_id`) VALUES (?, ?)", pro_id, newid).Exec()
}
}
if err != nil {
c.SetJson(1, nil, "数据库存储错误")
return
} else {
c.SetJson(0, nil, "success")
return
}
}
}