diff options
-rw-r--r-- | main.go | 29 |
1 files changed, 18 insertions, 11 deletions
@@ -7,6 +7,7 @@ import ( "net" "net/http" "regexp" + // "strconv" "strings" "time" ) @@ -21,11 +22,11 @@ type accessLog struct { } type loginAttemptLog struct { - Email json.RawMessage `json:"email"` - Password string `json:"password"` - LoginTime time.Time `json:"loginTime"` - Success bool `json:"success"` - RememberMe bool `json:"rememberMe"` + Email string `json:"email"` + Password string `json:"password"` + LoginTime time.Time `json:"loginTime"` + Success bool `json:"success"` + RememberMe bool `json:"rememberMe"` } func main() { @@ -50,18 +51,24 @@ func main() { http.HandleFunc("/logs", createGetLogs(&logs)) http.HandleFunc("/v1/auth/login", func(w http.ResponseWriter, r *http.Request) { - var data map[string]any - body, _ := io.ReadAll(r.Body) - defer r.Body.Close() - err := json.Unmarshal([]byte(body), &data) + body, err := io.ReadAll(r.Body) if err != nil { - addRotLog(&logs, &n, string(body)) + http.Error(w, "Bad Request", http.StatusBadRequest) + return + } + defer r.Body.Close() + + // Attempt to parse JSON (optional, if you still want to try) + var data map[string]any + if json.Unmarshal(body, &data) != nil { + addRotLog(&logs, &n, string(body)) // Logs unmodified string http.Error(w, "Forbidden", http.StatusForbidden) return } if email, ok := data["email"].(string); ok { if rememberMe, ok := data["rememberMe"].(bool); ok { + fmt.Println("Successfully unmarshalled json") addRotLog(&logs, &n, fmt.Sprintf(`{"email": "%s", "password": "XXXXXXXX", "loginTime": "%s", "success": false, "rememberMe": %t}`, email, time.Now().UTC(), rememberMe)) } } @@ -86,7 +93,7 @@ func createGetLogs(logs *[log_length]string) func(http.ResponseWriter, *http.Req } func addRotLog(logs *[log_length]string, last *int, value string) { - // fmt.Printf("%d %t %s\n", *last, strings.Contains(value, "\n"), value) + fmt.Printf("%d %t %v\n", *last, strings.Contains(value, "\n"), value) if strings.Contains(value, "\n") { for _, v := range strings.Split(value, "\n") { addRotLog(logs, last, v) |