handler.go 2.0 KB

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