aboutsummaryrefslogtreecommitdiff
path: root/src/server/handlers/refresh.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/handlers/refresh.go')
-rw-r--r--src/server/handlers/refresh.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/server/handlers/refresh.go b/src/server/handlers/refresh.go
new file mode 100644
index 0000000..bc60aa7
--- /dev/null
+++ b/src/server/handlers/refresh.go
@@ -0,0 +1,32 @@
+package handlers
+
+import (
+ "net/http"
+ "strconv"
+
+ "server/helper"
+)
+
+// Extends the current token's lifetime (by replacing it with a newer one).
+func Refresh(writer http.ResponseWriter, request *http.Request) {
+ if request.Method != "POST" {
+ helper.WriteErrorJson("expected POST method", writer, http.StatusBadRequest)
+ return
+ }
+
+ claims := helper.GetValidClaims(writer, request)
+ if claims == nil {
+ return
+ }
+
+ uid, err := strconv.Atoi(claims.Subject)
+ if err != nil {
+ helper.WriteInternalErrorJson(err, writer)
+ return
+ }
+ err = helper.IssueToken(uid, writer)
+ if err != nil {
+ helper.WriteInternalErrorJson(err, writer)
+ return
+ }
+}