From be89fb7dd9782aa8b6f8f8365b6d8ae9d8189ec8 Mon Sep 17 00:00:00 2001
From: David Baker <dave@matrix.org>
Date: Tue, 4 Jul 2023 19:01:11 +0100
Subject: [PATCH] Revert changes to auth server code

---
 backend/auth/server.go | 86 ++++++++++++++----------------------------
 1 file changed, 29 insertions(+), 57 deletions(-)

diff --git a/backend/auth/server.go b/backend/auth/server.go
index f099784..b3721e2 100644
--- a/backend/auth/server.go
+++ b/backend/auth/server.go
@@ -15,74 +15,41 @@ type Handler struct {
 	key, secret string
 }
 
-type OpenIDTokenType struct {
-}
-
-type SFURequest struct {
-	Room           string          `json:"room"`
-	OpenIDToken    OpenIDTokenType `json:"openid_token"`
-	DeviceID       string          `json:"device_id"`
-	RemoveMeUserID string          `json:"remove_me_user_id"` // we'll get this from OIDC
-}
-
-type SFUResponse struct {
-	URL string `json:"url"`
-	JWT string `json:"jwt"`
-}
-
 func (h *Handler) handle(w http.ResponseWriter, r *http.Request) {
 	log.Printf("Request from %s", r.RemoteAddr)
 
 	// Set the CORS headers
 	w.Header().Set("Access-Control-Allow-Origin", "*")
-	w.Header().Set("Access-Control-Allow-Methods", "POST")
-	w.Header().Set("Access-Control-Allow-Headers", "Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token")
+	w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE")
+	w.Header().Set("Access-Control-Allow-Headers", "Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization")
 
 	// Handle preflight request (CORS)
 	if r.Method == "OPTIONS" {
 		w.WriteHeader(http.StatusOK)
 		return
-	} else if r.Method == "POST" {
-		var body SFURequest
-		err := json.NewDecoder(r.Body).Decode(&body)
-		if err != nil {
-			log.Printf("Error decoding JSON: %v", err)
-			w.WriteHeader(http.StatusBadRequest)
-			return
-		}
-
-		if body.Room == "" {
-			log.Printf("Request missing room")
-			w.WriteHeader(http.StatusBadRequest)
-			return
-		}
-
-		token, err := getJoinToken(h.key, h.secret, body.Room, body.RemoveMeUserID+":"+body.DeviceID)
-		if err != nil {
-			w.WriteHeader(http.StatusInternalServerError)
-			return
-		}
-
-		res := SFUResponse{URL: "http://localhost:7880/", JWT: token}
-
-		w.Header().Set("Content-Type", "application/json")
-		json.NewEncoder(w).Encode(res)
-	} else {
-		w.WriteHeader(http.StatusMethodNotAllowed)
 	}
 
-	/*
-		roomName := r.URL.Query().Get("roomName")
-		name := r.URL.Query().Get("name")
-		identity := r.URL.Query().Get("identity")
+	roomName := r.URL.Query().Get("roomName")
+	name := r.URL.Query().Get("name")
+	identity := r.URL.Query().Get("identity")
 
-		log.Printf("roomName: %s, name: %s, identity: %s", roomName, name, identity)
+	log.Printf("roomName: %s, name: %s, identity: %s", roomName, name, identity)
 
-		if roomName == "" || name == "" || identity == "" {
-			w.WriteHeader(http.StatusBadRequest)
-			return
-		}
-	*/
+	if roomName == "" || name == "" || identity == "" {
+		w.WriteHeader(http.StatusBadRequest)
+		return
+	}
+
+	token, err := getJoinToken(h.key, h.secret, roomName, identity, name)
+	if err != nil {
+		w.WriteHeader(http.StatusInternalServerError)
+		return
+	}
+
+	res := Response{token}
+
+	w.Header().Set("Content-Type", "application/json")
+	json.NewEncoder(w).Encode(res)
 }
 
 func main() {
@@ -101,11 +68,15 @@ func main() {
 		secret: secret,
 	}
 
-	http.HandleFunc("/sfu/get", handler.handle)
+	http.HandleFunc("/token", handler.handle)
 	log.Fatal(http.ListenAndServe(":8080", nil))
 }
 
-func getJoinToken(apiKey, apiSecret, room, identity string) (string, error) {
+type Response struct {
+	Token string `json:"accessToken"`
+}
+
+func getJoinToken(apiKey, apiSecret, room, identity, name string) (string, error) {
 	at := auth.NewAccessToken(apiKey, apiSecret)
 
 	canPublish := true
@@ -120,7 +91,8 @@ func getJoinToken(apiKey, apiSecret, room, identity string) (string, error) {
 
 	at.AddGrant(grant).
 		SetIdentity(identity).
-		SetValidFor(time.Hour)
+		SetValidFor(time.Hour).
+		SetName(name)
 
 	return at.ToJWT()
 }