Timer token show & reset
This commit is contained in:
58
timer.go
58
timer.go
@ -6,6 +6,7 @@ import (
|
||||
"database/sql"
|
||||
"encoding/base64"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
@ -231,6 +232,16 @@ func updateTimerEndTime(db *sql.DB, id model.UUID, endTime model.Time, userId mo
|
||||
return err == nil && affected == 1
|
||||
}
|
||||
|
||||
func updateTimerToken(db *sql.DB, id model.UUID, token string, userId model.UUID) bool {
|
||||
res, err := db.Exec("UPDATE Timer SET Token=$1 WHERE Id=$2 AND Owner=$3", token, id, userId)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
affected, err := res.RowsAffected()
|
||||
return err == nil && affected == 1
|
||||
}
|
||||
|
||||
type Session struct {
|
||||
UserId model.UUID
|
||||
}
|
||||
@ -369,6 +380,51 @@ func (server *MyServer) handleTimerAddTime(w http.ResponseWriter, r *http.Reques
|
||||
view.TimerView(*timer).Render(context.Background(), w)
|
||||
}
|
||||
|
||||
func (server *MyServer) handleGetTimerToken(w http.ResponseWriter, r *http.Request) {
|
||||
currentUser := server.findCurrentUser(w, r)
|
||||
if currentUser == nil {
|
||||
w.WriteHeader(http.StatusUnauthorized)
|
||||
return
|
||||
}
|
||||
|
||||
timer := queryTimer(server.db, r.PathValue("timerId"), currentUser.Id)
|
||||
if timer == nil {
|
||||
server.handleNotFound(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
w.Write([]byte(fmt.Sprint("<code>", timer.Token, "</code>")))
|
||||
}
|
||||
|
||||
func (server *MyServer) handleResetTimerToken(w http.ResponseWriter, r *http.Request) {
|
||||
currentUser := server.findCurrentUser(w, r)
|
||||
if currentUser == nil {
|
||||
w.WriteHeader(http.StatusUnauthorized)
|
||||
return
|
||||
}
|
||||
|
||||
timer := queryTimer(server.db, r.PathValue("timerId"), currentUser.Id)
|
||||
if timer == nil {
|
||||
server.handleNotFound(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
newToken, err := generateTimerToken()
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
timer.Token = newToken
|
||||
res := updateTimerToken(server.db, timer.Id, newToken, currentUser.Id)
|
||||
if !res {
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
view.TimerTokenForm(*timer).Render(context.Background(), w)
|
||||
}
|
||||
|
||||
func (server *MyServer) handleDeleteTimer(w http.ResponseWriter, r *http.Request) {
|
||||
user := server.findCurrentUser(w, r)
|
||||
if user == nil {
|
||||
@ -505,6 +561,8 @@ func main() {
|
||||
http.HandleFunc("GET /timer/{timerId}", myServer.handleTimer)
|
||||
http.HandleFunc("POST /timer/{timerId}/addTime/{timeToAdd}", myServer.handleTimerAddTime)
|
||||
http.HandleFunc("DELETE /timer/{timerId}", myServer.handleDeleteTimer)
|
||||
http.HandleFunc("POST /timer/{timerId}/resetToken", myServer.handleResetTimerToken)
|
||||
http.HandleFunc("GET /timer/{timerId}/token", myServer.handleGetTimerToken)
|
||||
http.HandleFunc("PUT /timer", myServer.handlePutTimer)
|
||||
http.HandleFunc("GET /", myServer.handleMain)
|
||||
|
||||
|
Reference in New Issue
Block a user