码农笔录博客源码
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

311 rindas
7.8 KiB

pirms 6 gadiem
package controllers
pirms 6 gadiem
import (
"beeblog/models"
pirms 3 gadiem
"beeblog/service"
"beeblog/utils"
pirms 6 gadiem
"crypto/md5"
"encoding/hex"
"fmt"
pirms 3 gadiem
beego "github.com/beego/beego/v2/server/web"
"github.com/mojocn/base64Captcha"
pirms 3 gadiem
"strconv"
"strings"
"time"
pirms 6 gadiem
)
pirms 6 gadiem
type UserController struct {
beego.Controller
}
func (u *UserController) LoginPage() {
pirms 6 gadiem
u.TplName = "login.html"
pirms 6 gadiem
}
pirms 6 gadiem
func (u *UserController) RegistPage() {
u.TplName = "regist.html"
}
pirms 6 gadiem
pirms 6 gadiem
func (this *UserController) UserInfo() {
pirms 5 gadiem
userService := service.UserService{}
blogService := service.BlogService{}
pirms 6 gadiem
idStr := this.Ctx.Input.Param(":id")
id, _ := strconv.ParseInt(idStr, 10, 64)
pirms 5 gadiem
user, err := userService.GetUser(id)
pirms 6 gadiem
if err != nil {
pirms 5 gadiem
this.Redirect("/404", 302)
pirms 6 gadiem
return
}
size := 15
num, _ := this.GetInt("num")
if num <= 0 {
num = 1
}
flag, _ := this.GetInt("flag")
pirms 5 gadiem
if page, err := blogService.MeBlogs(num, size, flag, id); err == nil {
pirms 6 gadiem
this.Data["Page"] = page
}
this.Data["User"] = user
pirms 6 gadiem
this.Data["UserId"] = this.GetSession("userid")
this.Data["HeadImg"] = this.GetSession("headimg")
this.Data["NickName"] = this.GetSession("nickname")
this.Data["IsLogin"] = this.GetSession("nickname") != nil
pirms 6 gadiem
this.Data["IsDDesc"] = true
pirms 6 gadiem
this.TplName = "user.html"
return
}
pirms 6 gadiem
func (this *UserController) PersonBlog() {
pirms 5 gadiem
userService := service.UserService{}
blogService := service.BlogService{}
pirms 6 gadiem
uid := this.GetSession("userid")
if uid == nil {
this.Redirect("/login", 302)
return
}
size := 10
pirms 6 gadiem
num, _ := this.GetInt("num")
if num <= 0 {
num = 1
}
flag, _ := this.GetInt("flag")
pirms 5 gadiem
page, err := blogService.MeBlogs(num, size, flag, uid.(int64))
pirms 6 gadiem
if err != nil {
pirms 5 gadiem
this.Redirect("/404", 302)
pirms 6 gadiem
return
pirms 6 gadiem
}
pirms 5 gadiem
user, uerr := userService.GetUser(uid.(int64))
pirms 6 gadiem
if uerr != nil {
pirms 5 gadiem
this.Redirect("/404", 302)
pirms 6 gadiem
return
pirms 6 gadiem
}
pirms 6 gadiem
this.Data["UserId"] = this.GetSession("userid")
this.Data["HeadImg"] = this.GetSession("headimg")
this.Data["NickName"] = this.GetSession("nickname")
this.Data["IsLogin"] = this.GetSession("nickname") != nil
pirms 6 gadiem
this.Data["Page"] = page
this.Data["IsMeBlog"] = true
this.Data["Flag"] = 0
this.Data["User"] = user
this.TplName = "ublogs.html"
}
pirms 6 gadiem
func (this *UserController) PersonInfo() {
pirms 5 gadiem
userService := service.UserService{}
pirms 6 gadiem
uid := this.GetSession("userid")
if uid == nil {
this.Redirect("/login", 302)
return
}
pirms 5 gadiem
user, err := userService.GetUser(uid.(int64))
pirms 6 gadiem
if err != nil {
pirms 5 gadiem
this.Redirect("/404", 302)
pirms 6 gadiem
return
}
this.Data["IsLogin"] = this.GetSession("nickname") != nil
pirms 6 gadiem
this.Data["UserId"] = this.GetSession("userid")
this.Data["HeadImg"] = this.GetSession("headimg")
this.Data["NickName"] = this.GetSession("nickname")
pirms 6 gadiem
this.Data["IsMeInfo"] = true
this.Data["User"] = user
this.TplName = "uinfo.html"
}
func (this *UserController) Edit() {
pirms 5 gadiem
userService := service.UserService{}
pirms 6 gadiem
uid := this.GetSession("userid")
if uid == nil {
models.ReurnError(401, "")
this.ServeJSON()
return
}
pirms 5 gadiem
user, err := userService.GetUser(uid.(int64))
pirms 6 gadiem
if err != nil {
this.Data["json"] = models.ReurnError(500, "")
this.ServeJSON()
return
}
user.NickName = this.GetString("nickName")
user.Email = this.GetString("email")
user.Mobile = this.GetString("mobile")
pirms 5 gadiem
if _, err := userService.EditUser(user); err != nil {
pirms 6 gadiem
this.Data["json"] = models.ReurnError(500, "")
pirms 6 gadiem
} else {
pirms 6 gadiem
this.Data["json"] = models.ReurnSuccess("")
}
this.ServeJSON()
return
pirms 6 gadiem
}
pirms 6 gadiem
func (this *UserController) Login() {
pirms 5 gadiem
userService := service.UserService{}
pirms 3 gadiem
verifycode := this.GetString("captcha")
if len(verifycode) == 0 {
this.Data["json"] = models.ReurnError(1, "验证码错误")
this.ServeJSON()
return
}
captchaid := this.GetString("captchaId")
if len(captchaid) == 0 {
this.Data["json"] = models.ReurnError(1, "验证码错误")
this.ServeJSON()
return
}
has := store.Has(captchaid)
if has == 0 {
this.Data["json"] = models.ReurnError(1, "验证码过期")
this.ServeJSON()
return
}
verify := store.Verify(captchaid, verifycode, true)
if !verify {
this.Data["json"] = models.ReurnError(1, "验证码错误")
this.ServeJSON()
return
}
pirms 6 gadiem
username := this.GetString("username")
userpwd := this.GetString("userpwd")
if username == "" {
pirms 6 gadiem
this.Data["json"] = models.ReurnError(1, "用户名为空")
pirms 6 gadiem
this.ServeJSON()
pirms 6 gadiem
return
pirms 6 gadiem
}
if len(username) < 4 {
pirms 6 gadiem
this.Data["json"] = models.ReurnError(1, "用户名最低4位")
pirms 6 gadiem
this.ServeJSON()
pirms 6 gadiem
return
pirms 6 gadiem
}
if userpwd == "" {
pirms 6 gadiem
this.Data["json"] = models.ReurnError(1, "密码为空")
pirms 6 gadiem
this.ServeJSON()
pirms 6 gadiem
return
pirms 6 gadiem
}
if len(userpwd) < 6 {
pirms 6 gadiem
this.Data["json"] = models.ReurnError(1, "密码最低6位")
pirms 6 gadiem
this.ServeJSON()
pirms 6 gadiem
return
pirms 6 gadiem
}
pirms 5 gadiem
user, error := userService.FindByUserName(username)
pirms 6 gadiem
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("")
pirms 6 gadiem
this.SetSession("userid", user.Id)
pirms 6 gadiem
this.SetSession("nickname", user.NickName)
pirms 6 gadiem
this.SetSession("headimg", user.Headimg)
pirms 6 gadiem
} else {
pirms 6 gadiem
this.Data["json"] = models.ReurnError(1, "用户名或密码错误")
pirms 6 gadiem
}
} else {
pirms 6 gadiem
this.Data["json"] = models.ReurnError(1, "用户名不存在")
pirms 6 gadiem
}
this.ServeJSON()
pirms 6 gadiem
return
pirms 6 gadiem
}
func (this *UserController) Regist() {
pirms 5 gadiem
userService := service.UserService{}
pirms 6 gadiem
username := this.GetString("username")
userpwd := this.GetString("userpwd")
pirms 3 gadiem
verifycode := this.GetString("captcha")
if len(verifycode) == 0 {
this.Data["json"] = models.ReurnError(1, "验证码错误")
this.ServeJSON()
return
}
captchaid := this.GetString("captchaId")
if len(captchaid) == 0 {
this.Data["json"] = models.ReurnError(1, "验证码错误")
this.ServeJSON()
return
}
has := store.Has(captchaid)
if has == 0 {
this.Data["json"] = models.ReurnError(1, "验证码过期")
this.ServeJSON()
return
}
verify := store.Verify(captchaid, verifycode, true)
if !verify {
this.Data["json"] = models.ReurnError(1, "验证码错误")
this.ServeJSON()
return
}
pirms 6 gadiem
username = strings.Replace(username, " ", "", -1)
userpwd = strings.Replace(userpwd, " ", "", -1)
if username == "" {
pirms 6 gadiem
this.Data["json"] = models.ReurnError(1, "用户名为空")
pirms 6 gadiem
this.ServeJSON()
pirms 6 gadiem
return
pirms 6 gadiem
}
if len(username) < 4 {
pirms 6 gadiem
this.Data["json"] = models.ReurnError(1, "用户名最低4位")
pirms 6 gadiem
this.ServeJSON()
pirms 6 gadiem
return
pirms 6 gadiem
}
if userpwd == "" {
pirms 6 gadiem
this.Data["json"] = models.ReurnError(1, "密码为空")
pirms 6 gadiem
this.ServeJSON()
pirms 6 gadiem
return
pirms 6 gadiem
}
if len(userpwd) < 6 {
pirms 6 gadiem
this.Data["json"] = models.ReurnError(1, "密码最低6位")
pirms 6 gadiem
this.ServeJSON()
pirms 6 gadiem
return
pirms 6 gadiem
}
pirms 5 gadiem
user, _ := userService.FindByUserName(username)
pirms 6 gadiem
if user != nil {
pirms 6 gadiem
this.Data["json"] = models.ReurnError(1, "用户已经存在")
pirms 6 gadiem
this.ServeJSON()
pirms 6 gadiem
return
pirms 6 gadiem
}
h := md5.New()
pirms 3 gadiem
h.Write([]byte(strconv.FormatInt(time.Now().Unix(), 10) + "aiprose:nelson"))
pirms 6 gadiem
salt := hex.EncodeToString(h.Sum(nil))
h = md5.New()
h.Write([]byte(userpwd + salt))
userpwd = hex.EncodeToString(h.Sum(nil))
pirms 6 gadiem
user = &models.User{UserName: username, NickName: username, UserPwd: userpwd, Salt: salt}
pirms 5 gadiem
user.Headimg = "https://oss.aiprose.com/aiprose/timg.jpg"
err := userService.SaveUser(user)
pirms 6 gadiem
if err == nil {
pirms 6 gadiem
this.Data["json"] = models.ReurnSuccess("")
pirms 6 gadiem
} else {
pirms 6 gadiem
this.Data["json"] = models.ReurnError(1, "注册失败")
pirms 6 gadiem
}
this.ServeJSON()
pirms 6 gadiem
return
pirms 6 gadiem
}
pirms 6 gadiem
func (this *UserController) Logout() {
this.DelSession("userid")
this.DelSession("nickname")
pirms 6 gadiem
this.Redirect("/", 302)
pirms 6 gadiem
return
pirms 6 gadiem
}
var store = utils.RedisStore{}
func (u *UserController) Captcha() {
type CaptchaResult struct {
Id string `json:"captchaId"`
Base64Blob string `json:"img"`
}
driver := base64Captcha.NewDriverMath(40, 150, 0, 0, nil, nil, nil)
//driver := base64Captcha.DefaultDriverDigit
c := base64Captcha.NewCaptcha(driver, store)
id, b64s, err := c.Generate()
if err != nil {
fmt.Println(err)
u.Data["json"] = models.ReurnError(500, "验证码获取异常")
u.ServeJSON()
return
}
detail := make(map[string]string, 2)
detail["captchaId"] = id
detail["img"] = b64s
u.Data["json"] = models.ReurnData("ok", detail)
u.ServeJSON()
return
}