diff --git a/.gitignore b/.gitignore index c3a88a4..305df31 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,7 @@ *.out *.DS_Store conf/database.conf - +data/* .idea lastupdate.tmp liteblog diff --git a/controllers/user.go b/controllers/user.go index 6812bbb..3bb22e7 100644 --- a/controllers/user.go +++ b/controllers/user.go @@ -1,9 +1,11 @@ package controllers import ( + "errors" "liteblog/models" "liteblog/syserrors" "log" + "strings" ) type UserController struct { @@ -16,9 +18,16 @@ func (c *UserController) Login() { c.TplName = "login.html" } +// 注册页面 +// @router /reg [get] +func (c *UserController) Reg() { + c.TplName = "reg.html" +} + +// 登陆接口 // @router /signin [post] func (c *UserController) SignIn() { - log.Print("======") + log.Print("正在进行登陆操作") // 判断邮箱不能为空 email := c.GetMustString("email", "邮箱不能为空") // 判断密码不能为空 @@ -35,4 +44,42 @@ func (c *UserController) SignIn() { // 将user保存到session c.SetSession(SESSION_USER_KEY, user) c.JSONOk("登陆成功", "/") +} + +// 注册接口 +// @router /signup [post] +func (c *UserController) SignUp() { + log.Print("正在进行注册操作") + // 判断昵称不能为空 + name := c.GetMustString("name", "昵称不能为空") + // 判断邮箱不能为空 + email := c.GetMustString("email", "邮箱不能为空") + // 判断密码不能为空 + password := c.GetMustString("password", "密码不能为空") + // 判断确认密码不能为空 + password_confirmation := c.GetMustString("password_confirmation", "确认密码不能为空") + + if strings.Compare(password, password_confirmation) != 0 { + c.Abort500(errors.New("密码与确认密码不一致")) + } + + if u, err := models.QueryUserByName(name); err == nil && u.ID != 0 { + c.Abort500(syserrors.NewError("用户昵称已经存在", err)) + } + + if u, err := models.QueryUserByEmail(email); err == nil && u.ID != 0 { + c.Abort500(syserrors.NewError("用户邮箱已经存在", err)) + } + + // 开始保存用户 + if err := models.SaveUser(&models.User{ + Name: name, + Email: email, + Pwd: password, + Avatar: "", + Role: 1, + }); err != nil { + c.Abort500(syserrors.NewError("用户注册失败", err)) + } + c.JSONOk("注册成功", "/login") } \ No newline at end of file diff --git a/data/session/3/8/382c6bfc04b072ea81ebb02d688f7197 b/data/session/3/8/382c6bfc04b072ea81ebb02d688f7197 deleted file mode 100644 index e22701e..0000000 Binary files a/data/session/3/8/382c6bfc04b072ea81ebb02d688f7197 and /dev/null differ diff --git a/data/session/9/d/9d124dd27eeae0373eb2117c80a29cb8 b/data/session/9/d/9d124dd27eeae0373eb2117c80a29cb8 deleted file mode 100644 index e22701e..0000000 Binary files a/data/session/9/d/9d124dd27eeae0373eb2117c80a29cb8 and /dev/null differ diff --git a/models/user.go b/models/user.go index f523631..0329de6 100644 --- a/models/user.go +++ b/models/user.go @@ -17,3 +17,17 @@ func QueryUserByEmailAndPassword(email, password string) (user User, err error) e := db.Model(&User{}).First(&user, "email = ? and pwd = ?", email, password).Error return user, e } + +func QueryUserByName(name string) (user User, err error) { + e := db.Model(&User{}).First(&user, "name = ?", name).Error + return user, e +} + +func QueryUserByEmail(email string) (user User, err error) { + e := db.Model(&User{}).First(&user, "email = ?", email).Error + return user, e +} + +func SaveUser(user *User) error { + return db.Create(user).Error +} \ No newline at end of file diff --git a/views/reg.html b/views/reg.html index aaba832..4ef3d48 100644 --- a/views/reg.html +++ b/views/reg.html @@ -39,7 +39,7 @@
-
@@ -57,5 +57,28 @@
{{ template "shares/footer.html". }} + \ No newline at end of file