mirror of
https://github.com/nvms/prsm.git
synced 2025-12-16 00:00:52 +00:00
87 lines
2.1 KiB
Markdown
87 lines
2.1 KiB
Markdown
# express-session-auth
|
|
|
|
## Requirements
|
|
|
|
- `express-session`: https://github.com/expressjs/session
|
|
- `cookie-parser`: https://github.com/expressjs/cookie-parser
|
|
- TypeORM
|
|
- `express-session-auth` exports entities (`User`, `UserReset`, `UserRemember`, `UserConfirmation`) that you need to include in your datasource for migration/sync purposes.
|
|
|
|
|
|
## Quickstart
|
|
|
|
Wherever you create your express application, include the auth middleware and pass in your TypeORM datasource.
|
|
|
|
```typescript
|
|
import express from "express";
|
|
import { createServer } from "node:http";
|
|
import auth from "@prsm/express-session-auth";
|
|
import datasource from "./my-datasource";
|
|
|
|
const app = express();
|
|
const server = createServer(app);
|
|
|
|
// the auth middleware needs your datasource instance
|
|
app.use(auth({ datasource }));
|
|
```
|
|
|
|
Here's an example TypeORM datasource:
|
|
|
|
```typescript
|
|
// my-datasource.ts
|
|
import {
|
|
User,
|
|
UserConfirmation,
|
|
UserRemember,
|
|
UserReset,
|
|
} from "@prsm/express-session-auth";
|
|
import { DataSource } from "typeorm";
|
|
|
|
const datasource = new DataSource({
|
|
type: "mysql", // express-session-auth supports mysql, postgres and sqlite (others not tested)
|
|
host: process.env.DB_HOST,
|
|
port: process.env.DB_PORT ? +process.env.DB_PORT : 3306,
|
|
username: process.env.DB_USER,
|
|
password: process.env.DB_PASSWORD,
|
|
database: process.env.DB_NAME,
|
|
entities: [
|
|
User,
|
|
UserConfirmation,
|
|
UserRemember,
|
|
UserReset,
|
|
/* the reset of your entities here */
|
|
],
|
|
});
|
|
|
|
export default datasource;
|
|
```
|
|
|
|
Environment variables and their defaults:
|
|
|
|
```bash
|
|
HTTP_PORT=3002
|
|
|
|
AUTH_SESSION_REMEMBER_DURATION=30d
|
|
AUTH_SESSION_REMEMBER_COOKIE_NAME=prsm.auth.remember
|
|
AUTH_SESSION_RESYNC_INTERVAL=30m
|
|
AUTH_MINIMUM_PASSWORD_LENGTH=8
|
|
AUTH_MAXIMUM_PASSWORD_LENGTH=64
|
|
|
|
DB_HOST=localhost
|
|
DB_PORT=3306
|
|
DB_USERNAME=root
|
|
DB_PASSWORD=toor
|
|
DB_NAME=prsm
|
|
```
|
|
|
|
Because this middleware augments the `Request` object by adding an `auth` property, you will want to add the following to your `tsconfig.json` so that your language server doesn't flag references to `req.auth` as an error:
|
|
|
|
```json
|
|
{
|
|
"include": [
|
|
"src",
|
|
"node_modules/@prsm/express-session-auth/express-session-auth.d.ts"
|
|
]
|
|
}
|
|
```
|