diff options
| author | sostler <sbostler@gmail.com> | 2010-04-12 04:24:16 -0400 |
|---|---|---|
| committer | sostler <sbostler@gmail.com> | 2010-04-12 04:24:16 -0400 |
| commit | c87fa8b63e7715e59e9fe45b3004bfc8615ce5b9 (patch) | |
| tree | 216071b4f8b2029d16cb8c924f0635906b44096f /src/utils.clj | |
| parent | 5587ef8a9b45ba7c969df2643ab1baa2591e2be4 (diff) | |
Made usernames/roomnames case insensitive
Diffstat (limited to 'src/utils.clj')
| -rwxr-xr-x | src/utils.clj | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/utils.clj b/src/utils.clj index 3e77710..ea696e5 100755 --- a/src/utils.clj +++ b/src/utils.clj @@ -122,7 +122,10 @@ ;; User authentication -; TODO: move to user module +; TODO: create user module + +(defn first-or-nil [l] + (if (empty? l) nil (first l))) (def nick-regex #"^[A-Za-z0-9\-_∆˚†]*$") @@ -136,8 +139,11 @@ (> (count (do-select [query (lower-case nick)])) 0))) (defn fetch-nick [nick] - (let [query "SELECT * FROM users WHERE nick = ? LIMIT 1"] - (first (do-select [query nick])))) + (let [q1 "SELECT * FROM users WHERE nick = ? LIMIT 1" + ; ORDER BY ensures consistent retrieval of ambiguious names + q2 "SELECT * FROM users WHERE lower(nick) = ? ORDER BY nick LIMIT 1"] + (or (first-or-nil (do-select [q1 nick])) + (first-or-nil (do-select [q2 (lower-case nick)]))))) (defn authorize-nick-hash [nick hash] (let [db-user (fetch-nick nick)] |
