Socket
Socket
Sign inDemoInstall

@constlab/vesper-jwt-auth

Package Overview
Dependencies
19
Maintainers
3
Versions
10
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.0.6 to 0.0.7

tslint.json

6

.vscode/settings.json
{
"typescript.tsdk": "node_modules/typescript/lib",
"typescript.format.insertSpaceAfterConstructor": true,
"prettier.printWidth": 100,
"typescript.tsdk": "node_modules/typescript/lib",
"typescript.format.insertSpaceAfterConstructor": true
"prettier.trailingComma": "all",
"prettier.arrowParens": "always"
}

@@ -0,3 +1,3 @@

import { Request } from "express";
import { IAuthResult } from "./service/AuthService";
import { Request } from "express";
export declare class AuthController {

@@ -4,0 +4,0 @@ private request;

@@ -15,4 +15,4 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
const typedi_1 = require("typedi");
const vesper_1 = require("vesper");
const typedi_1 = require("typedi");
const AuthService_1 = require("./service/AuthService");

@@ -25,3 +25,3 @@ let AuthController = class AuthController {

}
//@ArgsValidator(LoginArgsValidator)
// @ArgsValidator(LoginArgsValidator)
async login({ email, password }) {

@@ -40,3 +40,3 @@ return this.auth.sign(email, password, this.userAgent);

vesper_1.Mutation({ name: "authLogin" })
//@ArgsValidator(LoginArgsValidator)
// @ArgsValidator(LoginArgsValidator)
,

@@ -55,6 +55,6 @@ __metadata("design:type", Function),

vesper_1.Controller(),
__param(0, typedi_1.Inject(type => vesper_1.CurrentRequest)),
__param(0, typedi_1.Inject(() => vesper_1.CurrentRequest)),
__metadata("design:paramtypes", [Object])
], AuthController);
exports.AuthController = AuthController;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0aENvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQXV0aENvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBNkU7QUFDN0UsbUNBQWdDO0FBQ2hDLHVEQUFpRTtBQUlqRSxJQUFhLGNBQWMsR0FBM0IsTUFBYSxjQUFjO0lBSzFCLFlBQW9ELE9BQWdCO1FBQWhCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFGNUQsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUc5QixJQUFJLENBQUMsU0FBUyxHQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBWSxJQUFJLG9CQUFvQixDQUFDO0lBQ3pGLENBQUM7SUFJRCxBQURBLG9DQUFvQztJQUNwQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBdUM7UUFDbkUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBR0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBcUI7UUFDekMsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztDQUNELENBQUE7QUFqQkE7SUFEQyxlQUFNLEVBQUU7OEJBQ00seUJBQVc7NENBQUM7QUFTM0I7SUFGQyxpQkFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLG9DQUFvQzs7Ozs7MkNBR25DO0FBR0Q7SUFEQyxpQkFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDOzs7OzZDQUdqQztBQWxCVyxjQUFjO0lBRDFCLG1CQUFVLEVBQUU7SUFNQyxXQUFBLGVBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHVCQUFjLENBQUMsQ0FBQTs7R0FML0IsY0FBYyxDQW1CMUI7QUFuQlksd0NBQWMifQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0aENvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQXV0aENvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFDQSxtQ0FBZ0M7QUFDaEMsbUNBQThEO0FBQzlELHVEQUFpRTtBQUdqRSxJQUFhLGNBQWMsR0FBM0IsTUFBYSxjQUFjO0lBSzFCLFlBQWtELE9BQWdCO1FBQWhCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFGMUQsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUc5QixJQUFJLENBQUMsU0FBUyxHQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBWSxJQUFJLG9CQUFvQixDQUFDO0lBQ3pGLENBQUM7SUFJRCxBQURBLHFDQUFxQztJQUNyQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBdUM7UUFDbkUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBR0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBcUI7UUFDekMsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztDQUNELENBQUE7QUFqQkE7SUFEQyxlQUFNLEVBQUU7OEJBQ00seUJBQVc7NENBQUM7QUFTM0I7SUFGQyxpQkFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLHFDQUFxQzs7Ozs7MkNBR3BDO0FBR0Q7SUFEQyxpQkFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDOzs7OzZDQUdqQztBQWxCVyxjQUFjO0lBRDFCLG1CQUFVLEVBQUU7SUFNQyxXQUFBLGVBQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyx1QkFBYyxDQUFDLENBQUE7O0dBTDdCLGNBQWMsQ0FtQjFCO0FBbkJZLHdDQUFjIn0=

@@ -14,6 +14,6 @@ "use strict";

AuthModule.config = {
accessToken: { expiresIn: "30m" },
refreshToken: { expiresIn: "60d", maxSavedTokens: 10 },
accessToken: { expiresIn: "30m" }
};
exports.AuthModule = AuthModule;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0aE1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9BdXRoTW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EscURBQWtEO0FBQ2xELHlDQUFzQztBQUN0Qyx1REFBb0Q7QUFZcEQsTUFBYSxVQUFVO0lBQXZCO1FBTUMsWUFBTyxHQUFHLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxDQUFDO1FBQ3hDLGdCQUFXLEdBQUcsQ0FBQywrQkFBYyxFQUFFLGlDQUFlLENBQUMsQ0FBQztRQUNoRCxhQUFRLEdBQUcsQ0FBQyxhQUFLLENBQUMsQ0FBQztJQUNwQixDQUFDOztBQVJPLGlCQUFNLEdBQWdCO0lBQzVCLFlBQVksRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRTtJQUN0RCxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFO0NBQ2pDLENBQUM7QUFKSCxnQ0FTQyJ9
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0aE1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9BdXRoTW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EscURBQWtEO0FBQ2xELHlDQUFzQztBQUN0Qyx1REFBb0Q7QUFZcEQsTUFBYSxVQUFVO0lBQXZCO1FBTUMsWUFBTyxHQUFHLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxDQUFDO1FBQ3hDLGdCQUFXLEdBQUcsQ0FBQywrQkFBYyxFQUFFLGlDQUFlLENBQUMsQ0FBQztRQUNoRCxhQUFRLEdBQUcsQ0FBQyxhQUFLLENBQUMsQ0FBQztJQUNwQixDQUFDOztBQVJPLGlCQUFNLEdBQWdCO0lBQzVCLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7SUFDakMsWUFBWSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFO0NBQ3RELENBQUM7QUFKSCxnQ0FTQyJ9

@@ -0,15 +1,15 @@

import { IJWTPayload } from "./IJWTPayload";
import { IUser } from "./IUser";
import { IJWTPayload } from "./IJWTPayload";
export declare abstract class User implements IUser {
readonly jwtPayload: IJWTPayload;
id: string;
email: string;
name: string;
role: string;
createdAt?: Date;
updatedAt: Date;
protected _password: string;
password: string;
role: string;
readonly jwtPayload: IJWTPayload;
createdAt: Date;
updatedAt: Date;
updateName(): void;
checkPassword(password: string): boolean;
}

@@ -20,14 +20,14 @@ "use strict";

const bcrypt = __importStar(require("bcryptjs"));
const class_validator_1 = require("class-validator");
const typeorm_1 = require("typeorm");
const class_validator_1 = require("class-validator");
class User {
set password(password) {
this._password = bcrypt.hashSync(password.trim(), bcrypt.genSaltSync(10));
}
get jwtPayload() {
return {
id: this.id,
role: this.role
role: this.role,
};
}
set password(password) {
this._password = bcrypt.hashSync(password.trim(), bcrypt.genSaltSync(10));
}
updateName() {

@@ -58,6 +58,2 @@ let name = this.email.split("@")[0];

__decorate([
typeorm_1.Column({ name: "password" }),
__metadata("design:type", String)
], User.prototype, "_password", void 0);
__decorate([
typeorm_1.Column({ default: "user", length: 50 }),

@@ -75,2 +71,8 @@ __metadata("design:type", String)

__decorate([
typeorm_1.Column({ name: "password" })
// tslint:disable-next-line:variable-name
,
__metadata("design:type", String)
], User.prototype, "_password", void 0);
__decorate([
typeorm_1.BeforeInsert(),

@@ -82,2 +84,2 @@ __metadata("design:type", Function),

exports.User = User;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlL1VzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQW1DO0FBRW5DLHFDQU9pQjtBQUNqQixxREFBcUQ7QUFHckQsTUFBc0IsSUFBSTtJQWdCekIsSUFBSSxRQUFRLENBQUMsUUFBZ0I7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUtELElBQUksVUFBVTtRQUNiLE9BQU87WUFDTixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDZixDQUFDO0lBQ0gsQ0FBQztJQVNELFVBQVU7UUFDVCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxhQUFhLENBQUMsUUFBZ0I7UUFDN0IsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckQsQ0FBQztDQUNEO0FBNUNBO0lBRkMsdUJBQWEsRUFBRTtJQUNmLG1CQUFTLENBQUMsTUFBTSxDQUFDOztnQ0FDTjtBQUtaO0lBSEMsZ0JBQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4QiwyQkFBUyxFQUFFO0lBQ1gseUJBQU8sRUFBRTs7bUNBQ0s7QUFHZjtJQURDLGdCQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7O2tDQUNiO0FBR2Q7SUFEQyxnQkFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDOzt1Q0FDQTtBQU83QjtJQURDLGdCQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQzs7a0NBQzFCO0FBVWQ7SUFEQywwQkFBZ0IsRUFBRTs4QkFDUCxJQUFJO3VDQUFDO0FBR2pCO0lBREMsMEJBQWdCLEVBQUU7OEJBQ1AsSUFBSTt1Q0FBQztBQUdqQjtJQURDLHNCQUFZLEVBQUU7Ozs7c0NBTWQ7QUExQ0Ysb0JBK0NDIn0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlL1VzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQW1DO0FBQ25DLHFEQUFxRDtBQUNyRCxxQ0FPaUI7QUFJakIsTUFBc0IsSUFBSTtJQUN6QixJQUFJLFVBQVU7UUFDYixPQUFPO1lBQ04sRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2YsQ0FBQztJQUNILENBQUM7SUEyQkQsSUFBSSxRQUFRLENBQUMsUUFBZ0I7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUdELFVBQVU7UUFDVCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxhQUFhLENBQUMsUUFBZ0I7UUFDN0IsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckQsQ0FBQztDQUNEO0FBdENBO0lBRkMsdUJBQWEsRUFBRTtJQUNmLG1CQUFTLENBQUMsTUFBTSxDQUFDOztnQ0FDTjtBQUtaO0lBSEMsZ0JBQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4QiwyQkFBUyxFQUFFO0lBQ1gseUJBQU8sRUFBRTs7bUNBQ0s7QUFHZjtJQURDLGdCQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7O2tDQUNiO0FBR2Q7SUFEQyxnQkFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7O2tDQUMxQjtBQUdkO0lBREMsMEJBQWdCLEVBQUU7OEJBQ1AsSUFBSTt1Q0FBQztBQUdqQjtJQURDLDBCQUFnQixFQUFFOzhCQUNQLElBQUk7dUNBQUM7QUFJakI7SUFGQyxnQkFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQzdCLHlDQUF5Qzs7O3VDQUNaO0FBTzdCO0lBREMsc0JBQVksRUFBRTs7OztzQ0FNZDtBQTNDRixvQkFnREMifQ==

@@ -6,2 +6,5 @@ import { Action } from "vesper";

export * from "./base/User";
export * from "./base/IJWTPayload";
export * from "./base/IUser";
export * from "./base/IUserRepository";
/**

@@ -8,0 +11,0 @@ * - JWT authorization check

@@ -36,3 +36,3 @@ "use strict";

}
const token = action.request.headers["token"] || "";
const token = action.request.headers.token || "";
if (token === "") {

@@ -42,3 +42,3 @@ throw new Error("The token not provided");

const payload = jwt.verify(token, typedi_1.default.get("salt"));
if (roles.length && !roles.includes(payload["role"])) {
if (roles.length && !roles.includes(payload.role)) {
throw new Error("Access denied");

@@ -51,2 +51,2 @@ }

exports.jwtAuthorizationCheck = jwtAuthorizationCheck;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQW9DO0FBQ3BDLG9EQUErQjtBQUsvQixrQ0FBNkI7QUFDN0Isc0NBQWlDO0FBQ2pDLDJDQUFzQztBQUN0QyxpQ0FBNEI7QUFFNUI7Ozs7Ozs7OztHQVNHO0FBQ0ksS0FBSyxVQUFVLHFCQUFxQixDQUFDLEtBQWUsRUFBRSxNQUFjO0lBQzFFLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUU7UUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0tBQzVDO0lBQ0QsTUFBTSxLQUFLLEdBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFZLElBQUksRUFBRSxDQUFDO0lBQ3hFLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRTtRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7S0FDMUM7SUFFRCxNQUFNLE9BQU8sR0FBc0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsZ0JBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUU1RSxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFO1FBQ3JELE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDakM7SUFFRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBa0IsaUJBQWlCLENBQUMsQ0FBQztJQUM1RSxNQUFNLElBQUksR0FBRyxNQUFNLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMzRSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQWxCRCxzREFrQkMifQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQW9DO0FBQ3BDLG9EQUErQjtBQUsvQixrQ0FBNkI7QUFDN0Isc0NBQWlDO0FBQ2pDLDJDQUFzQztBQUN0QyxpQ0FBNEI7QUFLNUI7Ozs7Ozs7OztHQVNHO0FBQ0ksS0FBSyxVQUFVLHFCQUFxQixDQUFDLEtBQWUsRUFBRSxNQUFjO0lBQzFFLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUU7UUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0tBQzVDO0lBQ0QsTUFBTSxLQUFLLEdBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBZ0IsSUFBSSxFQUFFLENBQUM7SUFDckUsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztLQUMxQztJQUVELE1BQU0sT0FBTyxHQUFzQixHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxnQkFBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBRTVFLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2xELE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDakM7SUFFRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBa0IsaUJBQWlCLENBQUMsQ0FBQztJQUM1RSxNQUFNLElBQUksR0FBRyxNQUFNLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMzRSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQWxCRCxzREFrQkMifQ==
export declare class Token {
id: string;
client: string;
token: string;
createdAt: Date;
userId: string;
id?: string;
client?: string;
token?: string;
createdAt?: Date;
userId?: string;
}

@@ -0,4 +1,4 @@

import { DeleteResult, EntityManager } from "typeorm";
import { IUser } from "../base/IUser";
import { Token } from "../model/Token";
import { EntityManager, DeleteResult } from "typeorm";
export interface IAuthResult {

@@ -5,0 +5,0 @@ accessToken: string;

@@ -21,5 +21,5 @@ "use strict";

const typedi_1 = __importStar(require("typedi"));
const typeorm_1 = require("typeorm");
const __1 = require("..");
const Token_1 = require("../model/Token");
const typeorm_1 = require("typeorm");
let AuthService = class AuthService {

@@ -46,6 +46,6 @@ constructor(salt = typedi_1.default.get("salt"), config = __1.AuthModule.config, entityManager) {

const refreshToken = jwt.sign({ id: user.id }, this.salt, {
expiresIn: this.config.refreshToken.expiresIn
expiresIn: this.config.refreshToken.expiresIn,
});
const accessToken = jwt.sign(user.jwtPayload, this.salt, {
expiresIn: this.config.accessToken.expiresIn
expiresIn: this.config.accessToken.expiresIn,
});

@@ -56,3 +56,3 @@ await this.saveToken(user, userAgent, refreshToken);

refreshToken,
user
user,
};

@@ -72,10 +72,10 @@ }

const user = await this.userRepository.findOneOrFail({
id: userId
id: userId,
});
const storedToken = await this.entityManager.findOne(Token_1.Token, {
where: {
client: userAgent,
token,
userId,
token,
client: userAgent
}
},
});

@@ -86,6 +86,6 @@ if (storedToken === null) {

const refreshToken = jwt.sign({ id: user.id }, this.salt, {
expiresIn: this.config.refreshToken.expiresIn
expiresIn: this.config.refreshToken.expiresIn,
});
const accessToken = jwt.sign({ id: user.id, name: user.name, role: user.role }, this.salt, {
expiresIn: this.config.accessToken.expiresIn
expiresIn: this.config.accessToken.expiresIn,
});

@@ -96,3 +96,3 @@ await this.saveToken(user, userAgent, refreshToken);

refreshToken,
user
user,
};

@@ -114,4 +114,4 @@ }

client: userAgent,
userId: user.id.toString()
}
userId: user.id.toString(),
},
});

@@ -122,9 +122,7 @@ if (savedToken !== undefined) {

}
else {
const newToken = new Token_1.Token();
newToken.client = userAgent;
newToken.token = refreshToken;
newToken.userId = user.id.toString();
return await this.entityManager.save(Token_1.Token, newToken);
}
const newToken = new Token_1.Token();
newToken.client = userAgent;
newToken.token = refreshToken;
newToken.userId = user.id.toString();
return await this.entityManager.save(Token_1.Token, newToken);
}

@@ -140,3 +138,3 @@ /**

return await this.entityManager.delete(Token_1.Token, {
userId: user.id.toString()
userId: user.id.toString(),
});

@@ -154,3 +152,3 @@ }

const tokensCount = await this.entityManager.count(Token_1.Token, {
where: { userId: user.id.toString() }
where: { userId: user.id.toString() },
});

@@ -171,2 +169,2 @@ if (tokensCount + 1 >= this.config.refreshToken.maxSavedTokens) {

exports.AuthService = AuthService;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0aFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZS9BdXRoU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBb0M7QUFDcEMsaURBQW9EO0FBRXBELDBCQUFnQztBQUdoQywwQ0FBdUM7QUFDdkMscUNBQXNEO0FBU3RELElBQWEsV0FBVyxHQUF4QixNQUFhLFdBQVc7SUFJdkIsWUFDUyxPQUFlLGdCQUFTLENBQUMsR0FBRyxDQUFTLE1BQU0sQ0FBQyxFQUM1QyxTQUFTLGNBQVUsQ0FBQyxNQUFNLEVBQzFCLGFBQTRCO1FBRjVCLFNBQUksR0FBSixJQUFJLENBQXdDO1FBQzVDLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQ2xDLENBQUM7SUFFSjs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBYSxFQUFFLFFBQWdCLEVBQUUsWUFBb0IsRUFBRTtRQUNqRSxNQUFNLElBQUksR0FBVSxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDbEM7UUFDRCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3pELFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTO1NBQzdDLENBQUMsQ0FBQztRQUNILE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJ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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0aFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZS9BdXRoU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBb0M7QUFDcEMsaURBQW9EO0FBQ3BELHFDQUFzRDtBQUN0RCwwQkFBZ0M7QUFJaEMsMENBQXVDO0FBU3ZDLElBQWEsV0FBVyxHQUF4QixNQUFhLFdBQVc7SUFJdkIsWUFDUyxPQUFlLGdCQUFTLENBQUMsR0FBRyxDQUFTLE1BQU0sQ0FBQyxFQUM1QyxTQUFTLGNBQVUsQ0FBQyxNQUFNLEVBQzFCLGFBQTRCO1FBRjVCLFNBQUksR0FBSixJQUFJLENBQXdDO1FBQzVDLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQ2xDLENBQUM7SUFFSjs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBYSxFQUFFLFFBQWdCLEVBQUUsWUFBb0IsRUFBRTtRQUNqRSxNQUFNLElBQUksR0FBVSxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDbEM7UUFDRCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3pELFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTO1NBQzdDLENBQUMsQ0FBQztRQUNILE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJ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

@@ -12,5 +12,5 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
const typedi_1 = require("typedi");
const typeorm_1 = require("typeorm");
const vesper_1 = require("vesper");
const typeorm_1 = require("typeorm");
const typedi_1 = require("typedi");
const Token_1 = require("./model/Token");

@@ -34,3 +34,3 @@ let TokenController = class TokenController {

id,
userId: this.user.id.toString()
userId: this.user.id.toString(),
});

@@ -74,2 +74,2 @@ }

exports.TokenController = TokenController;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9rZW5Db250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1Rva2VuQ29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLG1DQUFpRTtBQUNqRSxxQ0FBd0M7QUFDeEMsbUNBQWdDO0FBRWhDLHlDQUFzQztBQUd0QyxJQUFhLGVBQWUsR0FBNUIsTUFBYSxlQUFlO0lBSTNCLFlBQW9CLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRmhELFNBQUksR0FBaUIsSUFBSSxDQUFDO0lBRXlCLENBQUM7SUFJcEQsS0FBSyxDQUFDLEtBQUs7UUFDVixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztTQUNqRDtRQUNELE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUlELEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQWtCO1FBQ2xDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsT0FBTyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGFBQUssRUFBRTtZQUM3QyxFQUFFO1lBQ0YsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRTtTQUMvQixDQUFDLENBQUM7SUFDSixDQUFDO0lBSUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsRUFBcUI7UUFDM0MsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7U0FDakQ7SUFDRixDQUFDO0NBQ0QsQ0FBQTtBQWpDQTtJQURDLGVBQU0sQ0FBQyxjQUFjLENBQUM7OzZDQUNHO0FBTTFCO0lBRkMsY0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLG1CQUFVLEVBQUU7Ozs7NENBTVo7QUFJRDtJQUZDLGlCQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUM7SUFDakMsbUJBQVUsRUFBRTs7Ozs2Q0FVWjtBQUlEO0lBRkMsaUJBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQztJQUNsQyxtQkFBVSxFQUFFOzs7O2tEQUtaO0FBbENXLGVBQWU7SUFEM0IsbUJBQVUsRUFBRTtxQ0FLdUIsdUJBQWE7R0FKcEMsZUFBZSxDQW1DM0I7QUFuQ1ksMENBQWUifQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9rZW5Db250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1Rva2VuQ29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLG1DQUFnQztBQUNoQyxxQ0FBd0M7QUFDeEMsbUNBQWlFO0FBRWpFLHlDQUFzQztBQUd0QyxJQUFhLGVBQWUsR0FBNUIsTUFBYSxlQUFlO0lBSTNCLFlBQW9CLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRmhELFNBQUksR0FBaUIsSUFBSSxDQUFDO0lBRXlCLENBQUM7SUFJcEQsS0FBSyxDQUFDLEtBQUs7UUFDVixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztTQUNqRDtRQUNELE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUlELEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQWtCO1FBQ2xDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsT0FBTyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGFBQUssRUFBRTtZQUM3QyxFQUFFO1lBQ0YsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRTtTQUMvQixDQUFDLENBQUM7SUFDSixDQUFDO0lBSUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsRUFBcUI7UUFDM0MsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7U0FDakQ7SUFDRixDQUFDO0NBQ0QsQ0FBQTtBQWpDQTtJQURDLGVBQU0sQ0FBQyxjQUFjLENBQUM7OzZDQUNHO0FBTTFCO0lBRkMsY0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLG1CQUFVLEVBQUU7Ozs7NENBTVo7QUFJRDtJQUZDLGlCQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUM7SUFDakMsbUJBQVUsRUFBRTs7Ozs2Q0FVWjtBQUlEO0lBRkMsaUJBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQztJQUNsQyxtQkFBVSxFQUFFOzs7O2tEQUtaO0FBbENXLGVBQWU7SUFEM0IsbUJBQVUsRUFBRTtxQ0FLdUIsdUJBQWE7R0FKcEMsZUFBZSxDQW1DM0I7QUFuQ1ksMENBQWUifQ==
{
"name": "@constlab/vesper-jwt-auth",
"version": "0.0.6",
"version": "0.0.7",
"description": "vesper + jwt auth",

@@ -13,3 +13,5 @@ "main": "dist/index.js",

"test": "echo \"No test specified\" && exit 0",
"clean-publish": "clean-publish"
"clean-publish": "clean-publish",
"lint:fix": "tslint --fix --project tsconfig.json",
"lint": "tslint --project tsconfig.json --config tslint.json -t verbose"
},

@@ -44,8 +46,9 @@ "keywords": [

"@types/jsonwebtoken": "^7.2.8",
"@types/node": "^10.7.1",
"@types/node": "^10.9.2",
"clean-publish": "^1.0.9",
"conventional-changelog-cli": "^2.0.1",
"conventional-changelog-cli": "^2.0.5",
"sqlite3": "^4.0.2",
"ts-node-dev": "^1.0.0-pre.26",
"typedoc": "^0.11.1",
"tslint": "^5.11.0",
"typedoc": "^0.12.0",
"typescript": "^3.0.1",

@@ -52,0 +55,0 @@ "vesper": "^0.1.9"

@@ -0,5 +1,5 @@

import { getRepository } from "typeorm";
import { bootstrap } from "vesper";
import { AuthModule, jwtAuthorizationCheck } from "./../src/index";
import { PostModule } from "./post/PostModule";
import { getRepository } from "typeorm";
import { User } from "./user/User";

@@ -11,13 +11,14 @@ import { UserModule } from "./user/UserModule";

bootstrap({
port: 3000,
modules: [AuthModule, UserModule, PostModule],
parameters: {
salt: "MJ5DxHi3EKwzyyHveS9aoH3f2n7CRQ"
salt: "MJ5DxHi3EKwzyyHveS9aoH3f2n7CRQ",
},
port: 3000,
// tslint:disable-next-line:object-literal-sort-keys
authorizationChecker: (roles: string[], action) => jwtAuthorizationCheck(roles, action),
setupContainer: async (container, action) => {
container.set("user.repository", getRepository(User));
},
authorizationChecker: (roles: string[], action) => jwtAuthorizationCheck(roles, action)
})
.then(result => {
.then((result) => {
let status = `Your app is up and running on http://localhost:${result.options.port}.`;

@@ -29,6 +30,8 @@ if (!isProduction) {

}
// tslint:disable-next-line:no-console
console.log(status);
})
.catch(error => {
.catch((error) => {
// tslint:disable-next-line:no-console
console.error(error.stack ? error.stack : error);
});

@@ -1,2 +0,2 @@

import { Entity, PrimaryColumn, Generated, Column } from "typeorm";
import { Column, Entity, Generated, PrimaryColumn } from "typeorm";

@@ -3,0 +3,0 @@ @Entity()

import { GraphModule } from "vesper";
import { Post } from "./Post";
import { PostController } from "./PostController";
import { Post } from "./Post";

@@ -5,0 +5,0 @@ export class PostModule implements GraphModule {

@@ -9,6 +9,6 @@ import { Entity } from "typeorm";

return {
email: this.email,
id: this.id,
email: this.email
};
}
}

@@ -0,5 +1,5 @@

import { validate } from "class-validator";
import { EntityManager } from "typeorm";
import { Controller, Mutation } from "vesper";
import { User } from "./User";
import { EntityManager } from "typeorm";
import { validate } from "class-validator";

@@ -6,0 +6,0 @@ @Controller()

import { GraphModule } from "vesper";
import { User } from "./User";
import { UserController } from "./UserController";
import { User } from "./User";

@@ -5,0 +5,0 @@ export class UserModule implements GraphModule {

@@ -1,5 +0,5 @@

import { Controller, CurrentRequest, Mutation, ArgsValidator } from "vesper";
import { Request } from "express";
import { Inject } from "typedi";
import { Controller, CurrentRequest, Mutation } from "vesper";
import { AuthService, IAuthResult } from "./service/AuthService";
import { Request } from "express";

@@ -12,3 +12,3 @@ @Controller()

constructor(@Inject(type => CurrentRequest) private request: Request) {
constructor(@Inject(() => CurrentRequest) private request: Request) {
this.userAgent = (this.request.headers["user-agent"] as string) || "unknown user agent";

@@ -18,3 +18,3 @@ }

@Mutation({ name: "authLogin" })
//@ArgsValidator(LoginArgsValidator)
// @ArgsValidator(LoginArgsValidator)
async login({ email, password }: { email: string; password: string }): Promise<IAuthResult> {

@@ -21,0 +21,0 @@ return this.auth.sign(email, password, this.userAgent);

@@ -18,4 +18,4 @@ import { GraphModule } from "vesper";

static config: IAuthConfig = {
accessToken: { expiresIn: "30m" },
refreshToken: { expiresIn: "60d", maxSavedTokens: 10 },
accessToken: { expiresIn: "30m" }
};

@@ -22,0 +22,0 @@

import * as bcrypt from "bcryptjs";
import { IUser } from "./IUser";
import { IsDefined, IsEmail } from "class-validator";
import {
PrimaryColumn,
Generated,
BeforeInsert,
Column,
CreateDateColumn,
Generated,
PrimaryColumn,
UpdateDateColumn,
BeforeInsert
} from "typeorm";
import { IsEmail, IsDefined } from "class-validator";
import { IJWTPayload } from "./IJWTPayload";
import { IUser } from "./IUser";
export abstract class User implements IUser {
get jwtPayload(): IJWTPayload {
return {
id: this.id,
role: this.role,
};
}
@PrimaryColumn()

@@ -27,21 +34,7 @@ @Generated("uuid")

@Column({ name: "password" })
protected _password!: string;
set password(password: string) {
this._password = bcrypt.hashSync(password.trim(), bcrypt.genSaltSync(10));
}
@Column({ default: "user", length: 50 })
role!: string;
get jwtPayload(): IJWTPayload {
return {
id: this.id,
role: this.role
};
}
@CreateDateColumn()
createdAt!: Date;
createdAt?: Date;

@@ -51,2 +44,10 @@ @UpdateDateColumn()

@Column({ name: "password" })
// tslint:disable-next-line:variable-name
protected _password!: string;
set password(password: string) {
this._password = bcrypt.hashSync(password.trim(), bcrypt.genSaltSync(10));
}
@BeforeInsert()

@@ -53,0 +54,0 @@ updateName(): void {

@@ -11,2 +11,5 @@ import * as jwt from "jsonwebtoken";

export * from "./base/User";
export * from "./base/IJWTPayload";
export * from "./base/IUser";
export * from "./base/IUserRepository";

@@ -27,3 +30,3 @@ /**

}
const token: string = (action.request.headers["token"] as string) || "";
const token: string = (action.request.headers.token as string) || "";
if (token === "") {

@@ -35,3 +38,3 @@ throw new Error("The token not provided");

if (roles.length && !roles.includes(payload["role"])) {
if (roles.length && !roles.includes(payload.role)) {
throw new Error("Access denied");

@@ -38,0 +41,0 @@ }

@@ -1,2 +0,2 @@

import { Entity, PrimaryColumn, Generated, Column, CreateDateColumn, Unique, Index } from "typeorm";
import { Column, CreateDateColumn, Entity, Generated, Index, PrimaryColumn, Unique } from "typeorm";

@@ -8,16 +8,16 @@ @Entity()

@Generated("uuid")
id!: string;
id?: string;
@Column({ comment: "user agent or other client id" })
client!: string;
client?: string;
@Column({ comment: "refresh token" })
token!: string;
token?: string;
@CreateDateColumn()
createdAt!: Date;
createdAt?: Date;
@Column()
@Index()
userId!: string;
userId?: string;
}
import * as jwt from "jsonwebtoken";
import Container, { Service, Inject } from "typedi";
import { IUserRepository } from "../base/IUserRepository";
import Container, { Inject, Service } from "typedi";
import { DeleteResult, EntityManager } from "typeorm";
import { AuthModule } from "..";
import { IJWTPayload } from "../base/IJWTPayload";
import { IUser } from "../base/IUser";
import { IJWTPayload } from "../base/IJWTPayload";
import { IUserRepository } from "../base/IUserRepository";
import { Token } from "../model/Token";
import { EntityManager, DeleteResult } from "typeorm";

@@ -24,3 +24,3 @@ export interface IAuthResult {

private config = AuthModule.config,
private entityManager: EntityManager
private entityManager: EntityManager,
) {}

@@ -43,6 +43,6 @@

const refreshToken = jwt.sign({ id: user.id }, this.salt, {
expiresIn: this.config.refreshToken.expiresIn
expiresIn: this.config.refreshToken.expiresIn,
});
const accessToken = jwt.sign(user.jwtPayload, this.salt, {
expiresIn: this.config.accessToken.expiresIn
expiresIn: this.config.accessToken.expiresIn,
});

@@ -55,3 +55,3 @@

refreshToken,
user
user,
};

@@ -72,3 +72,3 @@ }

const user = await this.userRepository.findOneOrFail({
id: userId
id: userId,
});

@@ -78,6 +78,6 @@

where: {
client: userAgent,
token,
userId,
token,
client: userAgent
}
},
});

@@ -89,6 +89,6 @@ if (storedToken === null) {

const refreshToken = jwt.sign({ id: user.id }, this.salt, {
expiresIn: this.config.refreshToken.expiresIn
expiresIn: this.config.refreshToken.expiresIn,
});
const accessToken = jwt.sign({ id: user.id, name: user.name, role: user.role }, this.salt, {
expiresIn: this.config.accessToken.expiresIn
expiresIn: this.config.accessToken.expiresIn,
});

@@ -101,3 +101,3 @@

refreshToken,
user
user,
};

@@ -121,4 +121,4 @@ }

client: userAgent,
userId: user.id.toString()
}
userId: user.id.toString(),
},
});

@@ -129,10 +129,10 @@ if (savedToken !== undefined) {

return await this.entityManager.save(savedToken);
} else {
const newToken = new Token();
newToken.client = userAgent;
newToken.token = refreshToken;
newToken.userId = user.id.toString();
}
return await this.entityManager.save(Token, newToken);
}
const newToken = new Token();
newToken.client = userAgent;
newToken.token = refreshToken;
newToken.userId = user.id.toString();
return await this.entityManager.save(Token, newToken);
}

@@ -149,3 +149,3 @@

return await this.entityManager.delete(Token, {
userId: user.id.toString()
userId: user.id.toString(),
});

@@ -164,3 +164,3 @@ }

const tokensCount: number = await this.entityManager.count(Token, {
where: { userId: user.id.toString() }
where: { userId: user.id.toString() },
});

@@ -167,0 +167,0 @@ if (tokensCount + 1 >= this.config.refreshToken.maxSavedTokens) {

@@ -1,4 +0,4 @@

import { Controller, Query, Authorized, Mutation } from "vesper";
import { Inject } from "typedi";
import { EntityManager } from "typeorm";
import { Inject } from "typedi";
import { Authorized, Controller, Mutation, Query } from "vesper";
import { IUser } from "./base/IUser";

@@ -32,3 +32,3 @@ import { Token } from "./model/Token";

id,
userId: this.user.id.toString()
userId: this.user.id.toString(),
});

@@ -35,0 +35,0 @@ }

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc