@constlab/vesper-jwt-auth
Advanced tools
Comparing version 0.0.6 to 0.0.7
{ | ||
"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 @@ } |
65779
58
1241
11