func (c AdminEmail) Template() revel.Result { re := info.NewRe() keys := []string{"emailTemplateHeader", "emailTemplateFooter", "emailTemplateRegisterSubject", "emailTemplateRegister", "emailTemplateFindPasswordSubject", "emailTemplateFindPassword", "emailTemplateUpdateEmailSubject", "emailTemplateUpdateEmail", "emailTemplateInviteSubject", "emailTemplateInvite", "emailTemplateCommentSubject", "emailTemplateComment", } userId := c.GetUserId() for _, key := range keys { v := c.Params.Values.Get(key) if v != "" { ok, msg := emailService.ValidTpl(v) if !ok { re.Ok = false re.Msg = "Error key: " + key + "<br />" + msg return c.RenderJson(re) } else { configService.UpdateGlobalStringConfig(userId, key, v) } } } re.Ok = true return c.RenderJson(re) }
func (c AdminEmail) SendToUsers(userFilterEmail, userFilterWhiteList, userFilterBlackList, latestEmailSubject, latestEmailBody string, verified, saveAsOldEmail bool) revel.Result { re := info.NewRe() c.updateConfig([]string{"userFilterEmail", "userFilterWhiteList", "userFilterBlackList", "latestEmailSubject", "latestEmailBody"}) if latestEmailSubject == "" || latestEmailBody == "" { re.Msg = "subject or body is blank" return c.RenderJson(re) } if saveAsOldEmail { oldEmails := configService.GetGlobalMapConfig("oldEmails") oldEmails[latestEmailSubject] = latestEmailBody configService.UpdateGlobalMapConfig(c.GetUserId(), "oldEmails", oldEmails) } users := userService.GetAllUserByFilter(userFilterEmail, userFilterWhiteList, userFilterBlackList, verified) if users == nil || len(users) == 0 { re.Ok = false re.Msg = "no users" return c.RenderJson(re) } re.Ok, re.Msg = emailService.SendEmailToUsers(users, latestEmailSubject, latestEmailBody) if !re.Ok { return c.RenderJson(re) } re.Ok = true re.Msg = "users:" + strconv.Itoa(len(users)) return c.RenderJson(re) }
func (c AdminSetting) Mongodb(mongodumpPath, mongorestorePath string) revel.Result { re := info.NewRe() re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "mongodumpPath", mongodumpPath) re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "mongorestorePath", mongorestorePath) return c.RenderJson(re) }
// 发送Email func (c AdminEmail) SendToUsers2(emails, latestEmailSubject, latestEmailBody string, verified, saveAsOldEmail bool) revel.Result { re := info.NewRe() c.updateConfig([]string{"sendEmails", "latestEmailSubject", "latestEmailBody"}) if latestEmailSubject == "" || latestEmailBody == "" { re.Msg = "subject or body is blank" return c.RenderJson(re) } if saveAsOldEmail { oldEmails := configService.GetGlobalMapConfig("oldEmails") oldEmails[latestEmailSubject] = latestEmailBody configService.UpdateGlobalMapConfig(c.GetUserId(), "oldEmails", oldEmails) } emails = strings.Replace(emails, "\r", "", -1) emailsArr := strings.Split(emails, "\n") users := userService.ListUserInfosByEmails(emailsArr) LogJ(emailsArr) re.Ok, re.Msg = emailService.SendEmailToUsers(users, latestEmailSubject, latestEmailBody) return c.RenderJson(re) }
// 得到文件内容 func (c MemberBlog) GetTplContent(themeId string, filename string) revel.Result { re := info.NewRe() re.Ok = true re.Item = themeService.GetTplContent(c.GetUserId(), themeId, filename) return c.RenderJson(re) }
func AuthInterceptor(c *revel.Controller) revel.Result { // 全部变成首字大写 /* var controller = strings.Title(c.Name) var method = strings.Title(c.MethodName) // 是否需要验证? if !needValidate(controller, method) { return nil } */ // 验证是否已登录 // 必须是管理员 if _, ok := c.Session["Username"]; ok { return nil // 已登录 } // 没有登录, 判断是否是ajax操作 if c.Request.Header.Get("X-Requested-With") == "XMLHttpRequest" { re := info.NewRe() re.Msg = "NOTLOGIN" return c.RenderJson(re) } return c.Redirect("/login") }
func (c AdminSetting) HomePage(homePage string) revel.Result { re := info.NewRe() if homePage == "0" { homePage = "" } re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "homePage", homePage) return c.RenderJson(re) }
func (c AdminEmail) DoBlogTag(recommendTags, newTags string) revel.Result { re := info.NewRe() re.Ok = configService.UpdateGlobalArrayConfig(c.GetUserId(), "recommendTags", strings.Split(recommendTags, ",")) re.Ok = configService.UpdateGlobalArrayConfig(c.GetUserId(), "newTags", strings.Split(newTags, ",")) return c.RenderJson(re) }
func (c AdminUser) DoResetPwd(userId, pwd string) revel.Result { re := info.NewRe() if re.Ok, re.Msg = Vd("password", pwd); !re.Ok { return c.RenderRe(re) } re.Ok, re.Msg = userService.ResetPwd(c.GetUserId(), userId, pwd) return c.RenderRe(re) }
// 共享设置 func (c AdminSetting) ShareNote(registerSharedUserId string, registerSharedNotebookPerms, registerSharedNotePerms []int, registerSharedNotebookIds, registerSharedNoteIds, registerCopyNoteIds []string) revel.Result { re := info.NewRe() re.Ok, re.Msg = configService.UpdateShareNoteConfig(registerSharedUserId, registerSharedNotebookPerms, registerSharedNotePerms, registerSharedNotebookIds, registerSharedNoteIds, registerCopyNoteIds) return c.RenderJson(re) }
func (c AdminSetting) UploadSize(uploadImageSize, uploadAvatarSize, uploadBlogLogoSize, uploadAttachSize float64) revel.Result { re := info.NewRe() re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "uploadImageSize", fmt.Sprintf("%v", uploadImageSize)) re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "uploadAvatarSize", fmt.Sprintf("%v", uploadAvatarSize)) re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "uploadBlogLogoSize", fmt.Sprintf("%v", uploadBlogLogoSize)) re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "uploadAttachSize", fmt.Sprintf("%v", uploadAttachSize)) return c.RenderJson(re) }
func (c AdminEmail) Set(emailHost, emailPort, emailUsername, emailPassword string) revel.Result { re := info.NewRe() re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "emailHost", emailHost) re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "emailPort", emailPort) re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "emailUsername", emailUsername) re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "emailPassword", emailPassword) return c.RenderJson(re) }
func (c MemberBlog) ListThemeImages(themeId string) revel.Result { re := info.NewRe() userId := c.GetUserId() path := themeService.GetThemeAbsolutePath(userId, themeId) + "/images" os.MkdirAll(path, 0755) images := ListDir(path) re.List = images re.Ok = true return c.RenderJson(re) }
// 复制别人共享的笔记给我 func (c Note) CopySharedNote(noteIds []string, notebookId, fromUserId string) revel.Result { copyNotes := make([]info.Note, len(noteIds)) userId := c.GetUserId() for i, noteId := range noteIds { copyNotes[i] = noteService.CopySharedNote(noteId, notebookId, fromUserId, userId) } re := info.NewRe() re.Ok = true re.Item = copyNotes return c.RenderJson(re) }
// 找回密码修改密码 func (c Auth) FindPasswordUpdate(token, pwd string) revel.Result { re := info.NewRe() if re.Ok, re.Msg = Vd("password", pwd); !re.Ok { return c.RenderRe(re) } // 修改之 re.Ok, re.Msg = pwdService.UpdatePwd(token, pwd) return c.RenderRe(re) }
// 建议 func (c Index) Suggestion(addr, suggestion string) revel.Result { re := info.NewRe() re.Ok = suggestionService.AddSuggestion(info.Suggestion{Addr: addr, UserId: c.GetObjectUserId(), Suggestion: suggestion}) // 发给我 go func() { emailService.SendEmail("*****@*****.**", "建议", "UserId: "+c.GetUserId()+" <br /> Suggestions: "+suggestion) }() return c.RenderJson(re) }
// 添加用户 func (c MemberGroup) AddUser(groupId, email string) revel.Result { re := info.NewRe() userInfo := userService.GetUserInfoByAny(email) if userInfo.UserId == "" { re.Msg = "userNotExists" } else { re.Ok, re.Msg = groupService.AddUser(c.GetUserId(), groupId, userInfo.UserId.Hex()) re.Item = userInfo } return c.RenderRe(re) }
func (c AdminSetting) DoSubDomain(noteSubDomain, blogSubDomain, leaSubDomain, blackSubDomains, allowCustomDomain, blackCustomDomains string) revel.Result { re := info.NewRe() re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "noteSubDomain", noteSubDomain) re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "blogSubDomain", blogSubDomain) re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "leaSubDomain", leaSubDomain) re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "allowCustomDomain", allowCustomDomain) re.Ok = configService.UpdateGlobalArrayConfig(c.GetUserId(), "blackSubDomains", strings.Split(blackSubDomains, ",")) re.Ok = configService.UpdateGlobalArrayConfig(c.GetUserId(), "blackCustomDomains", strings.Split(blackCustomDomains, ",")) return c.RenderJson(re) }
// 导出 func (c MemberBlog) ExportTheme(themeId string) revel.Result { re := info.NewRe() var path string re.Ok, path = themeService.ExportTheme(c.GetUserId(), themeId) if !re.Ok { return c.RenderText("error...") } fw, err := os.Open(path) if err != nil { return c.RenderText("error") } return c.RenderBinary(fw, GetFilename(path), revel.Attachment, time.Now()) // revel.Attachment }
// 导入主题 func (c MemberBlog) ImportTheme() revel.Result { re := info.NewRe() file, handel, err := c.Request.FormFile("file") if err != nil { re.Msg = fmt.Sprintf("%v", err) return c.RenderJson(re) } defer file.Close() // 生成上传路径 userId := c.GetUserId() dir := revel.BasePath + "/public/upload/" + userId + "/tmp" err = os.MkdirAll(dir, 0755) if err != nil { re.Msg = fmt.Sprintf("%v", err) return c.RenderJson(re) } // 生成新的文件名 filename := handel.Filename var ext string _, ext = SplitFilename(filename) if ext != ".zip" { re.Msg = "Please upload zip file" return c.RenderJson(re) } filename = filename data, err := ioutil.ReadAll(file) if err != nil { return c.RenderJson(re) } // > 10M? if len(data) > 10*1024*1024 { re.Msg = "File is big than 10M" return c.RenderJson(re) } toPath := dir + "/" + filename err = ioutil.WriteFile(toPath, data, 0777) if err != nil { re.Msg = fmt.Sprintf("%v", err) return c.RenderJson(re) } // 上传好后, 增加之 re.Ok, re.Msg = themeService.ImportTheme(c.GetUserId(), toPath) return c.RenderRe(re) }
// 添加 func (c AdminUser) Register(email, pwd string) revel.Result { re := info.NewRe() if re.Ok, re.Msg = Vd("email", email); !re.Ok { return c.RenderRe(re) } if re.Ok, re.Msg = Vd("password", pwd); !re.Ok { return c.RenderRe(re) } // 注册 re.Ok, re.Msg = authService.Register(email, pwd, "") return c.RenderRe(re) }
func (c AdminEmail) DoDemo(demoUsername, demoPassword string) revel.Result { re := info.NewRe() userInfo, err := authService.Login(demoUsername, demoPassword) if err != nil { return c.RenderJson(info.Re{Ok: false}) } if userInfo.UserId == "" { re.Msg = "The User is Not Exists" return c.RenderJson(re) } re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "demoUserId", userInfo.UserId.Hex()) re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "demoUsername", demoUsername) re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "demoPassword", demoPassword) return c.RenderJson(re) }
// 复制外网的图片 // 都要好好的计算大小 func (c File) CopyHttpImage(src string) revel.Result { re := info.NewRe() // 生成上传路径 newGuid := NewGuid() userId := c.GetUserId() fileUrlPath := "files/" + Digest3(userId) + "/" + userId + "/" + Digest2(newGuid) + "/images" //modified by JacobXie var filesize int64 var filename string var ok bool if qiniuService.IsUseQiniu() { filesize, filename, _, ok = qiniuService.Upload2QiniuWithUrl(src, fileUrlPath) } else { dir := revel.BasePath + "/" + fileUrlPath err := os.MkdirAll(dir, 0755) if err != nil { return c.RenderJson(re) } filesize, filename, _, ok = netutil.WriteUrl(src, dir) } if !ok { re.Msg = "copy error" return c.RenderJson(re) } // File fileInfo := info.File{Name: filename, Title: filename, Path: fileUrlPath + "/" + filename, Size: filesize} id := bson.NewObjectId() fileInfo.FileId = id re.Id = id.Hex() // re.Item = fileInfo.Path re.Ok, re.Msg = fileService.AddImage(fileInfo, "", c.GetUserId(), true) return c.RenderJson(re) }
func (c Auth) DoRegister(email, pwd, iu string) revel.Result { if !configService.IsOpenRegister() { return c.Redirect("/index") } re := info.NewRe() if re.Ok, re.Msg = Vd("email", email); !re.Ok { return c.RenderRe(re) } if re.Ok, re.Msg = Vd("password", pwd); !re.Ok { return c.RenderRe(re) } // 注册 re.Ok, re.Msg = authService.Register(email, pwd, iu) // 注册成功, 则立即登录之 if re.Ok { c.doLogin(email, pwd) } return c.RenderRe(re) }
func (c Auth) DoFindPassword(email string) revel.Result { pwdService.FindPwd(email) re := info.NewRe() re.Ok = true return c.RenderJson(re) }
// 协作时复制图片到owner // 需要计算对方大小 func (c File) CopyImage(userId, fileId, toUserId string) revel.Result { re := info.NewRe() re.Ok, re.Id = fileService.CopyImage(userId, fileId, toUserId) return c.RenderJson(re) }
func (c File) DeleteImage(fileId string) revel.Result { re := info.NewRe() re.Ok, re.Msg = fileService.DeleteImage(c.GetUserId(), fileId) return c.RenderJson(re) }
func (c File) UpdateImageTitle(fileId, title string) revel.Result { re := info.NewRe() re.Ok = fileService.UpdateImageTitle(c.GetUserId(), fileId, title) return c.RenderJson(re) }
// 修改笔记的urlTitle func (c MemberBlog) UpdateBlogUrlTitle(noteId, urlTitle string) revel.Result { re := info.NewRe() re.Ok, re.Item = blogService.UpateBlogUrlTitle(c.GetUserId(), noteId, urlTitle) return c.RenderJson(re) }
func (c MemberBlog) SetUserBlogPaging(perPageSize int, sortField string, isAsc bool) revel.Result { re := info.NewRe() re.Ok, re.Msg = blogService.UpdateUserBlogPaging(c.GetUserId(), perPageSize, sortField, isAsc) return c.RenderRe(re) }