From 97acde7b999ca8f1316fe9063e45d2de92f166e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karl=20D=C3=BC=C3=BCna?= Date: Tue, 14 Apr 2015 18:37:20 +0300 Subject: [PATCH] Add easy-session types --- easy-session/easy-session-tests.ts | 63 ++++++++++++++++++++++++++++++ easy-session/easy-session.d.ts | 41 +++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 easy-session/easy-session-tests.ts create mode 100644 easy-session/easy-session.d.ts diff --git a/easy-session/easy-session-tests.ts b/easy-session/easy-session-tests.ts new file mode 100644 index 0000000000..2053b634c3 --- /dev/null +++ b/easy-session/easy-session-tests.ts @@ -0,0 +1,63 @@ +/// +/// +/// + +import express = require('express'); +import session = require('express-session'); +import cookieParser = require('cookie-parser'); +import easySession = require('easy-session'); // Require the module : line 1 + +var app = express(); + +app.use(cookieParser('secreet')); +app.use(session({ + secret: 'keyboard cat', + resave: false, + saveUninitialized: true +})); +app.use(easySession.main(session)); + +app.get('/login', function (req, res, next) { + req.session.login('user', {email: 'email'}, function (err) { + if(err) { + res.send(500); + return; + } + res.send(200); + }); +}); + +app.post('/logout', function (req, res, next) { + req.session.logout(function (err) { + if(err) { + res.send(500); + return; + } + res.send(200); + }); +}); + +app.get('/isloggedin', function (req, res, next) { + res.send(req.session.isLoggedIn('user')); +}); + +app.get('/isfresh', function (req, res, next) { + res.send(req.session.isFresh()); +}); + +app.get('/hasrole', function (req, res, next) { + res.send(req.session.hasRole('user')); +}); + +app.post('/setrole', function (req, res, next) { + req.session.setRole(req.query.role); + res.send(200); +}); + +app.get('/getrole', function (req, res, next) { + res.send(req.session.getRole()); +}); + +app.use(easySession.isLoggedIn()); +app.use(easySession.isFresh()); +app.use(easySession.checkRole('user')); \ No newline at end of file diff --git a/easy-session/easy-session.d.ts b/easy-session/easy-session.d.ts new file mode 100644 index 0000000000..3be11d2eaf --- /dev/null +++ b/easy-session/easy-session.d.ts @@ -0,0 +1,41 @@ +// Type definitions for easy-session +// Project: https://github.com/DeadAlready/node-easy-session +// Definitions by: Karl Düüna +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module Express { + interface ErrorCallback { + (err?: any): void; + } + export interface Session { + login(callback: Function); + login(extend: Object, callback: ErrorCallback); + login(role: string, callback: ErrorCallback); + login(role: string, extend: Object, callback: ErrorCallback); + logout(callback: ErrorCallback): void; + isLoggedIn(role?: string): boolean; + isGuest(): boolean; + isFresh(): boolean; + setRole(role: string): Session; + getRole(): string; + hasRole(role: string): boolean; + } +} + +declare module "easy-session" { + import express = require('express'); + + interface SessionOptions { + ipCheck?: boolean; + uaCheck?: boolean; + freshTimeout?: number; + maxFreshTimeout?: number; + } + + export function main(session: any, options?: SessionOptions): express.RequestHandler; + export function isLoggedIn(errorCallback?: Function): express.RequestHandler; + export function isFresh(errorCallback?: Function): express.RequestHandler; + export function checkRole(role: string, errorCallback?: Function): express.RequestHandler; +} \ No newline at end of file