# express-session-resolver

> the module makes enable to read session ID which is generated from Express-Session.

Latest version **0.1.2** (published 2020-06-10) · MIT license · 0 weekly downloads

## Install

```sh
npm install express-session-resolver
pnpm add express-session-resolver
yarn add express-session-resolver
bun add express-session-resolver
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.2 |
| Published | 2020-06-10 |
| First published | 2020-06-10 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 41.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Boi Brando |
| Maintainers | patravor |
| Keywords | express, session, socketio |

## Links

- npm: https://www.npmjs.com/package/express-session-resolver
- Repository: https://github.com/cessial6/express-session-resolver
- Homepage: https://github.com/cessial6/express-session-resolver#readme
- Issues: https://github.com/cessial6/express-session-resolver/issues
- npm.io page: https://npm.io/package/express-session-resolver

## Dependencies (2)

- [cookie-parser](https://npm.io/package/cookie-parser.md) ^1.4.4
- [promise-mysql](https://npm.io/package/promise-mysql.md) ^3.3.1

## Alternatives

- [@opentelemetry/exporter-zipkin](https://npm.io/package/@opentelemetry/exporter-zipkin.md) — 14.8M weekly downloads
- [pusher-js](https://npm.io/package/pusher-js.md) — 2.0M weekly downloads
- [browserify](https://npm.io/package/browserify.md) — 1.7M weekly downloads
- [sqs-consumer](https://npm.io/package/sqs-consumer.md) — 1.7M weekly downloads
- [@sanity/eventsource](https://npm.io/package/@sanity/eventsource.md) — 930.8K weekly downloads

## Recent versions

- 0.1.2 (latest) — 2020-06-10

## README

# express-session-resolver
This module makes you to get session-id from the cookie which the id is generated by express-session.

### Requirement
 - using [express-session](https://github.com/expressjs/session)
 - stored the session MySQL Server by [express-mysql-session](https://github.com/chill117/express-mysql-session)

### Usecase
Suppose that they have 2 same domain's servers, Socket IO's sever is able to authenticate reauests the by cookie which is generated from the express server. express-session-resolver convert cookie to session-id, and queries to MySQL server.   
![usecase](./res/express-session-resolver.png)

### How to use
```shell
npm install express-session-resolver
```

then,
```js
const Resolver = require('express-session-resolver');
const resolver = new Resolver({
    mysql: {
        host: "your my sql server's host",
        port: "the port",
        user: "the user",
        password: "the password",
        database: "the database name"
    },
    name: "cookie name", 
    secret: "secret"
});

// --------------------------------
// For example, Socket IO's server
// At 1st, you can use middleware for auth. 
const authMiddleware = function() {

    return async function(socket, next) {
        
        const noCookies = !socket.handshake.headers || !socket.handshake.headers.cookie

        if (noCookies) {
            next(new Error('Auth error'))
            return
        }

        const session = await resolver
            .findSession(socket.handshake.headers.cookie)
            .catch(()=>null)

        if (session) {
            next()
        } else {
            next(new Error('Auth error (not match)'))
        }
    }
}
// add it as a middleware 
io.use(authMiddleware())

// --------------------------------
// For example, express server
app.get("/secret-page", function(req, res, next){
    resolver.findSession(req.headers.cookie)
    .then(result=>{
        res.send(result[0].session_id);
    })
})
```

---
_Source: https://npm.io/package/express-session-resolver · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
