mail_yanpeng@163.com vor 6 Jahren
Ursprung
Commit
0c720b9b04
  1. 1
      conf/app.conf
  2. 11
      controllers/BlogController.go
  3. 20
      controllers/UserController.go
  4. BIN
      data/beeblog.db
  5. 11
      filter/Security.go
  6. 2
      main.go
  7. 6
      models/Blog.go
  8. 1
      models/User.go
  9. 1
      routers/UserRouter.go
  10. 29
      service/BlogService.go
  11. 10
      static/css/blog.css
  12. 23
      static/css/common.css
  13. BIN
      static/img/2.png
  14. BIN
      static/img/bg.jpg
  15. 33
      views/T.nav.tpl
  16. 16
      views/blog.html
  17. 2
      views/newblog.html

1
conf/app.conf

@ -3,6 +3,7 @@ httpport = 8082
runmode = dev
sessionon = true
sessiongcmaxlifetime = 36000
EnableGzip = true
EnableDocs = true

11
controllers/BlogController.go

@ -14,7 +14,7 @@ type BlogController struct {
func (this *BlogController) Save() {
uid := this.GetSession("userid")
if uid == nil{
if uid == nil {
this.Data["json"] = models.ReurnError(401, "")
this.ServeJSON()
return
@ -48,7 +48,7 @@ func (this *BlogController) Get() {
func (this *BlogController) New() {
uid := this.GetSession("userid")
if uid == nil {
this.Redirect("/login.html",302)
this.Redirect("/login.html", 302)
return
}
this.TplName = "newblog.html"
@ -58,7 +58,7 @@ func (this *BlogController) Blog1() {
}
func (this *BlogController) BlogsPage() {
cats,errcat := service.GetCats()
cats, errcat := service.GetCats()
if errcat != nil {
this.Redirect("500.html", 302)
return
@ -82,6 +82,11 @@ func (this *BlogController) BlogsPage() {
this.Redirect("500.html", 302)
return
}
NickName:= this.GetSession("nickname")
fmt.Print("current user ",NickName)
this.Data["NickName"] = NickName
this.Data["IsLogin"] = this.GetSession("nickname") != nil
this.Data["Page"] = pages
this.Data["Cats"] = cats
this.Data["Cat"] = cat

20
controllers/UserController.go

@ -17,16 +17,6 @@ type UserController struct {
}
func (u *UserController) LoginPage() {
//
//for i:=0; i<len(tests) ; i++ {
// fmt.Println(tests[i].Title,tests[i].Id)
//}
//fmt.Println(len(tests))
//num, err = o.Delete(&u)
//fmt.Printf("NUM: %d, ERR: %v\n", num, err)
//u.Ctx.WriteString("login page")
u.TplName = "login.html"
}
func (u *UserController) RegistPage() {
@ -64,6 +54,7 @@ func (this *UserController) Login() {
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,"用户名或密码错误")
@ -112,7 +103,7 @@ func (this *UserController) Regist() {
h = md5.New()
h.Write([]byte(userpwd + salt))
userpwd = hex.EncodeToString(h.Sum(nil))
user = &models.User{UserName: username, UserPwd: userpwd, Salt: salt}
user = &models.User{UserName: username,NickName:username, UserPwd: userpwd, Salt: salt}
err := service.SaveUser(user)
if err == nil {
this.Data["json"] = models.ReurnSuccess("")
@ -122,3 +113,10 @@ func (this *UserController) Regist() {
this.ServeJSON()
return
}
func (this *UserController) Logout() {
this.DelSession("userid")
this.DelSession("nickname")
this.Redirect("/",302)
return
}

BIN
data/beeblog.db

Binäre Datei nicht angezeigt.

11
filter/Security.go

@ -5,7 +5,6 @@ import (
"github.com/astaxie/beego/context"
)
var FilterAdmin = func(ctx *context.Context) {
url := ctx.Input.URL()
logs.Info("##### filter url : %s", url)
@ -14,10 +13,8 @@ var FilterAdmin = func(ctx *context.Context) {
//}
}
var FilterAdmin1 = func(ctx *context.Context) {
url := ctx.Input.URL()
logs.Info("##### filter url : %s", url)
//if url != "/login"{
// ctx.Redirect(302, "/login")
//}
var FilterLoginInfo = func(ctx *context.Context) {
if ctx.Input.Session("userid") != nil {
//ctx.
}
}

2
main.go

@ -11,7 +11,7 @@ import (
func init() {
models.RegistDB()
beego.InsertFilter("/*", beego.BeforeRouter, filter.FilterAdmin)
beego.InsertFilter("/*", beego.BeforeRouter, filter.FilterAdmin1)
beego.InsertFilter("/*", beego.FinishRouter, filter.FilterLoginInfo)
}
func main() {
orm.Debug = true

6
models/Blog.go

@ -18,6 +18,8 @@ type Blog struct {
Delflag int `orm:"default(0)"`
CategoryId int64
UserName string `orm:"-"`
CateName string `orm:"-"`
UserName string `orm:"-"`
HeadImg string `orm:"-"`
CateName string `orm:"-"`
Lables []*NLabel `orm:"-"`
}

1
models/User.go

@ -5,6 +5,7 @@ import "time"
type User struct {
Id int64
UserName string `orm:"unique"`
NickName string
UserPwd string
Salt string
Headimg string

1
routers/UserRouter.go

@ -7,6 +7,7 @@ import (
func init() {
beego.Router("/login", &controllers.UserController{}, "get:LoginPage")
beego.Router("/logout", &controllers.UserController{}, "get:Logout")
beego.Router("/login", &controllers.UserController{}, "post:Login")
beego.Router("/regist", &controllers.UserController{}, "post:Regist")
beego.Router("/regist", &controllers.UserController{}, "get:RegistPage")

29
service/BlogService.go

@ -30,6 +30,18 @@ func GetBlog(id int64) (*models.Blog, error) {
if err != nil {
return nil, err
}
user := &models.User{Id: blog.UserId}
err = o.Read(user)
if err == nil {
blog.UserName = user.UserName
blog.HeadImg = user.Headimg
}
var labels []*models.NLabel
qs := o.QueryTable(&models.NLabel{})
_,err = qs.Filter("BlogId",id).All(&labels)
if err == nil {
blog.Lables = labels
}
return blog, nil
}
@ -51,11 +63,26 @@ func FindBlogs(num int, size int, cat int64, flag int) (*utils.Page, error) {
qs = qs.OrderBy("-Browses")
}
qs = qs.Limit(size, (page.PageNo-1) * size)
qs = qs.Limit(size, (page.PageNo-1)*size)
_, err = qs.All(&blogs)
if err != nil {
return nil, err
}
if len(blogs) > 0 {
for i := 0; i < len(blogs); i++ {
user := &models.User{Id: blogs[i].UserId}
err = o.Read(user)
if err == nil {
blogs[i].UserName = user.UserName
blogs[i].HeadImg = user.Headimg
}
category := &models.Category{Id: blogs[i].CategoryId}
err = o.Read(category)
if err == nil {
blogs[i].CateName = category.Title
}
}
}
page.List = blogs
return page, nil
}

10
static/css/blog.css

@ -1,5 +1,13 @@
.blog-root{
width: 100%;
height: 100%;
margin: 50px 4% 0 4%;
}
.blog-info{
text-align: center;
}
.blog-info em{
padding: 0 8px !important;
}

23
static/css/common.css

@ -1,11 +1,26 @@
.root-container{
body {
/*background: #f5f7f9 url("/static/img/bg.jpg") repeat;*/
background: #f5f7f9;
}
.navbar-default{
border-color: #f8d9ea !important;
}
.img-circle{
width: 36px;
height: 36px;
margin-top: 2px;
}
.root-container {
position: absolute;
height: 100%;
width: 100%;
max-width: 100%;
}
.nav-container{
.nav-container {
max-height: 40px;
position: fixed;
width: 100%;
@ -14,7 +29,7 @@
top: 0;
}
.nav-container .sui-navbar .navbar-inner{
.nav-container .sui-navbar .navbar-inner {
padding: 0 50px;
}
@ -28,6 +43,6 @@
-webkit-border-radius: 6px;
}
.cursor{
.cursor {
cursor: pointer
}

BIN
static/img/2.png

Binäre Datei nicht angezeigt.

Nachher

Breite:  |  Höhe:  |  Größe: 321 KiB

BIN
static/img/bg.jpg

Binäre Datei nicht angezeigt.

Nachher

Breite:  |  Höhe:  |  Größe: 20 KiB

33
views/T.nav.tpl

@ -20,24 +20,33 @@
<a href="/map" target="_blank">地图</a>
</li>
</ul>
<form class="navbar-form navbar-left" role="search">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
{{/*<form class="navbar-form navbar-left" role="search">*/}}
{{/*<div class="form-group">*/}}
{{/*<input type="text" class="form-control" placeholder="Search">*/}}
{{/*</div>*/}}
{{/*<button type="submit" class="btn btn-default">Submit</button>*/}}
{{/*</form>*/}}
<ul class="nav navbar-nav navbar-right">
<li><a href="#">个人中心</a></li>
{{if .IsLogin }}
{{/*<li><a href="#"></a></li>*/}}
<li><a href="/" style="padding: 0;"><img src="/static/img/2.png" alt="头像" class="img-circle"></a></li>
{{else}}
<li><a href="/login">登录</a></li>
<li><a href="/regist">注册</a></li>
{{end}}
{{if .IsLogin }}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Dropdown <span class="caret"></span></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
{{.NickName}}<span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li><a href="#">个人中心</a></li>
<li><a href="/note" target="_blank">我的笔记</a></li>
<li><a href="/note" target="_blank">我的首页</a></li>
<li class="divider"></li>
<li><a href="#">Separated link</a></li>
<li><a href="/logout">安全退出</a></li>
</ul>
</li>
{{end}}
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->

16
views/blog.html

@ -6,8 +6,20 @@
<div class="root-container">
{{template "nav" .}}
<div class="blog-root">
<h1>{{.Blog.Title}}</h1>
<h1 style="text-align: center">{{.Blog.Title}}</h1>
<div class="blog-info">
<span><a href="">{{.Blog.UserName}}</a></span>
<span><em>时间:</em>{{.Blog.Ctime.Format "2006-01-02"}}</span>
<span><em>阅读数:</em>{{.Blog.Browses}}</span>
<div class="tag-group" style="display: inline-block">
{{range .Blog.Lables}}
<label class='tag tag-info disabled'>{{.Title}}</label>
{{end}}
</div>
</div>
<div style="width: 100%">
{{str2html .Blog.BlogHtml}}
</div>
</div>
</div>
</body>

2
views/newblog.html

@ -6,7 +6,7 @@
<body>
<div class="root-container">
<div class="blog-title">
<input type="text" id="blog-title">
<input type="text" id="blog-title" placeholder="请输入文章标题">
<button type="button" id="newBtn" class="btn btn-danger" style="border-radius: 12px">发布文章</button>
</div>
<div id="editor" class="editor">

Laden…
Abbrechen
Speichern