package controllers
import (
"github.com/astaxie/beego"
"beeblog/service"
"beeblog/models"
"strings"
"crypto/md5"
"time"
"strconv"
"encoding/hex"
"fmt"
)
type UserController struct {
beego . Controller
}
func ( u * UserController ) LoginPage ( ) {
u . TplName = "login.html"
}
func ( u * UserController ) RegistPage ( ) {
u . TplName = "regist.html"
}
func ( u * UserController ) PersonBlog ( ) {
u . TplName = "ublogs.html"
}
func ( this * UserController ) Login ( ) {
username := this . GetString ( "username" )
userpwd := this . GetString ( "userpwd" )
if username == "" {
this . Data [ "json" ] = models . ReurnError ( 1 , "用户名为空" )
this . ServeJSON ( )
return
}
if len ( username ) < 4 {
this . Data [ "json" ] = models . ReurnError ( 1 , "用户名最低4位" )
this . ServeJSON ( )
return
}
if userpwd == "" {
this . Data [ "json" ] = models . ReurnError ( 1 , "密码为空" )
this . ServeJSON ( )
return
}
if len ( userpwd ) < 6 {
this . Data [ "json" ] = models . ReurnError ( 1 , "密码最低6位" )
this . ServeJSON ( )
return
}
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 ( "" )
this . SetSession ( "userid" , user . Id )
this . SetSession ( "nickname" , user . NickName )
fmt . Println ( this . CruSession )
} else {
this . Data [ "json" ] = models . ReurnError ( 1 , "用户名或密码错误" )
}
} else {
this . Data [ "json" ] = models . ReurnError ( 1 , "用户名不存在" )
}
this . ServeJSON ( )
return
}
func ( this * UserController ) Regist ( ) {
username := this . GetString ( "username" )
userpwd := this . GetString ( "userpwd" )
username = strings . Replace ( username , " " , "" , - 1 )
userpwd = strings . Replace ( userpwd , " " , "" , - 1 )
if username == "" {
this . Data [ "json" ] = models . ReurnError ( 1 , "用户名为空" )
this . ServeJSON ( )
return
}
if len ( username ) < 4 {
this . Data [ "json" ] = models . ReurnError ( 1 , "用户名最低4位" )
this . ServeJSON ( )
return
}
if userpwd == "" {
this . Data [ "json" ] = models . ReurnError ( 1 , "密码为空" )
this . ServeJSON ( )
return
}
if len ( userpwd ) < 6 {
this . Data [ "json" ] = models . ReurnError ( 1 , "密码最低6位" )
this . ServeJSON ( )
return
}
user , _ := service . FindByUserName ( username )
if user != nil {
this . Data [ "json" ] = models . ReurnError ( 1 , "用户已经存在" )
this . ServeJSON ( )
return
}
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 ) )
user = & models . User { UserName : username , NickName : username , UserPwd : userpwd , Salt : salt }
err := service . SaveUser ( user )
if err == nil {
this . Data [ "json" ] = models . ReurnSuccess ( "" )
} else {
this . Data [ "json" ] = models . ReurnError ( 1 , "注册失败" )
}
this . ServeJSON ( )
return
}
func ( this * UserController ) Logout ( ) {
this . DelSession ( "userid" )
this . DelSession ( "nickname" )
this . Redirect ( "/" , 302 )
return
}