handlers.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. package main
  2. import (
  3. //"html/template"
  4. "net/http"
  5. "fmt"
  6. )
  7. func indexHandler(w http.ResponseWriter, r *http.Request) {
  8. data := struct {
  9. User string
  10. Title string
  11. Items []string
  12. }{
  13. User: "",
  14. Title: "My page",
  15. Items: []string{
  16. "My photos",
  17. "My blog",
  18. "More",
  19. },
  20. }
  21. session, _ := sessionsStore.Get(r, "session")
  22. var (
  23. password string
  24. ok3 bool
  25. )
  26. untyped, ok := session.Values["username"]
  27. if ok {
  28. username, ok1 := untyped.(string)
  29. if ok1 {
  30. data.User = username
  31. untyped, ok2 := session.Values["password"]
  32. if ok2 {
  33. password, ok3 = untyped.(string)
  34. }
  35. }
  36. }
  37. indexTemplate.Execute(w, data)
  38. if ok3 {
  39. w.Write([]byte(password))
  40. }
  41. }
  42. func indexPostHandler(w http.ResponseWriter, r *http.Request) {
  43. fmt.Print("POST")
  44. }
  45. func logInGetHandler(w http.ResponseWriter, r *http.Request) {
  46. data := struct {
  47. Username string
  48. Password string
  49. Error string
  50. }{
  51. Username: "",
  52. Password: "",
  53. Error: "",
  54. }
  55. logInTemplate.Execute(w, data)
  56. }
  57. func logInPostHandler(w http.ResponseWriter, r *http.Request) {
  58. r.ParseForm()
  59. username := r.PostForm.Get("username")
  60. password := r.PostForm.Get("password")
  61. if (dBConnector.LogIn(username, password)){
  62. session, _ := sessionsStore.Get(r, "session")
  63. session.Values["username"] = username
  64. session.Values["password"] = password
  65. session.Save(r,w)
  66. fmt.Printf("%s\n%s\n",username,password)
  67. http.Redirect(w, r, "/", http.StatusFound)
  68. } else {
  69. data := struct {
  70. Username string
  71. Password string
  72. Error string
  73. }{
  74. Username: username,
  75. Password: password,
  76. Error: "Неверный логин либо пароль",
  77. }
  78. fmt.Printf("Login error")
  79. logInTemplate.Execute(w, data)
  80. //w.Write([]byte("Login error"))
  81. }
  82. }
  83. func logOutGetHandler(w http.ResponseWriter, r *http.Request) {
  84. session, _ := sessionsStore.Get(r, "session")
  85. session.Options.MaxAge = -1
  86. session.Save(r, w)
  87. untyped, ok := session.Values["username"]
  88. if ok {
  89. username, ok1 := untyped.(string)
  90. if ok1 {
  91. logger.Printf("User %s loged out", username)
  92. }
  93. }
  94. http.Redirect(w, r, "/", http.StatusFound)
  95. }
  96. func signInGetHandler(w http.ResponseWriter, r *http.Request) {
  97. signInTemplate.Execute(w, nil)
  98. }
  99. func signInPostHandler(w http.ResponseWriter, r *http.Request) {
  100. r.ParseForm()
  101. username := r.PostForm.Get("username")
  102. password := r.PostForm.Get("password")
  103. passwordRepeat := r.PostForm.Get("password-repeat")
  104. data := struct {
  105. Username string
  106. Password string
  107. PasswordRepeat string
  108. Error string
  109. }{
  110. Username: username,
  111. Password: password,
  112. PasswordRepeat: passwordRepeat,
  113. Error: "",
  114. }
  115. if dBConnector.IsNameUsed(username) {
  116. data.Error = "Имя пользователя занято"
  117. } else {
  118. if (password != passwordRepeat) {
  119. data.Error = "Введенные пароли не совпадают"
  120. } else {
  121. if dBConnector.SigInUser(username,password) {
  122. session, _ := sessionsStore.Get(r, "session")
  123. session.Values["username"] = username
  124. session.Values["password"] = password
  125. session.Save(r,w)
  126. http.Redirect(w, r, "/", http.StatusFound)
  127. } else {
  128. data.Error = "Произошла внутреняя ошибка при регистрации нового пользователя"
  129. }
  130. }
  131. }
  132. signInTemplate.Execute(w, data)
  133. }
  134. func gameGetHandler(w http.ResponseWriter, r *http.Request) {
  135. gameTemplate.Execute(w, nil)
  136. }
  137. func gamePostHandler(w http.ResponseWriter, r *http.Request){ //TODO запись score в таблицу
  138. if err := r.ParseForm(); err != nil {
  139. fmt.Fprintf(w, "ParseForm() err: %v", err)
  140. return
  141. }
  142. fmt.Printf("Post from website! r.PostFrom = %v\n", r.PostForm)
  143. score := r.FormValue("score")
  144. fmt.Fprintf(w,"score = %s\n", score)
  145. fmt.Printf("score = %s\n", score)
  146. }