From 5f31142433f250d7bca3910a2ccfde0204a8cbbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=91=E8=8B=8F=E5=9D=9B=E9=9B=AA?= <985609191@qq.com> Date: Mon, 11 Mar 2024 14:18:51 +0800 Subject: [PATCH] =?UTF-8?q?fix():=20=E4=BF=AE=E6=94=B9=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=90=8D=E4=B8=BA=E4=B8=8D=E8=83=BD=E9=87=8D=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 验证用户名重复情况下只能登录查询到的第一个用户,现在添加用户名校验 --- models/errors.go | 4 ++- models/member.go | 65 +++++++++++++++++++++++++++--------------------- 2 files changed, 40 insertions(+), 29 deletions(-) diff --git a/models/errors.go b/models/errors.go index 41038ac..fe40e08 100644 --- a/models/errors.go +++ b/models/errors.go @@ -3,9 +3,11 @@ package models import "errors" -var( +var ( // ErrMemberNoExist 用户不存在. ErrMemberNoExist = errors.New("用户不存在") + // ErrMemberNoExist 用户不存在. + ErrMemberIsExist = errors.New("用户已经存在") // ErrorMemberPasswordError 密码错误. ErrorMemberPasswordError = errors.New("用户密码错误") // ErrServerAlreadyExist 指定的服务已存在. diff --git a/models/member.go b/models/member.go index 95b49df..610e995 100644 --- a/models/member.go +++ b/models/member.go @@ -9,22 +9,24 @@ import ( // Member 会员信息. type Member struct { - MemberId int `orm:"pk;auto;unique;column(member_id)"` - Account string `orm:"size(100);unique;column(account)"` - Password string `orm:"size(1000);column(password)"` - Email string `orm:"size(255);column(email);null;default(null)"` - Phone string `orm:"size(255);column(phone);null;default(null)"` - Avatar string `orm:"size(1000);column(avatar)"` - Role int `orm:"column(role);type(int);default(1)"` //用户角色:0 管理员/1 普通用户 - Status int `orm:"column(status);type(int);default(0)"` //用户状态:0 正常/1 禁用 - CreateTime time.Time `orm:"type(datetime);column(create_time);auto_now_add"` - CreateAt int `orm:"type(int);column(create_at)"` - LastLoginTime time.Time `orm:"type(datetime);column(last_login_time);null"` + MemberId int `orm:"pk;auto;unique;column(member_id)"` + Account string `orm:"size(100);unique;column(account)"` + Password string `orm:"size(1000);column(password)"` + Email string `orm:"size(255);column(email);null;default(null)"` + Phone string `orm:"size(255);column(phone);null;default(null)"` + Avatar string `orm:"size(1000);column(avatar)"` + Role int `orm:"column(role);type(int);default(1)"` //用户角色:0 管理员/1 普通用户 + Status int `orm:"column(status);type(int);default(0)"` //用户状态:0 正常/1 禁用 + CreateTime time.Time `orm:"type(datetime);column(create_time);auto_now_add"` + CreateAt int `orm:"type(int);column(create_at)"` + LastLoginTime time.Time `orm:"type(datetime);column(last_login_time);null"` } + // TableName 获取对应数据库表名. func (m *Member) TableName() string { return "members" } + // TableEngine 获取数据使用的引擎. func (m *Member) TableEngine() string { return "INNODB" @@ -36,7 +38,7 @@ func NewMember() *Member { } // Find 根据用户ID查找用户. -func (m *Member) Find() (error) { +func (m *Member) Find() error { o := orm.NewOrm() err := o.Read(m) @@ -49,52 +51,59 @@ func (m *Member) Find() (error) { } // Login 用户登录. -func (m *Member) Login(account string,password string) (*Member,error) { +func (m *Member) Login(account string, password string) (*Member, error) { o := orm.NewOrm() member := &Member{} - err := o.QueryTable(m.TableName()).Filter("account",account).Filter("status",0).One(member); + err := o.QueryTable(m.TableName()).Filter("account", account).Filter("status", 0).One(member) if err != nil { - return member,ErrMemberNoExist + return member, ErrMemberNoExist } - ok,err := passwords.PasswordVerify(member.Password,password) ; + ok, err := passwords.PasswordVerify(member.Password, password) if ok && err == nil { - return member,nil + return member, nil } - return member,ErrorMemberPasswordError + return member, ErrorMemberPasswordError } - // Add 添加一个用户. -func (member *Member) Add () (error) { +func (member *Member) Add() error { o := orm.NewOrm() - hash ,err := passwords.PasswordHash(member.Password); + m := &Member{} + + err := o.QueryTable(member.TableName()).Filter("account", member.Account).One(m) + + if err == nil { + return ErrMemberIsExist + } + + hash, err := passwords.PasswordHash(member.Password) - if err != nil { + if err != nil { return err } member.Password = hash - _,err = o.Insert(member) + _, err = o.Insert(member) if err != nil { return err } - return nil + return nil } // Update 更新用户信息. -func (m *Member) Update(cols... string) (error) { +func (m *Member) Update(cols ...string) error { o := orm.NewOrm() - if _,err := o.Update(m,cols...);err != nil { + if _, err := o.Update(m, cols...); err != nil { return err } return nil @@ -104,8 +113,8 @@ func (m *Member) Update(cols... string) (error) { func (m *Member) Delete() error { o := orm.NewOrm() - if _,err := o.Delete(m);err != nil { + if _, err := o.Delete(m); err != nil { return err } return nil -} \ No newline at end of file +}