mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-06 03:20:13 +08:00
fix: wrap all async controller with error handler
* add validations to newCommand
This commit is contained in:
1 parent
1af85651b8
commit
c2dac8d385
13 files changed
+120
-120
No files matched your search
@@ -1,8 +1,9 @@
|
||||
import { matchedData } from 'express-validator'
|
||||
import { User } from '@linux-odyssey/models'
|
||||
import { genJWT, hashPassword } from '../../utils/auth.js'
|
||||
import { asyncHandler } from '../../middleware/error.js'
|
||||
|
||||
export async function issueToken(req, res) {
|
||||
export const issueToken = asyncHandler(async (req, res) => {
|
||||
const { user } = req
|
||||
const token = await genJWT({
|
||||
_id: user.id,
|
||||
@@ -10,34 +11,27 @@ export async function issueToken(req, res) {
|
||||
email: user.email,
|
||||
})
|
||||
res.json({ token })
|
||||
}
|
||||
})
|
||||
|
||||
export async function register(req, res, next) {
|
||||
export const register = asyncHandler(async (req, res, next) => {
|
||||
const { username, password, email } = matchedData(req)
|
||||
|
||||
const user = new User({
|
||||
username,
|
||||
email,
|
||||
})
|
||||
try {
|
||||
user.hashedPassword = await hashPassword(password)
|
||||
await user.save()
|
||||
req.login(user, (err) => {
|
||||
if (err) {
|
||||
next(err)
|
||||
return
|
||||
}
|
||||
res.status(201).json({
|
||||
message: 'user created',
|
||||
})
|
||||
user.hashedPassword = await hashPassword(password)
|
||||
await user.save()
|
||||
req.login(user, (err) => {
|
||||
if (err) {
|
||||
next(err)
|
||||
return
|
||||
}
|
||||
res.status(201).json({
|
||||
message: 'user created',
|
||||
})
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
res.status(500).json({
|
||||
message: 'error registering user',
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
export function logout(req, res) {
|
||||
req.logout((err) => {
|
||||
@@ -60,7 +54,7 @@ export function checkSession(req, res) {
|
||||
})
|
||||
}
|
||||
|
||||
export async function socialLogin(req, res) {
|
||||
export function socialLogin(req, res) {
|
||||
const { newUser } = req.user
|
||||
if (newUser) {
|
||||
req.session.newUser = newUser
|
||||
@@ -70,7 +64,7 @@ export async function socialLogin(req, res) {
|
||||
res.redirect('/')
|
||||
}
|
||||
|
||||
export async function registerFromSession(req, res) {
|
||||
export const registerFromSession = asyncHandler(async (req, res, next) => {
|
||||
const { username } = matchedData(req)
|
||||
const { newUser } = req.session
|
||||
|
||||
@@ -88,10 +82,7 @@ export async function registerFromSession(req, res) {
|
||||
|
||||
req.login(user, (err) => {
|
||||
if (err) {
|
||||
console.error(err)
|
||||
res.status(500).json({
|
||||
message: 'error logging in',
|
||||
})
|
||||
next(err)
|
||||
return
|
||||
}
|
||||
delete req.session.newUser
|
||||
@@ -99,4 +90,4 @@ export async function registerFromSession(req, res) {
|
||||
message: 'user created',
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
Reference in new issue
Block a user