|
17 | 17 | package main |
18 | 18 |
|
19 | 19 | import ( |
| 20 | + "encoding/base64" |
20 | 21 | "encoding/json" |
21 | 22 | "fmt" |
22 | 23 | "io/ioutil" |
23 | 24 | "net/http" |
24 | 25 | "os" |
25 | 26 | "strconv" |
26 | 27 | "strings" |
| 28 | + "time" |
27 | 29 |
|
28 | 30 | "github.com/supertokens/supertokens-golang/recipe/session" |
29 | 31 | "github.com/supertokens/supertokens-golang/recipe/session/sessmodels" |
@@ -170,6 +172,8 @@ func callSTInit(enableAntiCsrf bool, enableJWT bool, jwtPropertyName string) { |
170 | 172 | setEnableJWT(rw, r) |
171 | 173 | } else if r.URL.Path == "/login" && r.Method == "POST" { |
172 | 174 | login(rw, r) |
| 175 | + } else if r.URL.Path == "/login-2.18" && r.Method == "POST" { |
| 176 | + login218(rw, r) |
173 | 177 | } else if r.URL.Path == "/beforeeach" && r.Method == "POST" { |
174 | 178 | beforeeach(rw, r) |
175 | 179 | } else if r.URL.Path == "/testUserConfig" && r.Method == "POST" { |
@@ -411,6 +415,71 @@ func login(response http.ResponseWriter, request *http.Request) { |
411 | 415 | response.Write([]byte(sess.GetUserID())) |
412 | 416 | } |
413 | 417 |
|
| 418 | +func login218(response http.ResponseWriter, request *http.Request) { |
| 419 | + var body map[string]interface{} |
| 420 | + _ = json.NewDecoder(request.Body).Decode(&body) |
| 421 | + |
| 422 | + userID := body["userId"].(string) |
| 423 | + payload := body["payload"].(map[string]interface{}) |
| 424 | + |
| 425 | + querier, err := supertokens.GetNewQuerierInstanceOrThrowError("session") |
| 426 | + |
| 427 | + if err != nil { |
| 428 | + response.WriteHeader(500) |
| 429 | + response.Write([]byte("")) |
| 430 | + return |
| 431 | + } |
| 432 | + |
| 433 | + supertokens.SetQuerierApiVersionForTests("2.18") |
| 434 | + resp, err := querier.SendPostRequest("/recipe/session", map[string]interface{}{ |
| 435 | + "userId": userID, |
| 436 | + "userDataInJWT": payload, |
| 437 | + "userDataInDatabase": map[string]interface{}{}, |
| 438 | + "enableAntiCsrf": false, |
| 439 | + }) |
| 440 | + |
| 441 | + if err != nil { |
| 442 | + response.WriteHeader(500) |
| 443 | + response.Write([]byte("")) |
| 444 | + return |
| 445 | + } |
| 446 | + |
| 447 | + supertokens.SetQuerierApiVersionForTests("") |
| 448 | + |
| 449 | + responseByte, err := json.Marshal(resp) |
| 450 | + if err != nil { |
| 451 | + response.WriteHeader(500) |
| 452 | + response.Write([]byte("")) |
| 453 | + return |
| 454 | + } |
| 455 | + var sessionResp sessmodels.CreateOrRefreshAPIResponse |
| 456 | + err = json.Unmarshal(responseByte, &sessionResp) |
| 457 | + if err != nil { |
| 458 | + response.WriteHeader(500) |
| 459 | + response.Write([]byte("")) |
| 460 | + return |
| 461 | + } |
| 462 | + |
| 463 | + legacyAccessToken := sessionResp.AccessToken.Token |
| 464 | + legacyRefreshToken := sessionResp.RefreshToken.Token |
| 465 | + |
| 466 | + frontTokenJson := json.NewEncoder(response).Encode(map[string]interface{}{ |
| 467 | + "uid": userID, |
| 468 | + "ate": uint64(time.Now().UnixNano()/1000000) + 3600000, |
| 469 | + "up": payload, |
| 470 | + }) |
| 471 | + |
| 472 | + parsed, _ := json.Marshal(frontTokenJson) |
| 473 | + data := []byte(parsed) |
| 474 | + |
| 475 | + frontToken := base64.StdEncoding.EncodeToString(data) |
| 476 | + |
| 477 | + response.Header().Set("st-access-token", legacyAccessToken) |
| 478 | + response.Header().Set("st-refresh-token", legacyRefreshToken) |
| 479 | + response.Header().Set("front-token", frontToken) |
| 480 | + response.Write([]byte("")) |
| 481 | +} |
| 482 | + |
414 | 483 | func fail(w http.ResponseWriter, r *http.Request) { |
415 | 484 | w.WriteHeader(404) |
416 | 485 | w.Write([]byte("")) |
|
0 commit comments