From cf668021841ccbea58fe8195404b548b006d64f8 Mon Sep 17 00:00:00 2001 From: Jocadbz Date: Wed, 12 Mar 2025 23:48:41 -0300 Subject: [PATCH] Fix up user register --- handlers/signup.go | 5 ++- models/user.go | 76 ++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 78 insertions(+), 3 deletions(-) diff --git a/handlers/signup.go b/handlers/signup.go index ee55883..0be0b63 100644 --- a/handlers/signup.go +++ b/handlers/signup.go @@ -15,6 +15,7 @@ func SignupHandler(app *App) http.HandlerFunc { password := r.FormValue("password") err := models.CreateUser(app.DB, username, password) if err != nil { + log.Printf("Error creating user: %v", err) data := struct { PageData Error string @@ -28,7 +29,7 @@ func SignupHandler(app *App) http.HandlerFunc { StaticPath: app.Config.ThreadrDir + "/static", CurrentURL: r.URL.Path, }, - Error: "Error creating user", + Error: "Error creating user: " + err.Error(), } if err := app.Tmpl.ExecuteTemplate(w, "signup", data); err != nil { log.Printf("Error executing template in SignupHandler: %v", err) @@ -42,6 +43,7 @@ func SignupHandler(app *App) http.HandlerFunc { } data := struct { PageData + Error string }{ PageData: PageData{ Title: "ThreadR - Sign Up", @@ -52,6 +54,7 @@ func SignupHandler(app *App) http.HandlerFunc { StaticPath: app.Config.ThreadrDir + "/static", CurrentURL: r.URL.Path, }, + Error: "", } if err := app.Tmpl.ExecuteTemplate(w, "signup", data); err != nil { log.Printf("Error executing template in SignupHandler: %v", err) diff --git a/models/user.go b/models/user.go index 4ec582e..1c6d03a 100644 --- a/models/user.go +++ b/models/user.go @@ -26,13 +26,49 @@ func GetUserByID(db *sql.DB, id int) (*User, error) { query := "SELECT id, username, display_name, pfp_url, bio, authentication_string, authentication_salt, authentication_algorithm, created_at, updated_at, verified, permissions FROM users WHERE id = ?" row := db.QueryRow(query, id) user := &User{} - err := row.Scan(&user.ID, &user.Username, &user.DisplayName, &user.PfpURL, &user.Bio, &user.AuthenticationString, &user.AuthenticationSalt, &user.AuthenticationAlgorithm, &user.CreatedAt, &user.UpdatedAt, &user.Verified, &user.Permissions) + var displayName sql.NullString + var pfpURL sql.NullString + var bio sql.NullString + var createdAtString sql.NullString + var updatedAtString sql.NullString + err := row.Scan(&user.ID, &user.Username, &displayName, &pfpURL, &bio, &user.AuthenticationString, &user.AuthenticationSalt, &user.AuthenticationAlgorithm, &createdAtString, &updatedAtString, &user.Verified, &user.Permissions) if err == sql.ErrNoRows { return nil, nil } if err != nil { return nil, err } + if displayName.Valid { + user.DisplayName = displayName.String + } else { + user.DisplayName = "" + } + if pfpURL.Valid { + user.PfpURL = pfpURL.String + } else { + user.PfpURL = "" + } + if bio.Valid { + user.Bio = bio.String + } else { + user.Bio = "" + } + if createdAtString.Valid { + user.CreatedAt, err = time.Parse("2006-01-02 15:04:05", createdAtString.String) + if err != nil { + return nil, fmt.Errorf("error parsing created_at: %v", err) + } + } else { + user.CreatedAt = time.Time{} + } + if updatedAtString.Valid { + user.UpdatedAt, err = time.Parse("2006-01-02 15:04:05", updatedAtString.String) + if err != nil { + return nil, fmt.Errorf("error parsing updated_at: %v", err) + } + } else { + user.UpdatedAt = time.Time{} + } return user, nil } @@ -40,10 +76,46 @@ func GetUserByUsername(db *sql.DB, username string) (*User, error) { query := "SELECT id, username, display_name, pfp_url, bio, authentication_string, authentication_salt, authentication_algorithm, created_at, updated_at, verified, permissions FROM users WHERE username = ?" row := db.QueryRow(query, username) user := &User{} - err := row.Scan(&user.ID, &user.Username, &user.DisplayName, &user.PfpURL, &user.Bio, &user.AuthenticationString, &user.AuthenticationSalt, &user.AuthenticationAlgorithm, &user.CreatedAt, &user.UpdatedAt, &user.Verified, &user.Permissions) + var displayName sql.NullString + var pfpURL sql.NullString + var bio sql.NullString + var createdAtString sql.NullString + var updatedAtString sql.NullString + err := row.Scan(&user.ID, &user.Username, &displayName, &pfpURL, &bio, &user.AuthenticationString, &user.AuthenticationSalt, &user.AuthenticationAlgorithm, &createdAtString, &updatedAtString, &user.Verified, &user.Permissions) if err != nil { return nil, err } + if displayName.Valid { + user.DisplayName = displayName.String + } else { + user.DisplayName = "" + } + if pfpURL.Valid { + user.PfpURL = pfpURL.String + } else { + user.PfpURL = "" + } + if bio.Valid { + user.Bio = bio.String + } else { + user.Bio = "" + } + if createdAtString.Valid { + user.CreatedAt, err = time.Parse("2006-01-02 15:04:05", createdAtString.String) + if err != nil { + return nil, fmt.Errorf("error parsing created_at: %v", err) + } + } else { + user.CreatedAt = time.Time{} + } + if updatedAtString.Valid { + user.UpdatedAt, err = time.Parse("2006-01-02 15:04:05", updatedAtString.String) + if err != nil { + return nil, fmt.Errorf("error parsing updated_at: %v", err) + } + } else { + user.UpdatedAt = time.Time{} + } return user, nil }