init
This commit is contained in:
174
app/controllers/BaseController.go
Normal file
174
app/controllers/BaseController.go
Normal file
@ -0,0 +1,174 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"github.com/revel/revel"
|
||||
"labix.org/v2/mgo/bson"
|
||||
"encoding/json"
|
||||
"github.com/leanote/leanote/app/info"
|
||||
// "io/ioutil"
|
||||
// "fmt"
|
||||
"math"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// 公用Controller, 其它Controller继承它
|
||||
type BaseController struct {
|
||||
*revel.Controller
|
||||
}
|
||||
|
||||
func (c BaseController) GetUserId() string {
|
||||
if userId, ok := c.Session["UserId"]; ok {
|
||||
return userId
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// 是否已登录
|
||||
func (c BaseController) HasLogined() bool {
|
||||
return c.GetUserId() != ""
|
||||
}
|
||||
|
||||
func (c BaseController) GetObjectUserId() bson.ObjectId {
|
||||
userId := c.GetUserId()
|
||||
if userId != "" {
|
||||
return bson.ObjectIdHex(userId)
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (c BaseController) GetEmail() string {
|
||||
if email, ok := c.Session["Email"]; ok {
|
||||
return email
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (c BaseController) GetUsername() string {
|
||||
if email, ok := c.Session["Username"]; ok {
|
||||
return email
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// 得到用户信息
|
||||
func (c BaseController) GetUserInfo() info.User {
|
||||
if userId, ok := c.Session["UserId"]; ok && userId != "" {
|
||||
notebookWidth, _ := strconv.Atoi(c.Session["NotebookWidth"])
|
||||
noteListWidth, _ := strconv.Atoi(c.Session["NoteListWidth"])
|
||||
user := info.User{UserId: bson.ObjectIdHex(userId),
|
||||
Email: c.Session["Email"],
|
||||
Username: c.Session["Username"],
|
||||
UsernameRaw: c.Session["UsernameRaw"],
|
||||
Theme: c.Session["Theme"],
|
||||
NotebookWidth: notebookWidth,
|
||||
NoteListWidth: noteListWidth,
|
||||
}
|
||||
if c.Session["Verified"] == "1" {
|
||||
user.Verified = true
|
||||
}
|
||||
if c.Session["LeftIsMin"] == "1" {
|
||||
user.LeftIsMin = true
|
||||
}
|
||||
return user
|
||||
}
|
||||
return info.User{}
|
||||
}
|
||||
|
||||
func (c BaseController) SetSession(userInfo info.User) {
|
||||
if userInfo.UserId.Hex() != "" {
|
||||
c.Session["UserId"] = userInfo.UserId.Hex()
|
||||
c.Session["Email"] = userInfo.Email
|
||||
c.Session["Username"] = userInfo.Username
|
||||
c.Session["UsernameRaw"] = userInfo.UsernameRaw
|
||||
c.Session["Theme"] = userInfo.Theme
|
||||
|
||||
c.Session["NotebookWidth"] = strconv.Itoa(userInfo.NotebookWidth)
|
||||
c.Session["NoteListWidth"] = strconv.Itoa(userInfo.NoteListWidth)
|
||||
|
||||
if userInfo.Verified {
|
||||
c.Session["Verified"] = "1"
|
||||
} else {
|
||||
c.Session["Verified"] = "0"
|
||||
}
|
||||
|
||||
if userInfo.LeftIsMin {
|
||||
c.Session["LeftIsMin"] = "1"
|
||||
} else {
|
||||
c.Session["LeftIsMin"] = "0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (c BaseController) ClearSession() {
|
||||
delete(c.Session, "UserId")
|
||||
delete(c.Session, "Email")
|
||||
delete(c.Session, "Username")
|
||||
delete(c.Session, "theme")
|
||||
}
|
||||
|
||||
// 修改session
|
||||
func (c BaseController) UpdateSession(key, value string) {
|
||||
c.Session[key] = value
|
||||
}
|
||||
|
||||
// 返回json
|
||||
func (c BaseController) Json(i interface{}) string {
|
||||
// b, _ := json.MarshalIndent(i, "", " ")
|
||||
b, _ := json.Marshal(i)
|
||||
return string(b)
|
||||
}
|
||||
|
||||
// 得到第几页
|
||||
func (c BaseController) GetPage() int {
|
||||
page := 0
|
||||
c.Params.Bind(&page, "page")
|
||||
if page == 0 {
|
||||
return 1
|
||||
}
|
||||
return page
|
||||
}
|
||||
|
||||
// 判断是否含有某参数
|
||||
func (c BaseController) Has(key string) bool {
|
||||
if _, ok := c.Params.Values[key]; ok {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
func (c Blog) GetPage(page, count int, list interface{}) info.Page {
|
||||
return info.Page{page, int(math.Ceil(float64(count)/float64(page))), list}
|
||||
}
|
||||
*/
|
||||
|
||||
func (c BaseController) GetTotalPage(page, count int) int {
|
||||
return int(math.Ceil(float64(count)/float64(page)))
|
||||
}
|
||||
|
||||
//-------------
|
||||
func (c BaseController) E404() revel.Result {
|
||||
c.RenderArgs["title"] = "404";
|
||||
return c.NotFound("", nil)
|
||||
}
|
||||
|
||||
// 设置本地
|
||||
func (c BaseController) SetLocale() {
|
||||
locale := string(c.Request.Locale) // zh-CN
|
||||
lang := locale
|
||||
if strings.Contains(locale, "-") {
|
||||
pos := strings.Index(locale, "-")
|
||||
lang = locale[0:pos]
|
||||
}
|
||||
if lang != "zh" && lang != "en" {
|
||||
lang = "en";
|
||||
}
|
||||
c.RenderArgs["locale"] = lang;
|
||||
}
|
||||
|
||||
// 设置userInfo
|
||||
func (c BaseController) SetUserInfo() {
|
||||
userInfo := c.GetUserInfo()
|
||||
c.RenderArgs["userInfo"] = userInfo
|
||||
}
|
Reference in New Issue
Block a user