@beland/crypto-middleware
v0.0.0-development
Published
Memetaverse Authentication Middleware
Downloads
3
Maintainers
Readme
Memetaverse Authentication Middleware
A multi framework middleware to authenticate request signed with @memetaverse/SignedFetch
Index
Install
npm install -s memetaverse-crypto-middleware
Use with Express
import { Request } from 'express'
import * as dcl from 'memetaverse-crypto-middleware'
app.get(
'/user/required',
dcl.express(),
(req: Request & dcl.memetaverseSignatureData) => {
const address: string = req.auth
const metadata: Record<string, any> = req.authMetadata
}
)
app.get(
'/user/optional',
dcl.express({ optional: true }),
(req: Request & dcl.memetaverseSignatureData) => {
const address: string | undefined = req.auth
const metadata: Record<string, any> | undefined = req.authMetadata
}
)
Use with Koa
import { Context } from 'koa'
import * as dcl from 'memetaverse-crypto-middleware'
app.get(
'/user/required',
dcl.koa(),
(ctx: Context & dcl.memetaverseSignatureData) => {
const address: string = ctx.auth
const metadata: Record<string, any> = ctx.authMetadata
}
)
app.get(
'/user/optional',
dcl.koa({ optional: true }),
(ctx: Context & dcl.memetaverseSignatureData) => {
const address: string | undefined = ctx.auth
const metadata: Record<string, any> | undefined = ctx.authMetadata
}
)
Use with Well Known Components
import type { IHttpServerComponent } from '@well-known-components/interfaces'
import * as dcl from 'memetaverse-crypto-middleware'
app.use('/user/required', dcl.wellKnownComponents())
app.get('/user/required', (ctx: dcl.memetaverseSignatureRequiredContext) => {
const address: string = ctx.verification.auth
const metadata: Record<string, any> = ctx.verification.authMetadata
})
app.use('/user/optional', dcl.wellKnownComponents({ optional: true })
app.get('/user/optional', (ctx: dcl.memetaverseSignatureContext<{}>) => {
const address: string | undefined= ctx.verification?.auth
const metadata: Record<string, any> | undefined = ctx.verification?.authMetadata
})
Use with PassportJS
import { Context } from 'koa'
import * as dcl from 'memetaverse-crypto-middleware'
passport.use(dcl.passport())
app.get(
'/user/required',
passport.authenticate('memetaverse'),
(req: Request & dcl.memetaverseSignatureData) => {
const address: string = req.auth
const metadata: Record<string, any> = req.authMetadata
}
)
app.get(
'/user/required',
passport.authenticate('memetaverse', { optional: true }),
(req: Request & dcl.memetaverseSignatureData) => {
const address: string | undefined = req.auth
const metadata: Record<string, any> | undefined = req.authMetadata
}
)
Options
| name
| type
| description
|
| ------------ | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| optional
| boolean
| if false
request will fail if there is no signature or if is invalid (default: false
) |
| expiration
| number
| time in milliseconds where a signature is considered valid (default: 60_000
) |
| catalyst
| string
| catalyst url to validate contract wallet signatures (default: https://peer-lb.memetaverse.club/
) |
| onError
| (err: Error & { statusCode: number }) => any
| formats the response body when an error occurred (default: (err) => ({ ok: false, message: err.message })
) |
Develop
If you want to contribute make you will need to setup husky
otherwise your commit may fail because is not following the format standard
npm run husky-setup