diff options
| author | Adam Soltys <[email protected]> | 2023-02-06 16:48:13 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2023-02-06 16:48:13 -0800 |
| commit | 9c667055c6367e1b2e239686e72f52995679a47e (patch) | |
| tree | 0b1d4aee51ec2d4e92d08a9d1404ba4e2ecd462a /lib/auth.js | |
| parent | 15294844dbc8e73b4d1e92008a7eebc6b86b9ec5 (diff) | |
| parent | 6f5602d112b68adb7452abf3047f20c32e7725b6 (diff) | |
| download | coinos-server-9c667055c6367e1b2e239686e72f52995679a47e.tar.gz coinos-server-9c667055c6367e1b2e239686e72f52995679a47e.zip | |
Merge branch 'master' into test
Diffstat (limited to 'lib/auth.js')
| -rw-r--r-- | lib/auth.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/auth.js b/lib/auth.js new file mode 100644 index 00000000..9720cd83 --- /dev/null +++ b/lib/auth.js @@ -0,0 +1,37 @@ +import fastifyPassport from "@fastify/passport"; +import { g } from "$lib/db"; +import config from "$config"; +import jwt from "passport-jwt"; + +export const optional = { + preValidation: fastifyPassport.authenticate( + "jwt", + { session: false }, + function(req, res, err, user, info) { + req.user = user; + } + ) +}; + +export const auth = { + preValidation: fastifyPassport.authenticate("jwt", { + authInfo: false, + session: false + }) +}; + +export const requirePin = async ({ body, user }) => { + if (!user || (user.pin && user.pin !== body.pin)) + throw new Error("Invalid pin"); +}; + +export const jwtStrategy = new jwt.Strategy( + { + jwtFromRequest: jwt.ExtractJwt.fromExtractors([ + jwt.ExtractJwt.fromAuthHeaderAsBearerToken(), + req => (req.cookies ? req.cookies.token : null) + ]), + secretOrKey: config.jwt + }, + async (payload, next) => next(null, await g(`user:${payload.id}`)) +); |
