protonfile-auth 1.6.4 → 1.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -18
- package/lib/Entities/OTP.d.ts +10 -10
- package/lib/Entities/OTP.js +48 -48
- package/lib/Entities/Session.d.ts +10 -10
- package/lib/Entities/Session.js +36 -36
- package/lib/Entities/TempToken.d.ts +5 -5
- package/lib/Entities/TempToken.js +22 -22
- package/lib/Entities/User.d.ts +9 -9
- package/lib/Entities/User.js +34 -34
- package/lib/controllers/change_password.d.ts +3 -3
- package/lib/controllers/change_password.js +59 -58
- package/lib/controllers/login.d.ts +3 -3
- package/lib/controllers/login.js +40 -40
- package/lib/controllers/logout.d.ts +3 -3
- package/lib/controllers/logout.js +26 -26
- package/lib/controllers/qr.d.ts +3 -3
- package/lib/controllers/qr.js +55 -55
- package/lib/controllers/refresh_token.d.ts +3 -3
- package/lib/controllers/refresh_token.js +43 -43
- package/lib/controllers/register.d.ts +3 -3
- package/lib/controllers/register.js +57 -58
- package/lib/controllers/registerOtp.d.ts +3 -3
- package/lib/controllers/registerOtp.js +30 -30
- package/lib/index.d.ts +31 -29
- package/lib/index.js +58 -58
- package/lib/middlewares/appendSessionCache.d.ts +4 -4
- package/lib/middlewares/appendSessionCache.js +7 -7
- package/lib/middlewares/appendUms.d.ts +4 -4
- package/lib/middlewares/appendUms.js +7 -7
- package/lib/middlewares/verifyToken.d.ts +4 -4
- package/lib/middlewares/verifyToken.js +34 -34
- package/lib/services/OTPVacuum.d.ts +7 -7
- package/lib/services/OTPVacuum.js +31 -31
- package/lib/services/SessionCache.d.ts +8 -8
- package/lib/services/SessionCache.js +25 -25
- package/lib/services/SessionCleaner.d.ts +7 -7
- package/lib/services/SessionCleaner.js +35 -35
- package/lib/services/TempToken.d.ts +12 -9
- package/lib/services/TempToken.js +47 -40
- package/lib/services/UMS.d.ts +12 -12
- package/lib/services/UMS.js +31 -31
- package/lib/services/auth.d.ts +8 -8
- package/lib/services/auth.js +60 -60
- package/lib/services/mail/index.d.ts +36 -36
- package/lib/services/mail/index.js +101 -101
- package/lib/services/mail/templates/default.d.ts +2 -2
- package/lib/services/mail/templates/default.js +268 -268
- package/lib/services/session.d.ts +10 -10
- package/lib/services/session.js +81 -81
- package/package.json +52 -46
package/lib/index.js
CHANGED
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
require("dotenv/config");
|
|
7
|
-
const express_1 = __importDefault(require("express"));
|
|
8
|
-
const register_1 = __importDefault(require("./controllers/register"));
|
|
9
|
-
const body_parser_1 = __importDefault(require("body-parser"));
|
|
10
|
-
const login_1 = __importDefault(require("./controllers/login"));
|
|
11
|
-
const verifyToken_1 = __importDefault(require("./middlewares/verifyToken"));
|
|
12
|
-
const refresh_token_1 = __importDefault(require("./controllers/refresh_token"));
|
|
13
|
-
const logout_1 = __importDefault(require("./controllers/logout"));
|
|
14
|
-
const qr_1 = require("./controllers/qr");
|
|
15
|
-
const change_password_1 = require("./controllers/change_password");
|
|
16
|
-
const cookie_parser_1 = __importDefault(require("cookie-parser"));
|
|
17
|
-
const typeorm_1 = require("typeorm");
|
|
18
|
-
const User_1 = require("./Entities/User");
|
|
19
|
-
const Session_1 = require("./Entities/Session");
|
|
20
|
-
const TempToken_1 = require("./Entities/TempToken");
|
|
21
|
-
const TempToken_2 = require("./services/TempToken");
|
|
22
|
-
const SessionCleaner_1 = __importDefault(require("./services/SessionCleaner"));
|
|
23
|
-
const OTP_1 = require("./Entities/OTP");
|
|
24
|
-
const OTPVacuum_1 = __importDefault(require("./services/OTPVacuum"));
|
|
25
|
-
const registerOtp_1 = __importDefault(require("./controllers/registerOtp"));
|
|
26
|
-
const SessionCache_1 = __importDefault(require("./services/SessionCache"));
|
|
27
|
-
const appendSessionCache_1 = __importDefault(require("./middlewares/appendSessionCache"));
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
router.use(
|
|
44
|
-
router.post('/register', register_1.default);
|
|
45
|
-
router.post('/register/otp', registerOtp_1.default);
|
|
46
|
-
router.post('/login', (0, cookie_parser_1.default)(), login_1.default);
|
|
47
|
-
router.post('/refresh_token', (0, cookie_parser_1.default)(), refresh_token_1.default);
|
|
48
|
-
router.post('/logout', appendSessionCache_1.default.bind(null, sessionCache), (0, cookie_parser_1.default)(), logout_1.default);
|
|
49
|
-
router.get('/qr', (0, cookie_parser_1.default)(), qr_1.get);
|
|
50
|
-
router.post('/qr', verifyToken_1.default.bind(null, sessionCache), qr_1.post);
|
|
51
|
-
router.get('/change_password/:email', change_password_1.get);
|
|
52
|
-
router.post('/change_password', change_password_1.post);
|
|
53
|
-
return router;
|
|
54
|
-
},
|
|
55
|
-
authMiddleware: verifyToken_1.default.bind(null, sessionCache),
|
|
56
|
-
entities: { User: User_1.User, Session: Session_1.Session, TempToken: TempToken_1.TempToken, OTP: OTP_1.OTP },
|
|
57
|
-
services: { TempTokenService: TempToken_2.TempTokenService, SessionCleaner: SessionCleaner_1.default, OTPVacuum: OTPVacuum_1.default, sessionCache },
|
|
58
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
require("dotenv/config");
|
|
7
|
+
const express_1 = __importDefault(require("express"));
|
|
8
|
+
const register_1 = __importDefault(require("./controllers/register"));
|
|
9
|
+
const body_parser_1 = __importDefault(require("body-parser"));
|
|
10
|
+
const login_1 = __importDefault(require("./controllers/login"));
|
|
11
|
+
const verifyToken_1 = __importDefault(require("./middlewares/verifyToken"));
|
|
12
|
+
const refresh_token_1 = __importDefault(require("./controllers/refresh_token"));
|
|
13
|
+
const logout_1 = __importDefault(require("./controllers/logout"));
|
|
14
|
+
const qr_1 = require("./controllers/qr");
|
|
15
|
+
const change_password_1 = require("./controllers/change_password");
|
|
16
|
+
const cookie_parser_1 = __importDefault(require("cookie-parser"));
|
|
17
|
+
const typeorm_1 = require("typeorm");
|
|
18
|
+
const User_1 = require("./Entities/User");
|
|
19
|
+
const Session_1 = require("./Entities/Session");
|
|
20
|
+
const TempToken_1 = require("./Entities/TempToken");
|
|
21
|
+
const TempToken_2 = require("./services/TempToken");
|
|
22
|
+
const SessionCleaner_1 = __importDefault(require("./services/SessionCleaner"));
|
|
23
|
+
const OTP_1 = require("./Entities/OTP");
|
|
24
|
+
const OTPVacuum_1 = __importDefault(require("./services/OTPVacuum"));
|
|
25
|
+
const registerOtp_1 = __importDefault(require("./controllers/registerOtp"));
|
|
26
|
+
const SessionCache_1 = __importDefault(require("./services/SessionCache"));
|
|
27
|
+
const appendSessionCache_1 = __importDefault(require("./middlewares/appendSessionCache"));
|
|
28
|
+
const appendUms_1 = __importDefault(require("./middlewares/appendUms"));
|
|
29
|
+
const UMS_1 = __importDefault(require("./services/UMS"));
|
|
30
|
+
const sessionCache = new SessionCache_1.default();
|
|
31
|
+
const ums = new UMS_1.default();
|
|
32
|
+
exports.default = {
|
|
33
|
+
router: (typeormConfig) => {
|
|
34
|
+
(0, typeorm_1.createConnection)(Object.assign(Object.assign({}, typeormConfig), { entities: [User_1.User, Session_1.Session, TempToken_1.TempToken, OTP_1.OTP] })).then((connection) => {
|
|
35
|
+
TempToken_1.TempToken.find().then((res) => {
|
|
36
|
+
for (const session of res) {
|
|
37
|
+
sessionCache.set(session.token, (session.expires - Date.now()) / 1000);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
const router = express_1.default.Router();
|
|
42
|
+
router.use(body_parser_1.default.urlencoded({ extended: false }));
|
|
43
|
+
router.use(appendUms_1.default.bind(null, ums));
|
|
44
|
+
router.post('/register', register_1.default);
|
|
45
|
+
router.post('/register/otp', registerOtp_1.default);
|
|
46
|
+
router.post('/login', (0, cookie_parser_1.default)(), login_1.default);
|
|
47
|
+
router.post('/refresh_token', (0, cookie_parser_1.default)(), refresh_token_1.default);
|
|
48
|
+
router.post('/logout', appendSessionCache_1.default.bind(null, sessionCache), (0, cookie_parser_1.default)(), logout_1.default);
|
|
49
|
+
router.get('/qr', (0, cookie_parser_1.default)(), qr_1.get);
|
|
50
|
+
router.post('/qr', verifyToken_1.default.bind(null, sessionCache), qr_1.post);
|
|
51
|
+
router.get('/change_password/:email', change_password_1.get);
|
|
52
|
+
router.post('/change_password', change_password_1.post);
|
|
53
|
+
return router;
|
|
54
|
+
},
|
|
55
|
+
authMiddleware: verifyToken_1.default.bind(null, sessionCache),
|
|
56
|
+
entities: { User: User_1.User, Session: Session_1.Session, TempToken: TempToken_1.TempToken, OTP: OTP_1.OTP },
|
|
57
|
+
services: { TempTokenService: TempToken_2.TempTokenService, SessionCleaner: SessionCleaner_1.default, OTPVacuum: OTPVacuum_1.default, sessionCache, ums },
|
|
58
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NextFunction, Request, Response } from 'express';
|
|
2
|
-
import SessionCache from '../services/SessionCache';
|
|
3
|
-
declare const appendSessionCache: (sessionCache: SessionCache, req: Request, _res: Response, next: NextFunction) => void;
|
|
4
|
-
export default appendSessionCache;
|
|
1
|
+
import { NextFunction, Request, Response } from 'express';
|
|
2
|
+
import SessionCache from '../services/SessionCache';
|
|
3
|
+
declare const appendSessionCache: (sessionCache: SessionCache, req: Request, _res: Response, next: NextFunction) => void;
|
|
4
|
+
export default appendSessionCache;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const appendSessionCache = (sessionCache, req, _res, next) => {
|
|
4
|
-
req.sessionCache = sessionCache;
|
|
5
|
-
next();
|
|
6
|
-
};
|
|
7
|
-
exports.default = appendSessionCache;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const appendSessionCache = (sessionCache, req, _res, next) => {
|
|
4
|
+
req.sessionCache = sessionCache;
|
|
5
|
+
next();
|
|
6
|
+
};
|
|
7
|
+
exports.default = appendSessionCache;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NextFunction, Request, Response } from 'express';
|
|
2
|
-
import UMS from '../services/UMS';
|
|
3
|
-
declare const appendUms: (ums: UMS, req: Request, _res: Response, next: NextFunction) => void;
|
|
4
|
-
export default appendUms;
|
|
1
|
+
import { NextFunction, Request, Response } from 'express';
|
|
2
|
+
import UMS from '../services/UMS';
|
|
3
|
+
declare const appendUms: (ums: UMS, req: Request, _res: Response, next: NextFunction) => void;
|
|
4
|
+
export default appendUms;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const appendUms = (ums, req, _res, next) => {
|
|
4
|
-
req.ums = ums;
|
|
5
|
-
next();
|
|
6
|
-
};
|
|
7
|
-
exports.default = appendUms;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const appendUms = (ums, req, _res, next) => {
|
|
4
|
+
req.ums = ums;
|
|
5
|
+
next();
|
|
6
|
+
};
|
|
7
|
+
exports.default = appendUms;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NextFunction, Request, Response } from 'express';
|
|
2
|
-
import SessionCache from '../services/SessionCache';
|
|
3
|
-
declare const _default: (cache: SessionCache, req: Request, res: Response, next: NextFunction) => Promise<void | Response<any, Record<string, any>>>;
|
|
4
|
-
export default _default;
|
|
1
|
+
import { NextFunction, Request, Response } from 'express';
|
|
2
|
+
import SessionCache from '../services/SessionCache';
|
|
3
|
+
declare const _default: (cache: SessionCache, req: Request, res: Response, next: NextFunction) => Promise<void | Response<any, Record<string, any>>>;
|
|
4
|
+
export default _default;
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
16
|
-
exports.default = (cache, req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
|
-
const config = process.env;
|
|
18
|
-
const token = req.body.token || req.query.token || req.headers['x-access-token'];
|
|
19
|
-
if (!token) {
|
|
20
|
-
return res.status(403).send('A token is required for authentication');
|
|
21
|
-
}
|
|
22
|
-
const decoded = jsonwebtoken_1.default.decode(token);
|
|
23
|
-
if (cache.has(decoded.session_id)) {
|
|
24
|
-
return res.status(401).send('Token expired');
|
|
25
|
-
}
|
|
26
|
-
try {
|
|
27
|
-
const decoded = jsonwebtoken_1.default.verify(token, config.ACCESS_TOKEN_KEY);
|
|
28
|
-
req.user = decoded;
|
|
29
|
-
}
|
|
30
|
-
catch (err) {
|
|
31
|
-
return res.status(401).send('Invalid Token');
|
|
32
|
-
}
|
|
33
|
-
return next();
|
|
34
|
-
});
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
16
|
+
exports.default = (cache, req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
|
+
const config = process.env;
|
|
18
|
+
const token = req.body.token || req.query.token || req.headers['x-access-token'];
|
|
19
|
+
if (!token) {
|
|
20
|
+
return res.status(403).send('A token is required for authentication');
|
|
21
|
+
}
|
|
22
|
+
const decoded = jsonwebtoken_1.default.decode(token);
|
|
23
|
+
if (cache.has(decoded.session_id)) {
|
|
24
|
+
return res.status(401).send('Token expired');
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const decoded = jsonwebtoken_1.default.verify(token, config.ACCESS_TOKEN_KEY);
|
|
28
|
+
req.user = decoded;
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
return res.status(401).send('Invalid Token');
|
|
32
|
+
}
|
|
33
|
+
return next();
|
|
34
|
+
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
declare class OTPVacuum {
|
|
2
|
-
private handle?;
|
|
3
|
-
constructor();
|
|
4
|
-
register(interval?: number): void;
|
|
5
|
-
unregister(): void;
|
|
6
|
-
}
|
|
7
|
-
export default OTPVacuum;
|
|
1
|
+
declare class OTPVacuum {
|
|
2
|
+
private handle?;
|
|
3
|
+
constructor();
|
|
4
|
+
register(interval?: number): void;
|
|
5
|
+
unregister(): void;
|
|
6
|
+
}
|
|
7
|
+
export default OTPVacuum;
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// removes expired OTP codes
|
|
3
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
9
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
|
-
});
|
|
11
|
-
};
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
const OTP_1 = require("../Entities/OTP");
|
|
14
|
-
const typeorm_1 = require("typeorm");
|
|
15
|
-
class OTPVacuum {
|
|
16
|
-
constructor() { }
|
|
17
|
-
register(interval) {
|
|
18
|
-
this.handle = setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
|
19
|
-
const res = yield OTP_1.OTP.query('select extract(epoch from now())::int as timestamp');
|
|
20
|
-
if (!res[0] || !res[0].timestamp)
|
|
21
|
-
return;
|
|
22
|
-
OTP_1.OTP.delete({ expiration: (0, typeorm_1.LessThan)(res[0].timestamp) });
|
|
23
|
-
}), interval || 60000);
|
|
24
|
-
}
|
|
25
|
-
unregister() {
|
|
26
|
-
if (!this.handle)
|
|
27
|
-
return;
|
|
28
|
-
clearInterval(this.handle);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.default = OTPVacuum;
|
|
1
|
+
"use strict";
|
|
2
|
+
// removes expired OTP codes
|
|
3
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
9
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
const OTP_1 = require("../Entities/OTP");
|
|
14
|
+
const typeorm_1 = require("typeorm");
|
|
15
|
+
class OTPVacuum {
|
|
16
|
+
constructor() { }
|
|
17
|
+
register(interval) {
|
|
18
|
+
this.handle = setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
const res = yield OTP_1.OTP.query('select extract(epoch from now())::int as timestamp');
|
|
20
|
+
if (!res[0] || !res[0].timestamp)
|
|
21
|
+
return;
|
|
22
|
+
OTP_1.OTP.delete({ expiration: (0, typeorm_1.LessThan)(res[0].timestamp) });
|
|
23
|
+
}), interval || 60000);
|
|
24
|
+
}
|
|
25
|
+
unregister() {
|
|
26
|
+
if (!this.handle)
|
|
27
|
+
return;
|
|
28
|
+
clearInterval(this.handle);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.default = OTPVacuum;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import NodeCache from 'node-cache';
|
|
2
|
-
declare class SessionCache {
|
|
3
|
-
cache: NodeCache;
|
|
4
|
-
constructor();
|
|
5
|
-
set(session: string, ttl: number): boolean;
|
|
6
|
-
has(session: string): boolean;
|
|
7
|
-
}
|
|
8
|
-
export default SessionCache;
|
|
1
|
+
import NodeCache from 'node-cache';
|
|
2
|
+
declare class SessionCache {
|
|
3
|
+
cache: NodeCache;
|
|
4
|
+
constructor();
|
|
5
|
+
set(session: string, ttl: number): boolean;
|
|
6
|
+
has(session: string): boolean;
|
|
7
|
+
}
|
|
8
|
+
export default SessionCache;
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const node_cache_1 = __importDefault(require("node-cache"));
|
|
7
|
-
const TempToken_1 = require("../Entities/TempToken");
|
|
8
|
-
class SessionCache {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.cache = new node_cache_1.default();
|
|
11
|
-
}
|
|
12
|
-
set(session, ttl) {
|
|
13
|
-
const tempToken = new TempToken_1.TempToken();
|
|
14
|
-
tempToken.token = session;
|
|
15
|
-
tempToken.expires = Date.now() + (15 * 60000 + 0);
|
|
16
|
-
tempToken
|
|
17
|
-
.save()
|
|
18
|
-
.catch((err) => console.log('Error while persisting session', err));
|
|
19
|
-
return this.cache.set(session, undefined, ttl);
|
|
20
|
-
}
|
|
21
|
-
has(session) {
|
|
22
|
-
return this.cache.has(session);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
exports.default = SessionCache;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_cache_1 = __importDefault(require("node-cache"));
|
|
7
|
+
const TempToken_1 = require("../Entities/TempToken");
|
|
8
|
+
class SessionCache {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.cache = new node_cache_1.default();
|
|
11
|
+
}
|
|
12
|
+
set(session, ttl) {
|
|
13
|
+
const tempToken = new TempToken_1.TempToken();
|
|
14
|
+
tempToken.token = session;
|
|
15
|
+
tempToken.expires = Date.now() + (15 * 60000 + 0);
|
|
16
|
+
tempToken
|
|
17
|
+
.save()
|
|
18
|
+
.catch((err) => console.log('Error while persisting session', err));
|
|
19
|
+
return this.cache.set(session, undefined, ttl);
|
|
20
|
+
}
|
|
21
|
+
has(session) {
|
|
22
|
+
return this.cache.has(session);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.default = SessionCache;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
declare class SessionCleaner {
|
|
2
|
-
private handle?;
|
|
3
|
-
constructor();
|
|
4
|
-
register(interval?: number): void;
|
|
5
|
-
unregister(): void;
|
|
6
|
-
}
|
|
7
|
-
export default SessionCleaner;
|
|
1
|
+
declare class SessionCleaner {
|
|
2
|
+
private handle?;
|
|
3
|
+
constructor();
|
|
4
|
+
register(interval?: number): void;
|
|
5
|
+
unregister(): void;
|
|
6
|
+
}
|
|
7
|
+
export default SessionCleaner;
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// removes expired sessions
|
|
3
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
9
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
|
-
});
|
|
11
|
-
};
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
const Session_1 = require("../Entities/Session");
|
|
14
|
-
class SessionCleaner {
|
|
15
|
-
constructor() { }
|
|
16
|
-
register(interval) {
|
|
17
|
-
this.handle = setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
|
18
|
-
const sessions = yield Session_1.Session.find();
|
|
19
|
-
for (const session of sessions) {
|
|
20
|
-
const exp = parseInt(session.last_used);
|
|
21
|
-
const expiration = exp ? exp * 1000 : 0;
|
|
22
|
-
const now = Date.now();
|
|
23
|
-
const isExpired = now > expiration;
|
|
24
|
-
if (isExpired)
|
|
25
|
-
Session_1.Session.remove(session);
|
|
26
|
-
}
|
|
27
|
-
}), interval || 60000);
|
|
28
|
-
}
|
|
29
|
-
unregister() {
|
|
30
|
-
if (!this.handle)
|
|
31
|
-
return;
|
|
32
|
-
clearInterval(this.handle);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
exports.default = SessionCleaner;
|
|
1
|
+
"use strict";
|
|
2
|
+
// removes expired sessions
|
|
3
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
9
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
const Session_1 = require("../Entities/Session");
|
|
14
|
+
class SessionCleaner {
|
|
15
|
+
constructor() { }
|
|
16
|
+
register(interval) {
|
|
17
|
+
this.handle = setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
const sessions = yield Session_1.Session.find();
|
|
19
|
+
for (const session of sessions) {
|
|
20
|
+
const exp = parseInt(session.last_used);
|
|
21
|
+
const expiration = exp ? exp * 1000 : 0;
|
|
22
|
+
const now = Date.now();
|
|
23
|
+
const isExpired = now > expiration;
|
|
24
|
+
if (isExpired)
|
|
25
|
+
Session_1.Session.remove(session);
|
|
26
|
+
}
|
|
27
|
+
}), interval || 60000);
|
|
28
|
+
}
|
|
29
|
+
unregister() {
|
|
30
|
+
if (!this.handle)
|
|
31
|
+
return;
|
|
32
|
+
clearInterval(this.handle);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.default = SessionCleaner;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { TempToken } from '../Entities/TempToken';
|
|
2
|
-
export declare class TempTokenService {
|
|
3
|
-
token: string;
|
|
4
|
-
expires: number;
|
|
5
|
-
private tempToken;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { TempToken } from '../Entities/TempToken';
|
|
2
|
+
export declare class TempTokenService {
|
|
3
|
+
token: string;
|
|
4
|
+
expires: number;
|
|
5
|
+
private tempToken;
|
|
6
|
+
private interval;
|
|
7
|
+
constructor(token: string, expires: number);
|
|
8
|
+
invalidate(): Promise<TempToken>;
|
|
9
|
+
isValid(): Promise<boolean>;
|
|
10
|
+
close(): void;
|
|
11
|
+
setExpiration(exp: number): void;
|
|
12
|
+
}
|
|
@@ -1,40 +1,47 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.TempTokenService = void 0;
|
|
13
|
-
const TempToken_1 = require("../Entities/TempToken");
|
|
14
|
-
const typeorm_1 = require("typeorm");
|
|
15
|
-
class TempTokenService {
|
|
16
|
-
constructor(token, expires) {
|
|
17
|
-
this.token = token;
|
|
18
|
-
this.expires = expires;
|
|
19
|
-
this.tempToken = new TempToken_1.TempToken();
|
|
20
|
-
this.tempToken.token = this.token;
|
|
21
|
-
this.tempToken.expires = this.expires;
|
|
22
|
-
setInterval(() => {
|
|
23
|
-
const timestamp = +new Date();
|
|
24
|
-
TempToken_1.TempToken.delete({ expires: (0, typeorm_1.LessThan)(timestamp) });
|
|
25
|
-
}, 600 * 1000);
|
|
26
|
-
}
|
|
27
|
-
invalidate() {
|
|
28
|
-
return this.tempToken.save();
|
|
29
|
-
}
|
|
30
|
-
isValid() {
|
|
31
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
-
const found = yield TempToken_1.TempToken.findOne({ token: this.token });
|
|
33
|
-
if (found) {
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
return true;
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.TempTokenService = void 0;
|
|
13
|
+
const TempToken_1 = require("../Entities/TempToken");
|
|
14
|
+
const typeorm_1 = require("typeorm");
|
|
15
|
+
class TempTokenService {
|
|
16
|
+
constructor(token, expires) {
|
|
17
|
+
this.token = token;
|
|
18
|
+
this.expires = expires;
|
|
19
|
+
this.tempToken = new TempToken_1.TempToken();
|
|
20
|
+
this.tempToken.token = this.token;
|
|
21
|
+
this.tempToken.expires = this.expires;
|
|
22
|
+
this.interval = setInterval(() => {
|
|
23
|
+
const timestamp = +new Date();
|
|
24
|
+
TempToken_1.TempToken.delete({ expires: (0, typeorm_1.LessThan)(timestamp) });
|
|
25
|
+
}, 600 * 1000);
|
|
26
|
+
}
|
|
27
|
+
invalidate() {
|
|
28
|
+
return this.tempToken.save();
|
|
29
|
+
}
|
|
30
|
+
isValid() {
|
|
31
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
const found = yield TempToken_1.TempToken.findOne({ where: { token: this.token } });
|
|
33
|
+
if (found) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
return true;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
close() {
|
|
40
|
+
clearInterval(this.interval);
|
|
41
|
+
}
|
|
42
|
+
setExpiration(exp) {
|
|
43
|
+
this.expires = exp;
|
|
44
|
+
this.tempToken.expires = exp;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.TempTokenService = TempTokenService;
|
package/lib/services/UMS.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import TypedEmitter from 'typed-emitter';
|
|
2
|
-
declare type EmitterEvents = {
|
|
3
|
-
register: (payload: any) => void;
|
|
4
|
-
change_password: (payload: any) => void;
|
|
5
|
-
};
|
|
6
|
-
declare type Events = 'register' | 'change_password';
|
|
7
|
-
declare const UMS_base: new () => TypedEmitter<EmitterEvents>;
|
|
8
|
-
declare class UMS extends UMS_base {
|
|
9
|
-
constructor();
|
|
10
|
-
send(type: Events, payload: any): void;
|
|
11
|
-
}
|
|
12
|
-
export default UMS;
|
|
1
|
+
import TypedEmitter from 'typed-emitter';
|
|
2
|
+
declare type EmitterEvents = {
|
|
3
|
+
register: (payload: any) => void;
|
|
4
|
+
change_password: (payload: any) => void;
|
|
5
|
+
};
|
|
6
|
+
declare type Events = 'register' | 'change_password';
|
|
7
|
+
declare const UMS_base: new () => TypedEmitter<EmitterEvents>;
|
|
8
|
+
declare class UMS extends UMS_base {
|
|
9
|
+
constructor();
|
|
10
|
+
send(type: Events, payload: any): void;
|
|
11
|
+
}
|
|
12
|
+
export default UMS;
|