码农笔录博客源码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

227 lines
5.1 KiB

пре 6 година
package controllers
пре 6 година
import (
"github.com/astaxie/beego"
"beeblog/service"
"beeblog/models"
"strings"
"crypto/md5"
"time"
"strconv"
"encoding/hex"
)
пре 6 година
type UserController struct {
beego.Controller
}
func (u *UserController) LoginPage() {
пре 6 година
u.TplName = "login.html"
пре 6 година
}
пре 6 година
func (u *UserController) RegistPage() {
u.TplName = "regist.html"
}
пре 6 година
пре 6 година
func (this *UserController) PersonBlog() {
uid := this.GetSession("userid")
if uid == nil {
this.Redirect("/login", 302)
return
}
size := 15
num, _ := this.GetInt("num")
if num <= 0 {
num = 1
}
flag, _ := this.GetInt("flag")
page, err := service.MeBlogs(num, size, flag, uid.(int64))
if err != nil {
if uid == nil {
this.Redirect("/500", 302)
return
}
}
user, uerr := service.GetUser(uid.(int64))
if uerr != nil {
if uid == nil {
this.Redirect("/500", 302)
return
}
}
this.Data["NickName"] = this.GetSession("nickname")
this.Data["IsLogin"] = this.GetSession("nickname") != nil
пре 6 година
this.Data["Page"] = page
пре 6 година
this.Data["IsMeBlog"] = true
this.Data["Flag"] = 0
this.Data["User"] = user
this.TplName = "ublogs.html"
}
func (this *UserController) PersonNote() {
uid := this.GetSession("userid")
if uid == nil {
this.Redirect("/login", 302)
return
}
notColl, err := service.GetNoteColl(uid.(int64))
if err == nil {
if len(notColl) > 0 {
for i := 0; i < len(notColl); i++ {
count, _ := service.CountNote(notColl[i].Id)
notColl[i].Count = count
}
}
} else {
notColl = make([]*models.NoteColl, 0)
}
if err != nil {
if uid == nil {
this.Redirect("/500", 302)
return
}
}
user, uerr := service.GetUser(uid.(int64))
if uerr != nil {
if uid == nil {
this.Redirect("/500", 302)
return
}
}
this.Data["NickName"] = this.GetSession("nickname")
this.Data["IsLogin"] = this.GetSession("nickname") != nil
пре 6 година
this.Data["Note"] = notColl
this.Data["IsMeNote"] = true
this.Data["User"] = user
this.TplName = "unote.html"
}
func (this *UserController) PersonLike() {
uid := this.GetSession("userid")
if uid == nil {
this.Redirect("/login", 302)
return
}
size := 15
num, _ := this.GetInt("num")
if num <= 0 {
num = 1
}
flag, _ := this.GetInt("flag")
page, err := service.MeBlogs(num, size, flag, uid.(int64))
if err != nil {
if uid == nil {
this.Redirect("/500", 302)
return
}
}
user, uerr := service.GetUser(uid.(int64))
if uerr != nil {
if uid == nil {
this.Redirect("/500", 302)
return
}
}
this.Data["Page"] = page
this.Data["IsMeBlog"] = true
пре 6 година
this.Data["Flag"] = 0
this.Data["User"] = user
this.TplName = "ublogs.html"
пре 6 година
}
пре 6 година
func (this *UserController) Login() {
username := this.GetString("username")
userpwd := this.GetString("userpwd")
if username == "" {
пре 6 година
this.Data["json"] = models.ReurnError(1, "用户名为空")
пре 6 година
this.ServeJSON()
пре 6 година
return
пре 6 година
}
if len(username) < 4 {
пре 6 година
this.Data["json"] = models.ReurnError(1, "用户名最低4位")
пре 6 година
this.ServeJSON()
пре 6 година
return
пре 6 година
}
if userpwd == "" {
пре 6 година
this.Data["json"] = models.ReurnError(1, "密码为空")
пре 6 година
this.ServeJSON()
пре 6 година
return
пре 6 година
}
if len(userpwd) < 6 {
пре 6 година
this.Data["json"] = models.ReurnError(1, "密码最低6位")
пре 6 година
this.ServeJSON()
пре 6 година
return
пре 6 година
}
user, error := service.FindByUserName(username)
if error == nil && user != nil {
h := md5.New()
h.Write([]byte(userpwd + user.Salt))
userpwd = hex.EncodeToString(h.Sum(nil))
if userpwd == user.UserPwd {
this.Data["json"] = models.ReurnSuccess("")
пре 6 година
this.SetSession("userid", user.Id)
пре 6 година
this.SetSession("nickname", user.NickName)
пре 6 година
} else {
пре 6 година
this.Data["json"] = models.ReurnError(1, "用户名或密码错误")
пре 6 година
}
} else {
пре 6 година
this.Data["json"] = models.ReurnError(1, "用户名不存在")
пре 6 година
}
this.ServeJSON()
пре 6 година
return
пре 6 година
}
func (this *UserController) Regist() {
username := this.GetString("username")
userpwd := this.GetString("userpwd")
username = strings.Replace(username, " ", "", -1)
userpwd = strings.Replace(userpwd, " ", "", -1)
if username == "" {
пре 6 година
this.Data["json"] = models.ReurnError(1, "用户名为空")
пре 6 година
this.ServeJSON()
пре 6 година
return
пре 6 година
}
if len(username) < 4 {
пре 6 година
this.Data["json"] = models.ReurnError(1, "用户名最低4位")
пре 6 година
this.ServeJSON()
пре 6 година
return
пре 6 година
}
if userpwd == "" {
пре 6 година
this.Data["json"] = models.ReurnError(1, "密码为空")
пре 6 година
this.ServeJSON()
пре 6 година
return
пре 6 година
}
if len(userpwd) < 6 {
пре 6 година
this.Data["json"] = models.ReurnError(1, "密码最低6位")
пре 6 година
this.ServeJSON()
пре 6 година
return
пре 6 година
}
user, _ := service.FindByUserName(username)
if user != nil {
пре 6 година
this.Data["json"] = models.ReurnError(1, "用户已经存在")
пре 6 година
this.ServeJSON()
пре 6 година
return
пре 6 година
}
h := md5.New()
h.Write([]byte(strconv.FormatInt(time.Now().Unix(), 10) + beego.AppConfig.String("host")))
salt := hex.EncodeToString(h.Sum(nil))
h = md5.New()
h.Write([]byte(userpwd + salt))
userpwd = hex.EncodeToString(h.Sum(nil))
пре 6 година
user = &models.User{UserName: username, NickName: username, UserPwd: userpwd, Salt: salt}
пре 6 година
err := service.SaveUser(user)
if err == nil {
пре 6 година
this.Data["json"] = models.ReurnSuccess("")
пре 6 година
} else {
пре 6 година
this.Data["json"] = models.ReurnError(1, "注册失败")
пре 6 година
}
this.ServeJSON()
пре 6 година
return
пре 6 година
}
пре 6 година
func (this *UserController) Logout() {
this.DelSession("userid")
this.DelSession("nickname")
пре 6 година
this.Redirect("/", 302)
пре 6 година
return
пре 6 година
}