123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package model
- import (
- "context"
- "errors"
- "fmt"
- "icloudapp.cn/tools/entity"
- _ "icloudapp.cn/tools/repository/mysql"
- "icloudapp.cn/tools/service"
- "icloudapp.cn/tools/util"
- "time"
- )
- type User struct {
- ctx context.Context
- }
- func NewUser(ctx context.Context) *User {
- return &User{ctx}
- }
- // Login 用户名 密码登录
- func (u *User) Login(username, password string) (entity.Login, error) {
- var login entity.Login
- sUser := service.NewUser(u.ctx)
- userInfo, err := sUser.UserInfoByUsername(username)
- if err != nil {
- return login, err
- }
- signedPassword := util.Sign(password, userInfo.Salt)
- //密码对不上就返回空login
- if userInfo.Password != signedPassword {
- return login, errors.New("密码不匹配")
- }
- /*encodeStr := url.HttpBuildQuery(map[string]string{
- "uid": strconv.FormatInt(userInfo.Uid, 10),
- "username": userInfo.Username,
- })
- token, _ := util.EncryptWidthTime(encodeStr, setting.Conf.EncryptConfig.ExpireAt, setting.Conf.EncryptConfig.Key)
- */
- token, _ := service.GenJWTToken(userInfo.Uid, userInfo.Username)
- login.Uid = userInfo.Uid
- login.Username = userInfo.Username
- login.Status = userInfo.Status
- login.Avatar = userInfo.Avatar
- login.Type = 1
- login.Token = token
- login.Expire = time.Now().Add(service.JWTExpireDuration()).Unix()
- login.ExpiresAt = time.Unix(login.Expire, 0)
- return login, nil
- }
- // Register 通过用户名、密码或邮箱注册
- func (u *User) Register(username, password, email string) (entity.UserInfo, error) {
- var register entity.User
- register.Username = username
- register.Salt = util.RandomNumberStr(4)
- register.Password = util.Sign(password, register.Salt)
- if email == "" {
- email = fmt.Sprintf("%s@travelzs.com", username)
- }
- register.Email = email
- register.Status = 1
- register.CreateAt = time.Now()
- register.UpdateAt = time.Now()
- sUser := service.NewUser(u.ctx)
- return sUser.Register(register)
- }
- func (u *User) Info(uid int64) (entity.UserInfo, error) {
- sUser := service.NewUser(u.ctx)
- return sUser.UserInfoByID(uid)
- }
- // ChangePassword 通过uid修改密码
- func (u *User) ChangePassword(uid int64, password string) (entity.UserInfo, error) {
- sUser := service.NewUser(u.ctx)
- salt := util.RandomNumberStr(4)
- password = util.Sign(password, salt)
- return sUser.ChangePassword(uid, password, salt)
- }
- // ChangeEmail 更新邮件地址
- func (u *User) ChangeEmail(uid int64, email string) (entity.UserInfo, error) {
- sUser := service.NewUser(u.ctx)
- return sUser.ChangeEmail(uid, email)
- }
|