protonfile-auth 1.3.0 → 1.4.0
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/lib/controllers/qr.js
CHANGED
|
@@ -27,10 +27,12 @@ const get = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
27
27
|
if (typeof request_id !== 'string') {
|
|
28
28
|
return res.sendStatus(400);
|
|
29
29
|
}
|
|
30
|
-
|
|
30
|
+
const handler = (user) => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
31
|
const token = yield (0, auth_1.performLogin)(req, res, user);
|
|
32
|
-
|
|
33
|
-
})
|
|
32
|
+
res.status(200).json(Object.assign(Object.assign({}, user), { token }));
|
|
33
|
+
});
|
|
34
|
+
emitter.on(request_id, handler);
|
|
35
|
+
req.on('close', () => emitter.removeListener(request_id, handler));
|
|
34
36
|
});
|
|
35
37
|
exports.get = get;
|
|
36
38
|
const post = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
|
package/lib/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { User } from './Entities/User';
|
|
|
6
6
|
import { Session } from './Entities/Session';
|
|
7
7
|
import { TempToken } from './Entities/TempToken';
|
|
8
8
|
import { TempTokenService } from './services/TempToken';
|
|
9
|
+
import SessionCleaner from './services/SessionCleaner';
|
|
9
10
|
declare const _default: {
|
|
10
11
|
router: (typeormConfig: ConnectionOptions) => import("express-serve-static-core").Router;
|
|
11
12
|
authMiddleware: (req: express.Request<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>, res: express.Response<any, Record<string, any>>, next: express.NextFunction) => Promise<void | express.Response<any, Record<string, any>>>;
|
|
@@ -16,6 +17,7 @@ declare const _default: {
|
|
|
16
17
|
};
|
|
17
18
|
services: {
|
|
18
19
|
TempTokenService: typeof TempTokenService;
|
|
20
|
+
SessionCleaner: typeof SessionCleaner;
|
|
19
21
|
};
|
|
20
22
|
};
|
|
21
23
|
export default _default;
|
package/lib/index.js
CHANGED
|
@@ -19,6 +19,7 @@ const User_1 = require("./Entities/User");
|
|
|
19
19
|
const Session_1 = require("./Entities/Session");
|
|
20
20
|
const TempToken_1 = require("./Entities/TempToken");
|
|
21
21
|
const TempToken_2 = require("./services/TempToken");
|
|
22
|
+
const SessionCleaner_1 = __importDefault(require("./services/SessionCleaner"));
|
|
22
23
|
exports.default = {
|
|
23
24
|
router: (typeormConfig) => {
|
|
24
25
|
(0, typeorm_1.createConnection)(Object.assign(Object.assign({}, typeormConfig), { entities: [User_1.User, Session_1.Session, TempToken_1.TempToken] }));
|
|
@@ -36,5 +37,5 @@ exports.default = {
|
|
|
36
37
|
},
|
|
37
38
|
authMiddleware: verifyToken_1.default,
|
|
38
39
|
entities: { User: User_1.User, Session: Session_1.Session, TempToken: TempToken_1.TempToken },
|
|
39
|
-
services: { TempTokenService: TempToken_2.TempTokenService },
|
|
40
|
+
services: { TempTokenService: TempToken_2.TempTokenService, SessionCleaner: SessionCleaner_1.default },
|
|
40
41
|
};
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
const jsonwebtoken_1 = require("jsonwebtoken");
|
|
15
|
+
class SessionCleaner {
|
|
16
|
+
constructor() { }
|
|
17
|
+
register(interval) {
|
|
18
|
+
this.handle = setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
const sessions = yield Session_1.Session.find();
|
|
20
|
+
for (const session of sessions) {
|
|
21
|
+
const decodedToken = (0, jsonwebtoken_1.decode)(session.token);
|
|
22
|
+
if (typeof decodedToken === 'string' || !decodedToken)
|
|
23
|
+
return;
|
|
24
|
+
const { exp } = decodedToken;
|
|
25
|
+
const expiration = exp ? exp * 1000 : 0;
|
|
26
|
+
const now = Date.now();
|
|
27
|
+
const isExpired = now > expiration;
|
|
28
|
+
if (isExpired)
|
|
29
|
+
Session_1.Session.remove(session);
|
|
30
|
+
}
|
|
31
|
+
}), interval || 60000);
|
|
32
|
+
}
|
|
33
|
+
unregister() {
|
|
34
|
+
if (!this.handle)
|
|
35
|
+
return;
|
|
36
|
+
clearInterval(this.handle);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.default = SessionCleaner;
|