biz-slide-core 1.1.0 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. package/entity/image.entity.js +18 -0
  2. package/entity/index.js +26 -0
  3. package/entity/{png-svg.entity.ts → png-svg.entity.js} +8 -23
  4. package/entity/ppt-event.entity.js +13 -0
  5. package/entity/ppt-slide.entity.js +18 -0
  6. package/entity/ppt.entity.js +30 -0
  7. package/entity/slide-layout.entity.js +14 -0
  8. package/entity/slide.entity.js +26 -0
  9. package/entity/socket.entity.js +13 -0
  10. package/entity/template.entity.js +14 -0
  11. package/entity/user.entity.js +15 -0
  12. package/index.js +21 -0
  13. package/middleware/authentication.js +123 -0
  14. package/middleware/index.js +19 -0
  15. package/middleware/role.js +8 -0
  16. package/middleware/schemaValidate.js +58 -0
  17. package/package.json +6 -2
  18. package/resHandler/errorHandler.js +58 -0
  19. package/resHandler/index.js +18 -0
  20. package/resHandler/successHandler.js +8 -0
  21. package/types/IController.js +2 -0
  22. package/types/IRequest.js +2 -0
  23. package/types/index.js +28 -0
  24. package/utilities/callWithRetries.js +73 -0
  25. package/utilities/createFolder.js +60 -0
  26. package/utilities/encryptionUtils.js +66 -0
  27. package/utilities/index.js +19 -0
  28. package/entity/image.entity.ts +0 -32
  29. package/entity/index.ts +0 -10
  30. package/entity/ppt-event.entity.ts +0 -23
  31. package/entity/ppt-slide.entity.ts +0 -31
  32. package/entity/ppt.entity.ts +0 -60
  33. package/entity/slide-layout.entity.ts +0 -24
  34. package/entity/slide.entity.ts +0 -47
  35. package/entity/socket.entity.ts +0 -22
  36. package/entity/template.entity.ts +0 -24
  37. package/entity/user.entity.ts +0 -26
  38. package/middleware/authentication.ts +0 -64
  39. package/middleware/index.ts +0 -3
  40. package/middleware/role.ts +0 -5
  41. package/middleware/schemaValidate.ts +0 -20
  42. package/resHandler/errorHandler.ts +0 -44
  43. package/resHandler/index.ts +0 -2
  44. package/resHandler/successHandler.ts +0 -11
  45. package/tsconfig.json +0 -109
  46. package/types/IController.ts +0 -6
  47. package/types/IRequest.ts +0 -8
  48. package/types/index.ts +0 -11
  49. package/utilities/callWithRetries.ts +0 -9
  50. package/utilities/createFolder.ts +0 -12
  51. package/utilities/encryptionUtils.ts +0 -26
  52. package/utilities/index.ts +0 -4
@@ -0,0 +1,73 @@
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 __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
39
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
40
+ if (ar || !(i in from)) {
41
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
42
+ ar[i] = from[i];
43
+ }
44
+ }
45
+ return to.concat(ar || Array.prototype.slice.call(from));
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.callWithRetries = void 0;
49
+ function callWithRetries(retryCount, failedMessage, functionRef) {
50
+ var args = [];
51
+ for (var _i = 3; _i < arguments.length; _i++) {
52
+ args[_i - 3] = arguments[_i];
53
+ }
54
+ return __awaiter(this, void 0, void 0, function () {
55
+ var error_1;
56
+ return __generator(this, function (_a) {
57
+ switch (_a.label) {
58
+ case 0:
59
+ _a.trys.push([0, 2, , 3]);
60
+ return [4 /*yield*/, functionRef.apply(void 0, args)];
61
+ case 1: return [2 /*return*/, _a.sent()];
62
+ case 2:
63
+ error_1 = _a.sent();
64
+ if (retryCount <= 0)
65
+ throw error_1;
66
+ console.log(failedMessage);
67
+ return [2 /*return*/, callWithRetries.apply(void 0, __spreadArray([retryCount - 1, failedMessage, functionRef], args, false))];
68
+ case 3: return [2 /*return*/];
69
+ }
70
+ });
71
+ });
72
+ }
73
+ exports.callWithRetries = callWithRetries;
@@ -0,0 +1,60 @@
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 __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.createFolder = void 0;
43
+ var fs_1 = __importDefault(require("fs"));
44
+ function createFolder(folderPath) {
45
+ return __awaiter(this, void 0, void 0, function () {
46
+ return __generator(this, function (_a) {
47
+ try {
48
+ if (!fs_1.default.existsSync(folderPath)) {
49
+ fs_1.default.mkdirSync(folderPath);
50
+ }
51
+ console.log("Folder \"".concat(folderPath, "\" is ready."));
52
+ }
53
+ catch (error) {
54
+ console.error("Error: ".concat(error.message));
55
+ }
56
+ return [2 /*return*/];
57
+ });
58
+ });
59
+ }
60
+ exports.createFolder = createFolder;
@@ -0,0 +1,66 @@
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 __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.verifyUid = exports.signUid = void 0;
43
+ var jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
44
+ var signUid = function (value) {
45
+ return jsonwebtoken_1.default.sign({ value: value }, process.env.JWTSECRET || 'secret', {
46
+ expiresIn: '8h' // expires in 8 hours
47
+ });
48
+ };
49
+ exports.signUid = signUid;
50
+ var verifyUid = function (token) { return __awaiter(void 0, void 0, void 0, function () {
51
+ return __generator(this, function (_a) {
52
+ return [2 /*return*/, new Promise(function (resolve) {
53
+ var jwtToken = token.split(" ")[1];
54
+ jsonwebtoken_1.default.verify(jwtToken, process.env.JWTSECRET || 'secret', function (err, decoded) {
55
+ if (err) {
56
+ console.log(err);
57
+ resolve(null);
58
+ }
59
+ else {
60
+ resolve(decoded);
61
+ }
62
+ });
63
+ })];
64
+ });
65
+ }); };
66
+ exports.verifyUid = verifyUid;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./callWithRetries"), exports);
18
+ __exportStar(require("./createFolder"), exports);
19
+ __exportStar(require("./encryptionUtils"), exports);
@@ -1,32 +0,0 @@
1
- import { Schema, model, Types } from "mongoose";
2
-
3
- export interface IImageSchema {
4
- focusPoint: { x: number, y: number };
5
- url: string;
6
- radius: string;
7
- keywords: [string] | null;
8
- title: string;
9
- userId: Types.ObjectId;
10
- createdAt: Date;
11
- updatedAt: Date;
12
- deletedAt: Date;
13
- }
14
-
15
- const ImageSchema = new Schema<IImageSchema>(
16
- {
17
- focusPoint: { x: Number, y: Number },
18
- url: { type: String, required: true },
19
- radius: { type: String, required: true },
20
- keywords: { type: [String], default: [] },
21
- title: { type: String, required: true },
22
- userId: { type: Schema.Types.ObjectId, ref: "user" },
23
- createdAt: { type: Date, default: Date.now() },
24
- updatedAt: { type: Date, default: Date.now() },
25
- deletedAt: { type: Date, default: null },
26
- },
27
- {
28
- timestamps: true,
29
- }
30
- );
31
-
32
- export const ImageModel = model<IImageSchema>("image", ImageSchema);
package/entity/index.ts DELETED
@@ -1,10 +0,0 @@
1
- export * from "./image.entity";
2
- export * from "./png-svg.entity";
3
- export * from "./ppt-event.entity";
4
- export * from "./ppt-slide.entity";
5
- export * from "./ppt.entity";
6
- export * from "./slide-layout.entity";
7
- export * from "./slide.entity";
8
- export * from "./socket.entity";
9
- export * from "./template.entity";
10
- export * from "./user.entity";
@@ -1,23 +0,0 @@
1
- import { Schema, model, Types } from "mongoose";
2
-
3
-
4
- export interface IPPTEventSchema {
5
- pptRef: Types.ObjectId;
6
- message: string;
7
- createdAt?: Date;
8
- updatedAt?: Date;
9
- }
10
-
11
- const PPTEventSchema = new Schema<IPPTEventSchema>(
12
- {
13
- createdAt: { type: Date, default: Date.now() },
14
- updatedAt: { type: Date, default: Date.now() },
15
- pptRef: { type: Schema.Types.ObjectId, ref: 'ppt' },
16
- message: { type: String, default: null }
17
- },
18
- {
19
- timestamps: true,
20
- }
21
- );
22
-
23
- export const PPTSlideEventModel = model<IPPTEventSchema>("ppt-event", PPTEventSchema);
@@ -1,31 +0,0 @@
1
- import { Schema, model, Types } from "mongoose";
2
- export interface IPPTSlideSchema {
3
- pptRef: Types.ObjectId;
4
- slideRef: Types.ObjectId;
5
- slideLayoutRef: Types.ObjectId;
6
- title: string;
7
- rawData: string;
8
- images: string;
9
- createdAt?: Date;
10
- updatedAt?: Date;
11
- deletedAt?: Date;
12
- }
13
-
14
- const PPTSlideSchema = new Schema<IPPTSlideSchema>(
15
- {
16
- createdAt: { type: Date, default: Date.now() },
17
- updatedAt: { type: Date, default: Date.now() },
18
- deletedAt: { type: Date, default: null },
19
- pptRef: { type: Schema.Types.ObjectId, ref: 'ppt' },
20
- slideRef: { type: Schema.Types.ObjectId, ref: 'slide' },
21
- slideLayoutRef: { type: Schema.Types.ObjectId, ref: 'slide-layout' },
22
- title: { type: String, default: null },
23
- rawData: { type: String, default: "{}" },
24
- images: { type: String, default: "{}" },
25
- },
26
- {
27
- timestamps: true,
28
- }
29
- );
30
-
31
- export const PPTSlideModel = model<IPPTSlideSchema>("ppt-slide", PPTSlideSchema);
@@ -1,60 +0,0 @@
1
- import { Schema, model, Types } from "mongoose";
2
-
3
- interface IPPTQuestions {
4
- question: string;
5
- answer: string;
6
- }
7
-
8
- const questionSchema = new Schema<IPPTQuestions>({
9
- question: { type: String},
10
- answer : { type : String }
11
- }, {
12
- timestamps: false,
13
- _id: false
14
- })
15
-
16
- export interface IPPTQuestionSchema {
17
- question: string;
18
- answer: string;
19
- }
20
-
21
- export interface IPPTSchema {
22
- systemGeneratedtopics: Array<string>;
23
- colors: Array<string>;
24
- slideRefs: Types.ObjectId[];
25
- templateRef: Types.ObjectId;
26
- template_type: string;
27
- prompt: string;
28
- userId: string;
29
- questions: IPPTQuestions[];
30
- isLocked?: boolean;
31
- fileCreated?: boolean;
32
- isCompleted?: boolean;
33
- createdAt?: Date;
34
- updatedAt?: Date;
35
- deletedAt?: Date;
36
- }
37
-
38
- const PPTSchema = new Schema<IPPTSchema>(
39
- {
40
- createdAt: { type: Date, default: Date.now() },
41
- updatedAt: { type: Date, default: Date.now() },
42
- deletedAt: { type: Date, default: null },
43
- isLocked: { type: Boolean, default: false },
44
- isCompleted: { type: Boolean, default: false },
45
- fileCreated: { type: Boolean, default: false },
46
- userId: { type: String, default: null },
47
- template_type: { type: String, default: null },
48
- systemGeneratedtopics: { type: [String], default: [], _id: false },
49
- questions: [questionSchema],
50
- colors: { type: [String], default: [], _id: false },
51
- prompt: { type: String, default: null },
52
- templateRef: { type: Schema.Types.ObjectId, ref: 'template' },
53
- slideRefs: {type: [{ type: Schema.Types.ObjectId, ref: 'ppt-slide' }], default: [], _id: false}
54
- },
55
- {
56
- timestamps: true,
57
- }
58
- );
59
-
60
- export const PPTModel = model<IPPTSchema>("ppt", PPTSchema);
@@ -1,24 +0,0 @@
1
- import { Schema, model, Types } from "mongoose";
2
-
3
- export interface ISlideLayoutSchema {
4
- name: string;
5
- templateId: Types.ObjectId;
6
- createdAt: Date;
7
- updatedAt: Date;
8
- deletedAt: Date;
9
- }
10
-
11
- const SlideLayoutSchema = new Schema<ISlideLayoutSchema>(
12
- {
13
- name: { type: String, default: "", required: true },
14
- templateId: { type: Schema.Types.ObjectId, ref: "template" },
15
- createdAt: { type: Date, default: Date.now() },
16
- updatedAt: { type: Date, default: Date.now() },
17
- deletedAt: { type: Date, default: null },
18
- },
19
- {
20
- timestamps: true,
21
- }
22
- );
23
-
24
- export const SlideLayoutModel = model<ISlideLayoutSchema>("slide-layout", SlideLayoutSchema);
@@ -1,47 +0,0 @@
1
- import { Schema, model, Types } from "mongoose";
2
-
3
- interface layer {
4
- metaType: String;
5
- optionsMeta: String;
6
- chatMeta: string;
7
- }
8
-
9
- const layerSchema = new Schema<layer>({
10
- metaType: { type: String, enum: ['text', 'image', 'shape', 'list', 'table'] },
11
- optionsMeta: { type: String },
12
- chatMeta: { type: String },
13
- }, {
14
- timestamps: false,
15
- _id: false
16
- })
17
-
18
- export interface ISlideSchema {
19
- name: string;
20
- postfix: string;
21
- rules: string;
22
- slideLayoutId: Types.ObjectId;
23
- templateId: Types.ObjectId;
24
- layers: layer[];
25
- createdAt: Date;
26
- updatedAt: Date;
27
- deletedAt: Date;
28
- }
29
-
30
- const SlideSchema = new Schema<ISlideSchema>(
31
- {
32
- name: { type: String, default: "", required: true },
33
- postfix: { type: String, default: "" },
34
- rules: { type: String, default: "" },
35
- layers: [layerSchema],
36
- slideLayoutId: { type: Schema.Types.ObjectId, ref: "slide-layout" },
37
- templateId: { type: Schema.Types.ObjectId, ref: "template" },
38
- createdAt: { type: Date, default: Date.now() },
39
- updatedAt: { type: Date, default: Date.now() },
40
- deletedAt: { type: Date, default: null },
41
- },
42
- {
43
- timestamps: true,
44
- }
45
- );
46
-
47
- export const SlideModel = model<ISlideSchema>("slide", SlideSchema);
@@ -1,22 +0,0 @@
1
- import { Schema, model, Types } from "mongoose";
2
-
3
- export interface ISocketSchema {
4
- userId: string;
5
- socketIds: Array<string>;
6
- createdAt?: Date;
7
- updatedAt?: Date;
8
- }
9
-
10
- const SocketSchema = new Schema<ISocketSchema>(
11
- {
12
- createdAt: { type: Date, default: Date.now() },
13
- updatedAt: { type: Date, default: Date.now() },
14
- userId: { type: String, default: null },
15
- socketIds: { type: [String], default: [] }
16
- },
17
- {
18
- timestamps: true,
19
- }
20
- );
21
-
22
- export const SocketModel = model<ISocketSchema>("socket", SocketSchema);
@@ -1,24 +0,0 @@
1
- import { Schema, model } from "mongoose";
2
-
3
- export interface ITemplateSchema{
4
- name: string;
5
- template_type: string;
6
- createdAt: Date,
7
- updatedAt: Date,
8
- deletedAt: Date
9
- }
10
-
11
- const TemplateSchema = new Schema<ITemplateSchema>(
12
- {
13
- name: { type: String, default: "", required: true },
14
- template_type: { type: String, default: "", required: true },
15
- createdAt: { type: Date, default: Date.now() },
16
- updatedAt: { type: Date, default: Date.now() },
17
- deletedAt: { type: Date, default: null },
18
- },
19
- {
20
- timestamps: true,
21
- }
22
- );
23
-
24
- export const TemplateModel = model<ITemplateSchema>("template", TemplateSchema);
@@ -1,26 +0,0 @@
1
- import { Schema, model } from "mongoose";
2
-
3
- interface IUser {
4
- email: string | null;
5
- password: string,
6
- role: string,
7
- createdAt: Date,
8
- updatedAt: Date,
9
- deletedAt: Date
10
- }
11
-
12
- const UserSchema = new Schema<IUser>(
13
- {
14
- email: { type: String, unique: true, sparse: true },
15
- password: { type: String, default: null },
16
- role: { type: String, default: null },
17
- createdAt: { type: Date, default: Date.now()},
18
- updatedAt: { type: Date, default: Date.now()},
19
- deletedAt: { type: Date, default: null},
20
- },
21
- {
22
- timestamps: true,
23
- }
24
- );
25
-
26
- export const UserModel = model<IUser>("user", UserSchema);
@@ -1,64 +0,0 @@
1
- import { Response, NextFunction } from "express";
2
- import { verifyUid } from "../utilities";
3
- import { IRequest } from "../types";
4
- import { UserModel } from "../entity";
5
-
6
-
7
- const authorize = (roles: string[]) => {
8
- return async function (req: IRequest, res: Response, next: NextFunction) {
9
- if (!req.headers.authorization) {
10
- return res.status(401).json({ message: 'Unauthorized' })
11
- }
12
- if (!roles.length) {
13
- return res.status(401).json({ message: 'Unauthorized' })
14
- }
15
- if (req.headers.authorization) {
16
- const token = await verifyUid(req.headers.authorization);
17
- if (!token) {
18
- return res.status(401).json({ message: 'Session Expired' })
19
- }
20
-
21
- let user = await UserModel.findOne({ email: token.value.email })
22
-
23
- if (!user) {
24
- return res.status(401).json({ message: 'No User Found' })
25
- }
26
-
27
- const hasAccess = roles.find(role => role === user.role);
28
-
29
- if (!hasAccess) {
30
- return res.status(403).json({ message: 'Forbbiden' })
31
- }
32
-
33
- const { createdAt, updatedAt, deletedAt, password, ...rest } = user.toObject();
34
-
35
- req.user = rest;
36
- next();
37
- }
38
- }
39
- }
40
-
41
- const authorizeWithSlideApp = () => {
42
- return async function (req: IRequest, res: Response, next: NextFunction) {
43
- if (!req.headers.authorization) {
44
- return res.status(401).json({ message: 'Unauthorized' })
45
- }
46
-
47
- if (req.headers.authorization) {
48
- const token = await verifyUid(req.headers.authorization);
49
- if (!token) {
50
- return res.status(401).json({ message: 'Session Expired' })
51
- }
52
-
53
- // token.value.customerid
54
-
55
- req.user = {
56
- userId: "123" //token.value.customerid
57
- }
58
-
59
- next();
60
- }
61
- }
62
- }
63
-
64
- export {authorize, authorizeWithSlideApp};
@@ -1,3 +0,0 @@
1
- export * from "./authentication";
2
- export * from "./role";
3
- export * from "./schemaValidate";
@@ -1,5 +0,0 @@
1
- export const ROLES = {
2
- User: 'User',
3
- Admin: 'Admin',
4
- SuperAdmin: 'SuperAdmin'
5
- }
@@ -1,20 +0,0 @@
1
- import { NextFunction, Response } from "express";
2
- import Joi from 'joi';
3
-
4
- import { IRequest } from "../types";
5
-
6
- export const validateSchema = (schema: Joi.ObjectSchema<any>) => {
7
- return async function (req: IRequest, res: Response, next: NextFunction) {
8
-
9
- const { error } = schema.validate(req.body, { abortEarly: false });
10
-
11
- if(error) {
12
- const errorMessage = error.details.map((err) => err.message).join(', ');
13
- return res.status(400).json({ message: errorMessage });
14
- } else {
15
- next();
16
- }
17
- }
18
- }
19
-
20
-
@@ -1,44 +0,0 @@
1
- import { Request, Response, NextFunction } from 'express';
2
-
3
- export class BadRequestError extends Error {
4
- constructor(message: string) {
5
- super(message);
6
- this.name = 'BadRequestError';
7
- }
8
- }
9
-
10
- export class NotFoundRequestError extends Error {
11
- constructor(message: string) {
12
- super(message);
13
- this.name = 'NotFoundRequestError';
14
- }
15
- }
16
-
17
-
18
-
19
- // Custom error handler middleware
20
- export const errorHandler = (
21
- err: Error,
22
- req: Request,
23
- res: Response,
24
- next: NextFunction
25
- ) => {
26
- console.error(err.stack); // Log the error for debugging
27
-
28
- let statusCode = 500; // Default status code
29
- let errorMessage = 'Internal Server Error'; // Default error message
30
-
31
- if (err instanceof BadRequestError) {
32
- statusCode = 400;
33
- errorMessage = err.message;
34
- } else if(err instanceof NotFoundRequestError) {
35
- statusCode = 404;
36
- errorMessage = err.message;
37
- }
38
-
39
- // Send an error response
40
- res.status(statusCode).json({
41
- message: errorMessage,
42
- error: err.name // Optionally send the error name/type
43
- });
44
- };