-
Notifications
You must be signed in to change notification settings - Fork 1
/
user.go
84 lines (67 loc) · 1.78 KB
/
user.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
package dao
import (
"errors"
"github.com/Pivot-Studio/pivot-chat/model"
"github.com/sirupsen/logrus"
"golang.org/x/crypto/bcrypt"
)
func (rs *RdbService) CreateUser(user []*model.User) error {
return rs.tx.Create(&user).Error
}
func (rs *RdbService) UpdateUser(user *model.User) (err error) {
err = rs.tx.Save(&user).Error
if err != nil {
return err
}
return nil
}
func (rs *RdbService) GetUserbyId(user *model.User) (err error) {
err = rs.tx.Where("user_id = ?", user.UserId).First(&user).Error
if err != nil {
return err
}
return nil
}
func (rs *RdbService) GetUserbyUsername(user *model.User) (err error) {
err = rs.tx.Where("user_name = ?", user.UserName).First(&user).Error
if err != nil {
return err
}
return nil
}
func (rs *RdbService) ChangeUserPwd(email string, oldPwd string, newPwd string) (err error) {
user := model.User{}
err = rs.GetUserByEmail(&user, email)
if err != nil {
return err
}
if bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(oldPwd)) != nil {
return errors.New("the password is wrong please try again")
}
user.Password = newPwd
err = rs.UpdateUser(&user)
if err != nil {
return err
}
return nil
}
func (rs *RdbService) ChangeUserName(user *model.User, newUserName string) (err error) {
user.UserName = newUserName
err = rs.UpdateUser(user)
if err != nil {
return err
}
return nil
}
func (rs *RdbService) GetUserByEmail(user *model.User, Email string) error {
return rs.tx.Table("users").Where("email = ?", Email).First(user).Error
}
func (rs *RdbService) GetMyGroups(UserId int64) ([]model.Group, error) {
var groups []model.Group
err := rs.tx.Table("groups").Where("owner_id = ?", UserId).Find(&groups).Error
if err != nil {
logrus.Errorf("[dao.GetMyGroups] %+v", err)
return nil, err
}
return groups, nil
}