40 lines
1.0 KiB
JavaScript
40 lines
1.0 KiB
JavaScript
import { rest } from 'msw'
|
|
import { db } from '@db/auth/db'
|
|
|
|
export const handlerAuth = [
|
|
rest.post(('/api/auth/login'), async (req, res, ctx) => {
|
|
const { email, password } = await req.json()
|
|
let errors = {
|
|
email: ['Something went wrong'],
|
|
}
|
|
const user = db.users.find(u => u.email === email && u.password === password)
|
|
if (user) {
|
|
try {
|
|
const accessToken = db.userTokens[user.id]
|
|
|
|
// We are duplicating user here
|
|
const userData = { ...user }
|
|
|
|
const userOutData = Object.fromEntries(Object.entries(userData)
|
|
.filter(([key, _]) => !(key === 'password' || key === 'abilityRules')))
|
|
|
|
const response = {
|
|
userAbilityRules: userData.abilityRules,
|
|
accessToken,
|
|
userData: userOutData,
|
|
}
|
|
|
|
return res(ctx.status(200), ctx.json(response))
|
|
}
|
|
catch (e) {
|
|
errors = { email: [e] }
|
|
}
|
|
}
|
|
else {
|
|
errors = { email: ['Invalid email or password'] }
|
|
}
|
|
|
|
return res(ctx.status(400), ctx.json({ errors }))
|
|
}),
|
|
]
|