Knex Masto Auth
Mastodon authentication using a knex instance for data persistance. Automatically registers a client with previously unknown instances and persists them to your database for future use.
import KnexMastoAuth, { migrate } from 'knex-masto-auth';
import Knex from 'knex';
// Bring your own knex instance
const db = new Knex({
client: 'sqlite3',
connection: {
filename: './db.sqlite3',
},
});
// Create the database tables if they're absent (idempotent operation)
await migrate(db);
// Get the instance of MastoAuth
const auth = new KnexMastoAuth(db, {
clientName: 'My App',
redirectUri: 'http://my-app.example/exchange-token'
});
// Example server - for full details of how to use the `auth` instance, see the [masto-auth library](https://gitlab.com/paulkiddle/masto-auth#module_masto-auth.default)
export default async (req, res) => {
const { pathname, searchParams } = new URL('file://' + req.url);
if(pathname === '/login') {
// Get the instance to login to, e.g. through form submission
const instance = searchParams.get('instance') || 'https://kith.kitchen';
// Get the redirect URL - this will also handle issuer lookup and client registration if needed
const instanceAuthPage = await auth.getRedirectUrl(instance);
// Redirect to instance log in page
res.setHeader('location', instanceAuthPage);
res.statusCode = 303;
res.end();
} else if(pathname === '/exchange-token') {
// User will be redirected here after authentication
// Get the user info and do what you want with it
res.end(JSON.stringify(await auth.getUserFromCallback(req)))
} else {
res.statusCode = 404;
res.end('Not found');
}
}
Dependencies
knex-masto-auth
Knex Masto Auth
See: default
-
knex-masto-auth
- static
-
inner
- ~ClientOptions
-
~CatchError :
function
- ~Knex
- ~MastoAuth
knex-masto-auth.default
Kind: static class of knex-masto-auth
new module.exports(knex, clientOptions)
Create a new instance of KnexMastoAuth
Param | Type | Description |
---|---|---|
knex | Knex |
Instance of the Knex library |
clientOptions | Object |
Client options |
[options.catchError] | function |
Optional function to call when an error occurs in the client registration process |
[options.tableName] | function |
Name of the sql table to use to store mastodon client data. Defaults to 'mastodon_clients' |
MastoAuth
default.migrate(knex) ⇒ Create the storage table if it doesn't exist and return a new instance of KnexMastoAuth
Kind: static method of default
Param | Type | Description |
---|---|---|
knex | Knex |
Instance of the Knex library |
[options.catchError] | function |
Optional function to call when an error occurs in the client registration process |
[options.tableName] | function |
Name of the sql table to use to store mastodon client data. Defaults to 'mastodon_clients' |
knex-masto-auth.migrate()
Create the storage table if it doesn't exist
Kind: static method of knex-masto-auth
See: module:knex-masto-auth.default#migrate
knex-masto-auth~ClientOptions
Kind: inner typedef of knex-masto-auth
Param | Type | Description |
---|---|---|
redirectUri | string |
The URI to redirect the user to after they have authenticated on their mastodon instance. |
clientName | string |
The name of your application |
function
knex-masto-auth~CatchError : Kind: inner typedef of knex-masto-auth
Param | Type | Description |
---|---|---|
error | Error |
The error that occured |
url | string |
The issuer URL that the error occured for |
knex-masto-auth~Knex
Instance of the knex library
Kind: inner external of knex-masto-auth
See: https://knexjs.org/
knex-masto-auth~MastoAuth
Instance of the MastoAuth library
Kind: inner external of knex-masto-auth
See: https://gitlab.com/paulkiddle/masto-auth#module_masto-auth.default