diff options
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)] |
