Add 添加一个用户.
()
| 157 | |
| 158 | // Add 添加一个用户. |
| 159 | func (m *Member) Add() error { |
| 160 | o := orm.NewOrm() |
| 161 | |
| 162 | if ok, err := regexp.MatchString(conf.RegexpAccount, m.Account); m.Account == "" || !ok || err != nil { |
| 163 | return errors.New("用户名只能由英文字母数字组成,且在3-50个字符") |
| 164 | } |
| 165 | if m.Email == "" { |
| 166 | return errors.New("邮箱不能为空") |
| 167 | } |
| 168 | if ok, err := regexp.MatchString(conf.RegexpEmail, m.Email); !ok || err != nil || m.Email == "" { |
| 169 | return errors.New("邮箱格式不正确") |
| 170 | } |
| 171 | |
| 172 | if l := strings.Count(m.Password, ""); l < 7 || l >= 50 { |
| 173 | return errors.New("密码不能为空且必须在6-50个字符之间") |
| 174 | } |
| 175 | |
| 176 | cond := orm.NewCondition().Or("email", m.Email).Or("nickname", m.Nickname).Or("account", m.Account) |
| 177 | var one Member |
| 178 | if o.QueryTable(m.TableNameWithPrefix()).SetCond(cond).One(&one, "member_id", "nickname", "account", "email"); one.MemberId > 0 { |
| 179 | if one.Nickname == m.Nickname { |
| 180 | return errors.New("昵称已存在,请更换昵称") |
| 181 | } |
| 182 | if one.Email == m.Email { |
| 183 | return errors.New("邮箱已被注册,请更换邮箱") |
| 184 | } |
| 185 | if one.Account == m.Account { |
| 186 | return errors.New("用户名已存在,请更换用户名") |
| 187 | } |
| 188 | } |
| 189 | |
| 190 | // 这里必需设置为读者,避免采坑:普通用户注册的时候注册成了管理员... |
| 191 | if m.Account == "admin" { |
| 192 | m.Role = conf.MemberSuperRole |
| 193 | } else { |
| 194 | m.Role = conf.MemberGeneralRole |
| 195 | } |
| 196 | |
| 197 | hash, err := utils.PasswordHash(m.Password) |
| 198 | |
| 199 | if err != nil { |
| 200 | return err |
| 201 | } |
| 202 | |
| 203 | m.Password = hash |
| 204 | if m.AuthMethod == "" { |
| 205 | m.AuthMethod = "local" |
| 206 | } |
| 207 | _, err = o.Insert(m) |
| 208 | |
| 209 | if err != nil { |
| 210 | return err |
| 211 | } |
| 212 | m.ResolveRoleName() |
| 213 | return nil |
| 214 | } |
| 215 | |
| 216 | // Update 更新用户信息. |
no test coverage detected