|
|
@@ -10,6 +10,8 @@ import (
|
|
10
|
10
|
"math/rand"
|
|
11
|
11
|
"strconv"
|
|
12
|
12
|
"time"
|
|
|
13
|
+ "strings"
|
|
|
14
|
+ "fmt"
|
|
13
|
15
|
)
|
|
14
|
16
|
|
|
15
|
17
|
type UserService struct {
|
|
|
@@ -150,6 +152,8 @@ func (us *UserService) CheckUserEnable(u *model.User) bool {
|
|
150
|
152
|
|
|
151
|
153
|
// Create 创建
|
|
152
|
154
|
func (us *UserService) Create(u *model.User) error {
|
|
|
155
|
+ // The initial username should be formatted, and the username should be unique
|
|
|
156
|
+ u.Username = us.formatUsername(u.Username)
|
|
153
|
157
|
u.Password = us.EncryptPassword(u.Password)
|
|
154
|
158
|
res := global.DB.Create(u).Error
|
|
155
|
159
|
return res
|
|
|
@@ -282,7 +286,17 @@ func (us *UserService) RegisterByOauth(oauthUser *model.OauthUser , op string) *
|
|
282
|
286
|
}
|
|
283
|
287
|
//check if this email has been registered
|
|
284
|
288
|
email := oauthUser.Email
|
|
285
|
|
- oauthType := AllService.OauthService.GetTypeByOp(op)
|
|
|
289
|
+ err, oauthType := AllService.OauthService.GetTypeByOp(op)
|
|
|
290
|
+ if err != nil {
|
|
|
291
|
+ return nil
|
|
|
292
|
+ }
|
|
|
293
|
+ // if email is empty, use username and op as email
|
|
|
294
|
+ if email == "" {
|
|
|
295
|
+ email = oauthUser.Username + "@" + op
|
|
|
296
|
+ }
|
|
|
297
|
+ email = strings.ToLower(email)
|
|
|
298
|
+ // update email to oauthUser, in case it contain upper case
|
|
|
299
|
+ oauthUser.Email = email
|
|
286
|
300
|
user := us.InfoByEmail(email)
|
|
287
|
301
|
tx := global.DB.Begin()
|
|
288
|
302
|
if user.Id != 0 {
|
|
|
@@ -290,8 +304,10 @@ func (us *UserService) RegisterByOauth(oauthUser *model.OauthUser , op string) *
|
|
290
|
304
|
} else {
|
|
291
|
305
|
ut = &model.UserThird{}
|
|
292
|
306
|
ut.FromOauthUser(0, oauthUser, oauthType, op)
|
|
293
|
|
- usernameUnique := us.GenerateUsernameByOauth(oauthUser.Username)
|
|
294
|
|
- user := &model.User{
|
|
|
307
|
+ // The initial username should be formatted
|
|
|
308
|
+ username := us.formatUsername(oauthUser.Username)
|
|
|
309
|
+ usernameUnique := us.GenerateUsernameByOauth(username)
|
|
|
310
|
+ user = &model.User{
|
|
295
|
311
|
Username: usernameUnique,
|
|
296
|
312
|
GroupId: 1,
|
|
297
|
313
|
}
|
|
|
@@ -361,6 +377,7 @@ func (us *UserService) IsPasswordEmptyByUser(u *model.User) bool {
|
|
361
|
377
|
return us.IsPasswordEmptyById(u.Id)
|
|
362
|
378
|
}
|
|
363
|
379
|
|
|
|
380
|
+// Register 注册
|
|
364
|
381
|
func (us *UserService) Register(username string, password string) *model.User {
|
|
365
|
382
|
u := &model.User{
|
|
366
|
383
|
Username: username,
|
|
|
@@ -394,3 +411,10 @@ func (us *UserService) TokenInfoById(id uint) *model.UserToken {
|
|
394
|
411
|
func (us *UserService) DeleteToken(l *model.UserToken) error {
|
|
395
|
412
|
return global.DB.Delete(l).Error
|
|
396
|
413
|
}
|
|
|
414
|
+
|
|
|
415
|
+// Helper functions, used for formatting username
|
|
|
416
|
+func (us *UserService) formatUsername(username string) string {
|
|
|
417
|
+ username = strings.ReplaceAll(username, " ", "")
|
|
|
418
|
+ username = strings.ToLower(username)
|
|
|
419
|
+ return username
|
|
|
420
|
+}
|