(email)
| 237 | return row ?? null; |
| 238 | }, |
| 239 | async getUserByEmail(email) { |
| 240 | const normalizedEmail = email?.toLowerCase() ?? ""; |
| 241 | const rows = await db |
| 242 | .select() |
| 243 | .from(users) |
| 244 | .where(eq(users.email, normalizedEmail)) |
| 245 | .limit(1) |
| 246 | .catch((e) => { |
| 247 | throw e; |
| 248 | }); |
| 249 | const row = rows[0]; |
| 250 | if (!row) return null; |
| 251 | |
| 252 | if ( |
| 253 | !(await hasLinkedAccount(db, row.id)) && |
| 254 | (await hasPendingProvisionedInvite(db, row.id, normalizedEmail)) |
| 255 | ) { |
| 256 | return null; |
| 257 | } |
| 258 | |
| 259 | return row; |
| 260 | }, |
| 261 | async getUserByAccount({ providerAccountId, provider }) { |
| 262 | const rows = await db |
| 263 | .select() |
no test coverage detected