mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-05 19:20:12 +08:00
62 lines
1.3 KiB
JavaScript
62 lines
1.3 KiB
JavaScript
import jwt from 'jsonwebtoken'
|
|
import bcrypt from 'bcrypt'
|
|
import config from '../config.js'
|
|
import User from '../models/user.js'
|
|
|
|
export function hashPassword(password) {
|
|
return bcrypt.hash(password, 10)
|
|
}
|
|
|
|
export async function createTestUser() {
|
|
let user = await User.findOne({ username: 'testUser' })
|
|
if (!user) {
|
|
user = new User({
|
|
username: 'testUser',
|
|
email: 'test@example.com',
|
|
})
|
|
user.hashedPassword = await hashPassword('testPassword')
|
|
await user.save()
|
|
}
|
|
}
|
|
|
|
export async function defaultUser() {
|
|
let user = await User.findOne({ username: 'defaultUser' })
|
|
if (!user) {
|
|
user = new User({
|
|
username: 'defaultUser',
|
|
email: 'jackson@example.com',
|
|
})
|
|
await user.save()
|
|
}
|
|
return user
|
|
}
|
|
|
|
export function genJWT(payload) {
|
|
return new Promise((resolve, reject) => {
|
|
jwt.sign(
|
|
payload,
|
|
config.jwtSecret,
|
|
{ expiresIn: config.expiry },
|
|
(err, token) => {
|
|
if (err) {
|
|
reject(err)
|
|
} else {
|
|
resolve(token)
|
|
}
|
|
}
|
|
)
|
|
})
|
|
}
|
|
|
|
export function verifyJWT(token) {
|
|
return new Promise((resolve, reject) => {
|
|
jwt.verify(token, config.jwtSecret, (err, decoded) => {
|
|
if (err) {
|
|
reject(err)
|
|
} else {
|
|
resolve(decoded)
|
|
}
|
|
})
|
|
})
|
|
}
|