translate to sqlite3 userdb (working)
This commit is contained in:
parent
ce215a4efb
commit
d867ecf5b1
|
@ -1,18 +1,24 @@
|
|||
import passport from 'passport'
|
||||
import { Strategy as localStrategy } from 'passport-local'
|
||||
import { User, UserModel } from '../model/model.mjs'
|
||||
import { User, UserModel, encryptPwd, pwdIsValid } from '../model/model.mjs'
|
||||
import { Strategy as JWTstrategy, ExtractJwt } from 'passport-jwt'
|
||||
import { userDb } from '../db.mjs'
|
||||
|
||||
passport.use('signup', new localStrategy(
|
||||
{
|
||||
usernameField: 'email',
|
||||
usernameField: 'username',
|
||||
passwordField: 'password'
|
||||
},
|
||||
async (email, password, done) => {
|
||||
async (username, password, done) => {
|
||||
console.log("signup auth strategy has begun")
|
||||
try {
|
||||
const user = await UserModel.create({ email, password })
|
||||
// const user = await UserModel.create({ email, password })
|
||||
const encryptedPwd = await encryptPwd(password)
|
||||
const user = await userDb("users").insert({ username: username, password: encryptedPwd }).returning(["username", "password"])
|
||||
console.log(`user: ${user}`)
|
||||
return done(null, user)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
done(err)
|
||||
}
|
||||
}))
|
||||
|
@ -20,20 +26,23 @@ passport.use('signup', new localStrategy(
|
|||
passport.use('login',
|
||||
new localStrategy(
|
||||
{
|
||||
usernameField: "email",
|
||||
usernameField: "username",
|
||||
passwordField: "password",
|
||||
session: false
|
||||
},
|
||||
async (email, password, done) => {
|
||||
console.log("local strategy called")
|
||||
try {
|
||||
const user: User = await UserModel.findOne({ email })
|
||||
// const user: User = await UserModel.findOne({ email })
|
||||
let returnedUser: Array<User> = await userDb("users").select("username", "password").where({ username: email })
|
||||
const user: User = returnedUser[0]
|
||||
console.log(`user: ${user}`)
|
||||
if (!user) {
|
||||
if (!user || returnedUser.length === 0) {
|
||||
return done(null, false, { message: "user not found" })
|
||||
}
|
||||
|
||||
const validate: boolean = await user.isValidPassword(password)
|
||||
// const validate: boolean = await user.isValidPassword(password)
|
||||
const validate: boolean = await pwdIsValid(password, user)
|
||||
console.log(`isValidPassword? ${validate}`)
|
||||
|
||||
if (!validate) {
|
||||
|
|
7
db.mts
7
db.mts
|
@ -16,6 +16,13 @@ export const testDb = knex({
|
|||
useNullAsDefault: true
|
||||
})
|
||||
|
||||
export const userDb = knex({
|
||||
client: "sqlite3",
|
||||
connection: {
|
||||
filename: "./users"
|
||||
},
|
||||
useNullAsDefault: true
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@ import express from "express"
|
|||
import mongoose from "mongoose"
|
||||
import passport from "passport"
|
||||
import bodyParser from "body-parser"
|
||||
|
||||
import { UserModel } from "./model/model.mjs"
|
||||
import { db } from "./db.mjs"
|
||||
import { default as routes } from "./routes/routes.mjs"
|
||||
import { default as secureRoute } from "./routes/secure-routes.mjs"
|
||||
import "./auth/auth.mjs"
|
||||
|
|
|
@ -37,5 +37,17 @@ export interface User {
|
|||
|
||||
export const UserModel = mongoose.model("user", UserSchema)
|
||||
|
||||
export interface User {
|
||||
username: string;
|
||||
password: string;
|
||||
}
|
||||
|
||||
export async function encryptPwd(pwd: string) {
|
||||
return Promise.resolve(bcrypt.hash(pwd, 10))
|
||||
}
|
||||
|
||||
export async function pwdIsValid(pwd: string, user: User): Promise<boolean> {
|
||||
return Promise.resolve(bcrypt.compare(pwd, user.password))
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
"typescript": "^5.4.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/knex": "^0.16.1",
|
||||
"bcrypt": "^5.1.1",
|
||||
"body-parser": "^1.20.2",
|
||||
"express": "^4.19.2",
|
||||
|
@ -28,6 +29,7 @@
|
|||
"mongoose": "^8.4.0",
|
||||
"passport": "^0.7.0",
|
||||
"passport-jwt": "^4.0.1",
|
||||
"passport-local": "^1.0.0"
|
||||
"passport-local": "^1.0.0",
|
||||
"sqlite3": "^5.1.7"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ router.post(
|
|||
async (error) => {
|
||||
if (error) return next(error);
|
||||
|
||||
const body = { _id: user._id, email: user.email };
|
||||
const body = { _id: user._id, username: user.username };
|
||||
const token = jwt.sign({ user: body }, 'TOP_SECRET', { expiresIn: "20m" });
|
||||
|
||||
return res.json({ token });
|
||||
|
|
BIN
submissions
BIN
submissions
Binary file not shown.
Loading…
Reference in New Issue