handler.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package www
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "net/http"
  6. "imuslab.com/arozos/mod/utils"
  7. )
  8. func (h *Handler) CheckUserHomePageEnabled(username string) bool {
  9. result := false
  10. currentHomePageMode := "false"
  11. err := h.Options.Database.Read("www", username+"_enable", &currentHomePageMode)
  12. if err != nil {
  13. //Not exists. Assume false
  14. result = false
  15. } else {
  16. result = (currentHomePageMode == "true")
  17. }
  18. return result
  19. }
  20. func (h *Handler) GetUserWebRoot(username string) (string, error) {
  21. webRoot := ""
  22. if h.Options.Database.KeyExists("www", username+"_webroot") {
  23. err := h.Options.Database.Read("www", username+"_webroot", &webRoot)
  24. if err != nil {
  25. return "", err
  26. }
  27. return webRoot, nil
  28. } else {
  29. return "", errors.New("Webroot not defined")
  30. }
  31. }
  32. func (h *Handler) HandleToggleHomepage(w http.ResponseWriter, r *http.Request) {
  33. userinfo, err := h.Options.UserHandler.GetUserInfoFromRequest(w, r)
  34. if err != nil {
  35. utils.SendErrorResponse(w, "User not logged in")
  36. return
  37. }
  38. set, _ := utils.Mv(r, "set", true)
  39. if set == "" {
  40. //Read mode
  41. result := h.CheckUserHomePageEnabled(userinfo.Username)
  42. js, _ := json.Marshal(result)
  43. utils.SendJSONResponse(w, string(js))
  44. } else {
  45. //Set mode
  46. if set == "true" {
  47. //Enable homepage
  48. h.Options.Database.Write("www", userinfo.Username+"_enable", "true")
  49. } else {
  50. //Disable homepage
  51. h.Options.Database.Write("www", userinfo.Username+"_enable", "false")
  52. }
  53. utils.SendOK(w)
  54. }
  55. }
  56. func (h *Handler) HandleSetWebRoot(w http.ResponseWriter, r *http.Request) {
  57. userinfo, err := h.Options.UserHandler.GetUserInfoFromRequest(w, r)
  58. if err != nil {
  59. utils.SendErrorResponse(w, "User not logged in")
  60. return
  61. }
  62. set, _ := utils.Mv(r, "set", true)
  63. if set == "" {
  64. //Read mode
  65. webroot, err := h.GetUserWebRoot(userinfo.Username)
  66. if err != nil {
  67. utils.SendErrorResponse(w, err.Error())
  68. return
  69. }
  70. js, _ := json.Marshal(webroot)
  71. utils.SendJSONResponse(w, string(js))
  72. } else {
  73. //Set mode
  74. h.Options.Database.Write("www", userinfo.Username+"_webroot", set)
  75. utils.SendOK(w)
  76. }
  77. }