An easy to use authentication system that can easily be built in to your Express + HBS web apps. Currently only supports local authentication, however will hopefully support Google/Apple/Facebook/etc auth in the future.
npm i --save yoauth
- Import the
Client
constructor from yoauth, then create an instance of it and pass in an object for the client options. -
// server.js const { Client } = require('yoauth'); const client = new Client(require('./options.js').options); // Options = {...} const express = require('express'); const app = express(); client.configureServer(app); app.get('/', client.ensureAuth, (req, res) => { res.render('dashboard', {user: req.user}); }); app.listen(3000);
- mongoUri: (String)
required
: URI for connecting to MongoDB. - sessionSecret: (String)
required
: Secret for express session. - path: (String)
optional
: Router location of login/signup pages/files/routes.- Default:
-
"/auth"
- background: (String)
optional
: Background for login/signup pages.- Default:
-
"#F78D91"
- buttonBackground: (String)
optional
: Button background for login/signup pages.- Default:
-
"#4664E9"
- authRedirect: (String)
optional
: Where the user is redirected when authorized.- Default:
-
"/"
- loginFile: (Pathlike String)
optional
: Location of rendered file when logging in.- Default:
-
`${__dirname}/../client/login.hbs` // note: This is relative to node_modules/yoauth/dist/client.ts
- signupFile: (Pathlike String)
optional
: Location of rendered file when registering.- Default:
-
`${__dirname}/../client/signup.hbs` // note: This is relative to node_modules/yoauth/dist/client.ts
- signupCustomFields: (Array)
optional
: All custom fields that are rendered when registering.- Default:
-
[{ label: "Full Name", name: "fullname", type: "string", placeholder: "John Doe" }]```
- userModel: (Object)
optional
: The user model that will be created/searched when authorizing.- Default:
-
{ name: "user", // name passed to mongo.model(name, Schema, ...args) schema: new mongoose.Schema({ email: String, fullname: String, password: String, }, { timestamps: true }), // schema passed to mongo.model(name, Schema, ...args) args: [] // args passed to mongo.model(name, Schema, ...args) }
- mongoOptions: (Object)
optional
: Options passed tomongoose.createConnection(uri, options);
- Default:
-
{}
- signupCallback: (Function)
optional
: Function executed on POST at{path}/signup
- Function Params:
req
: express.Requestres
: express.Responseoptions
: Object:auth
: yoauth.Client
- Default: See src/local/signup.ts
- Function Params:
- loginCallback: (Function)
optional
: Function executed on POST at{path}/login
- Function Params:
req
: express.Requestres
: express.Responseoptions
: Object:auth
: yoauth.Clientpassport
: passport
- Default: See src/local/login.ts
- Function Params:
Licensed under the MIT license.