From aecbc3c01412311db21999aef84fbd26e82be027 Mon Sep 17 00:00:00 2001 From: Matt Baer Date: Fri, 9 Nov 2018 21:55:35 -0500 Subject: [PATCH] Support fuzzy username matching on login This allows logging in with a non-normalized username. --- database.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/database.go b/database.go index 590c5b0..8f16266 100644 --- a/database.go +++ b/database.go @@ -289,6 +289,14 @@ func (db *datastore) GetUserForAuth(username string) (*User, error) { err := db.QueryRow("SELECT id, password, email, created FROM users WHERE username = ?", username).Scan(&u.ID, &u.HashedPass, &u.Email, &u.Created) switch { case err == sql.ErrNoRows: + // Check if they've entered the wrong, unnormalized username + username = getSlug(username, "") + if username != u.Username { + err = db.QueryRow("SELECT id FROM users WHERE username = ? LIMIT 1", username).Scan(&u.ID) + if err == nil { + return db.GetUserForAuth(username) + } + } return nil, ErrUserNotFound case err != nil: log.Error("Couldn't SELECT user password: %v", err)