# unic

> 'unic' is a node.js session manager with some advanced features like *one session by user*, *remote disconnect*,..

Latest version **0.1.5** (published 2015-02-28) · GNU GPL v2 license · 0 weekly downloads

## Install

```sh
npm install unic
pnpm add unic
yarn add unic
bun add unic
```

## 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.5 |
| Published | 2015-02-28 |
| First published | 2015-02-28 |
| Weekly downloads | 0 |
| License | GNU GPL v2 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Samir ROUABHI |
| Maintainers | rouabhi |
| Keywords | Session, Remote disconnect |

## Links

- npm: https://www.npmjs.com/package/unic
- Repository: git@bitbucket.org:cloudestin/unic
- npm.io page: https://npm.io/package/unic

## Dependencies (3)

- [qamoos](https://npm.io/package/qamoos.md) *
- [varserver](https://npm.io/package/varserver.md) *
- [varsession](https://npm.io/package/varsession.md) *

## Alternatives

- [@clerk/clerk-expo](https://npm.io/package/@clerk/clerk-expo.md) — 133.6K weekly downloads
- [@pothos/plugin-authz](https://npm.io/package/@pothos/plugin-authz.md) — 12.4K weekly downloads
- [@bounded-sh/client](https://npm.io/package/@bounded-sh/client.md) — 3.2K weekly downloads
- [@luigi-project/plugin-auth-oauth2](https://npm.io/package/@luigi-project/plugin-auth-oauth2.md) — 2.3K weekly downloads
- [@nocobase/plugin-verification](https://npm.io/package/@nocobase/plugin-verification.md) — 2.0K weekly downloads

## Recent versions

- 0.1.5 (latest) — 2015-02-28

## README

# unic #

**unic** is a _node.js_ session manager with some advanced features like one session by user, remote disconnect,...

## How does it work ##
**unic** is a server side session manager. Frontend/backend communication is done using HTTP. **unic** permits to:

- register a user (but does not check password, this should be done elsewhere) and create a session to store credentials.
- It permits to autorize only ONE session simultanously for a user. If you try to open a second session from another browser, you will get an error message.
- You can chose to force login and disconnect remotly the user from other location.
- Close the session and abandon all data stored in it.
- You can chose a language for error messages. Currently english(en, default language) and french (fr) are supported but other languages can easily be added. This is done using internationalisation package **qamoos**. As language is stored as a session variable, you should activate session management by using **express-session** middleware.

Almost all the actions return an object in the form of {err: errorCode, msg : message} 

## Example of use ##
**app.js**
```javascript
var express = require('express');
var app = express();
var expressSession = require('express-session');
var uniC = require('uniC');

app.use( expressSession({secret:'mySecretKey', cookie: { maxAge: 60000 }, resave:false, saveUninitialized:true}) );

// getLogin gives the current connected login.
function getLogin(req,res){
    res.status(200).json(uniC(req).getLogin() || null).end();
}

// get the value stored in the session  (this could be any objet containing useful information about the user or the session, timestamp,..)
function getStoredValue(req,res){
    res.status(200).json(uniC(req).get()).end();
}

// signin and store a value in the session
function signin(req,res){
    var force = !!parseInt(req.params.force);
    res.status(200).json(uniC(req).signin( req.params.login , force , {} )).end();
}

function signout(req,res){
    uniC(req).signout();
}

// guard is currently similar to getLogin
function guard(req,res){
    res.status(200).json(uniC(req).guard()).end();
}

// change the current language for this session.
// All qamoos in this session will switch to the new language
function lang(req,res){
    uniC(req).lang(req.params.lang);
}

```

The third argument of the ```signin``` method is any object that will be stored in the session. It can be obtained with the .get() method.

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