Skip to content

Commit

Permalink
fix: update look up queries and update error messages
Browse files Browse the repository at this point in the history
  • Loading branch information
donaldp committed Feb 23, 2025
1 parent ad606f9 commit 27b112d
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 12 deletions.
11 changes: 7 additions & 4 deletions src/Auth/Auth.imba
Original file line number Diff line number Diff line change
Expand Up @@ -53,21 +53,24 @@ class Auth
let property = 'username'

if dbIdentifier === 'email'
user = await Database.table(dbTable).where('email', body.email).first!
user = await Database.table(dbTable).whereRaw('LOWER(email) = LOWER(?)', [body.email]).first!

property = 'email'

elif dbIdentifier === 'username'
user = await Database.table(dbTable).where('username', body.username).first!
user = await Database.table(dbTable).whereRaw('LOWER(username) = LOWER(?)', [body.username]).first!
elif dbIdentifier === 'username-email'
user = await Database.table(dbTable).where('username', body.username).orWhere('email', body.username).first!
user = await Database.table(dbTable)
.whereRaw('LOWER(username) = LOWER(?)', [body.username])
.orWhereRaw('LOWER(email) = LOWER(?)', [body.username])
.first!

if user && await Hash.check(body.password, user.password)
return user

throw ValidationException.withMessages({
[property]: [
'Invalid credentials'
"Invalid {dbIdentifier === 'email' ? 'Email' : 'Username'} or password."
]
})

Expand Down
16 changes: 8 additions & 8 deletions src/Auth/Drivers/Driver.imba
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ export default class Driver

isValid.forEach do(field)
errors[field] = [
"The {field} is already taken."
"The {field} is invalid or has already taken."
]

throw ValidationException.withMessages(errors)
Expand All @@ -300,22 +300,22 @@ export default class Driver

if dbIdentifier == 'email'
const results = await Database.table(dbTable)
.where('email', body.email)
.whereRaw('LOWER(email) = LOWER(?)', [body.email])
.count!

return ['email'] if results[0]['count(*)'] > 0
return ['email'] if results[0]['count(*)'] > 0 || results[0]['count'] > 0

else
const [ emailResults, usernameResults ] = await Promise.all([
Database.table(dbTable).where('email', body.email).count!,
Database.table(dbTable).where('username', body.username).count!
Database.table(dbTable).whereRaw('LOWER(email) = LOWER(?)', [body.email]).count!,
Database.table(dbTable).whereRaw('LOWER(username) = LOWER(?)', [body.username]).count!
])

let fields = []

if emailResults[0]['count(*)'] > 0
if emailResults[0]['count(*)'] > 0 || emailResults[0]['count'] > 0
fields.push('email')
elif usernameResults[0]['count(*)'] > 0
elif usernameResults[0]['count(*)'] > 0 || usernameResults[0]['count'] > 0
fields.push('username')

return fields if fields.length > 0
Expand Down Expand Up @@ -352,7 +352,7 @@ export default class Driver

def findUser body\object
return await Database.table(self.getProvider.table)
.where('email', body.email)
.whereRaw('LOWER(email) = LOWER(?)', [body.email])
.first!

def verificationUrl user\object
Expand Down

0 comments on commit 27b112d

Please sign in to comment.