summaryrefslogtreecommitdiff
path: root/src/utils.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils.clj')
-rwxr-xr-xsrc/utils.clj12
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)]