12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package main
- import (
- "errors"
- "sparrow/pkg/models"
- )
- // ErrUserNameExists 用户名已经存在
- var ErrUserNameExists = errors.New("用户名已经存在")
- // ErrPhoneExists 手机号已经存在
- var ErrPhoneExists = errors.New("手机号已经被注册过")
- // ErrEmailExists Email地址已经被注册
- var ErrEmailExists = errors.New("Email地址已经被使用")
- // ErrNameOrPassError 登录失败
- var ErrNameOrPassError = errors.New("用户名或密码不正确")
- // Login 用户登录
- func (r *Registry) Login(args *models.LoginRequest, reply *models.User) error {
- db, err := getDB()
- if err != nil {
- return err
- }
- err = db.Where("(user_name = ? or phone = ? or email = ?) AND user_pass = ?",
- args.UserName, args.UserName, args.UserName, mdd(args.Password)).First(&reply).Error
- if err != nil {
- return err
- }
- if reply.ID == 0 {
- return ErrNameOrPassError
- }
- return nil
- }
- // Register 用户注册
- func (r *Registry) Register(args *models.User, reply *models.User) error {
- db, err := getDB()
- if err != nil {
- return err
- }
- err = checkUserExists(args.UserName, args.Phone, args.Email)
- if err != nil {
- return err
- }
- args.UserKey, err = r.keygen.GenRandomKey(args.ID)
- if err != nil {
- return err
- }
- args.UserPass = mdd(args.UserPass)
- err = db.Save(args).Error
- if err != nil {
- return err
- }
- return nil
- }
- //ModifyPass 修改密码
- func (r *Registry) ModifyPass(userid uint, pass string, reply *models.User) error {
- db, err := getDB()
- if err != nil {
- return err
- }
- pass = mdd(pass)
- err = db.Model(&reply).Where(userid).Update("user_pass", pass).Error
- if err != nil {
- return err
- }
- return nil
- }
- //SendVerifyCode 发送手机验证码
- //check username, phone or email exists
- func checkUserExists(name, phone, email string) error {
- db, err := getDB()
- if err != nil {
- return err
- }
- reply := &models.User{}
- db.Find(reply, map[string]interface{}{"user_name": name})
- if reply.ID != 0 {
- return ErrUserNameExists
- }
- db.First(reply, map[string]interface{}{"phone": phone})
- if reply.ID != 0 {
- return ErrPhoneExists
- }
- db.First(reply, map[string]interface{}{"email": email})
- if reply.ID != 0 {
- return ErrEmailExists
- }
- return nil
- }
|