@duvdu-v1/duvdu 1.1.145 → 1.1.147
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.d.ts +1 -0
- package/build/index.js +1 -0
- package/build/middlewares/auth.middleware.d.ts +2 -0
- package/build/middlewares/auth.middleware.js +49 -3
- package/build/models/notification.model.js +1 -0
- package/build/models/projectViews.model.d.ts +36 -0
- package/build/models/projectViews.model.js +19 -0
- package/build/services/projectView.service.d.ts +1 -29
- package/build/services/projectView.service.js +15 -5
- package/build/types/Permissions.d.ts +14 -13
- package/build/types/Permissions.js +27 -24
- package/build/types/model-names.d.ts +2 -1
- package/build/types/model-names.js +1 -0
- package/package.json +1 -1
package/build/index.d.ts
CHANGED
|
@@ -69,6 +69,7 @@ export * from './models/all-contracts.model';
|
|
|
69
69
|
export * from './models/producer_contracts.model';
|
|
70
70
|
export * from './models/rental.model';
|
|
71
71
|
export * from './models/Review.model';
|
|
72
|
+
export * from './models/projectViews.model';
|
|
72
73
|
export * from './services/category.service';
|
|
73
74
|
export * from './services/projectView.service';
|
|
74
75
|
export * from './types/notification.type';
|
package/build/index.js
CHANGED
|
@@ -87,6 +87,7 @@ __exportStar(require("./models/all-contracts.model"), exports);
|
|
|
87
87
|
__exportStar(require("./models/producer_contracts.model"), exports);
|
|
88
88
|
__exportStar(require("./models/rental.model"), exports);
|
|
89
89
|
__exportStar(require("./models/Review.model"), exports);
|
|
90
|
+
__exportStar(require("./models/projectViews.model"), exports);
|
|
90
91
|
__exportStar(require("./services/category.service"), exports);
|
|
91
92
|
__exportStar(require("./services/projectView.service"), exports);
|
|
92
93
|
__exportStar(require("./types/notification.type"), exports);
|
|
@@ -1,4 +1,27 @@
|
|
|
1
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -9,13 +32,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
32
|
});
|
|
10
33
|
};
|
|
11
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.isauthenticated = void 0;
|
|
13
|
-
const jsonwebtoken_1 = require("jsonwebtoken");
|
|
35
|
+
exports.generateAccessToken = exports.isauthenticated = void 0;
|
|
36
|
+
const jsonwebtoken_1 = __importStar(require("jsonwebtoken"));
|
|
14
37
|
const unauthenticated_error_1 = require("../errors/unauthenticated-error");
|
|
15
38
|
const unauthorized_error_1 = require("../errors/unauthorized-error");
|
|
39
|
+
const Role_model_1 = require("../models/Role.model");
|
|
40
|
+
const User_model_1 = require("../models/User.model");
|
|
16
41
|
const isauthenticated = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
42
|
if (!req.session.access)
|
|
18
43
|
return next(new unauthenticated_error_1.UnauthenticatedError({ en: 'access token not found', ar: 'الرمز المميز للوصول غير موجود' }, req.lang));
|
|
44
|
+
if (!req.session.refresh)
|
|
45
|
+
return next(new unauthenticated_error_1.UnauthenticatedError({ en: 'refresh token not found', ar: 'الرمز المميز للوصول غير موجود' }, req.lang));
|
|
19
46
|
let payload;
|
|
20
47
|
try {
|
|
21
48
|
payload = (0, jsonwebtoken_1.verify)(req.session.access, process.env.JWT_KEY);
|
|
@@ -27,8 +54,27 @@ const isauthenticated = (req, res, next) => __awaiter(void 0, void 0, void 0, fu
|
|
|
27
54
|
}, req.lang));
|
|
28
55
|
}
|
|
29
56
|
catch (error) {
|
|
30
|
-
return res.status(423).json({ message: 'access token expired' });
|
|
57
|
+
// return res.status(423).json({ message: 'access token expired' });
|
|
58
|
+
const user = yield User_model_1.Users.findOne({ token: req.session.refresh });
|
|
59
|
+
if (!user)
|
|
60
|
+
return res.status(423).json({ message: 'refresh token expired' });
|
|
61
|
+
const role = yield Role_model_1.Roles.findById(user.role);
|
|
62
|
+
if (!role)
|
|
63
|
+
return res.status(423).json({ message: 'invalid role' });
|
|
64
|
+
const accessToken = (0, exports.generateAccessToken)({
|
|
65
|
+
id: user.id,
|
|
66
|
+
isVerified: user.isVerified,
|
|
67
|
+
isBlocked: user.isBlocked,
|
|
68
|
+
role: { key: role.key, permissions: role.permissions },
|
|
69
|
+
});
|
|
70
|
+
req.session.access = accessToken;
|
|
71
|
+
req.session.refresh = user.token;
|
|
72
|
+
next();
|
|
31
73
|
}
|
|
32
74
|
next();
|
|
33
75
|
});
|
|
34
76
|
exports.isauthenticated = isauthenticated;
|
|
77
|
+
const generateAccessToken = (payload) => jsonwebtoken_1.default.sign(payload, process.env.JWT_KEY, {
|
|
78
|
+
expiresIn: process.env.NODE_ENV === 'development' ? '1d' : '1h',
|
|
79
|
+
});
|
|
80
|
+
exports.generateAccessToken = generateAccessToken;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/// <reference types="mongoose/types/document" />
|
|
2
|
+
/// <reference types="mongoose/types/aggregate" />
|
|
3
|
+
/// <reference types="mongoose/types/callback" />
|
|
4
|
+
/// <reference types="mongoose/types/collection" />
|
|
5
|
+
/// <reference types="mongoose/types/connection" />
|
|
6
|
+
/// <reference types="mongoose/types/cursor" />
|
|
7
|
+
/// <reference types="mongoose/types/error" />
|
|
8
|
+
/// <reference types="mongoose/types/expressions" />
|
|
9
|
+
/// <reference types="mongoose/types/helpers" />
|
|
10
|
+
/// <reference types="mongoose/types/middlewares" />
|
|
11
|
+
/// <reference types="mongoose/types/indexes" />
|
|
12
|
+
/// <reference types="mongoose/types/models" />
|
|
13
|
+
/// <reference types="mongoose/types/mongooseoptions" />
|
|
14
|
+
/// <reference types="mongoose/types/pipelinestage" />
|
|
15
|
+
/// <reference types="mongoose/types/populate" />
|
|
16
|
+
/// <reference types="mongoose/types/query" />
|
|
17
|
+
/// <reference types="mongoose/types/schemaoptions" />
|
|
18
|
+
/// <reference types="mongoose/types/schematypes" />
|
|
19
|
+
/// <reference types="mongoose/types/session" />
|
|
20
|
+
/// <reference types="mongoose/types/types" />
|
|
21
|
+
/// <reference types="mongoose/types/utility" />
|
|
22
|
+
/// <reference types="mongoose/types/validation" />
|
|
23
|
+
/// <reference types="mongoose/types/virtuals" />
|
|
24
|
+
/// <reference types="mongoose/types/inferschematype" />
|
|
25
|
+
import { Types } from 'mongoose';
|
|
26
|
+
interface IProjectView {
|
|
27
|
+
user: Types.ObjectId;
|
|
28
|
+
project: Types.ObjectId;
|
|
29
|
+
ref: string;
|
|
30
|
+
count: number;
|
|
31
|
+
date: Date;
|
|
32
|
+
}
|
|
33
|
+
export declare const ProjectView: import("mongoose").Model<IProjectView, {}, {}, {}, import("mongoose").Document<unknown, {}, IProjectView> & IProjectView & {
|
|
34
|
+
_id: Types.ObjectId;
|
|
35
|
+
}, any>;
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProjectView = void 0;
|
|
4
|
+
const mongoose_1 = require("mongoose");
|
|
5
|
+
const model_names_1 = require("../types/model-names");
|
|
6
|
+
var RefModels;
|
|
7
|
+
(function (RefModels) {
|
|
8
|
+
RefModels["copyright"] = "portfolio-post";
|
|
9
|
+
RefModels["studio"] = "studio-booking";
|
|
10
|
+
})(RefModels || (RefModels = {}));
|
|
11
|
+
const projectViewSchema = new mongoose_1.Schema({
|
|
12
|
+
user: { type: mongoose_1.Schema.Types.ObjectId, ref: model_names_1.MODELS.user },
|
|
13
|
+
project: { type: mongoose_1.Schema.Types.ObjectId, refPath: 'ref' },
|
|
14
|
+
ref: { type: String, enum: RefModels },
|
|
15
|
+
count: { type: Number, default: 1 },
|
|
16
|
+
date: { type: Date, default: Date.now }
|
|
17
|
+
}, { timestamps: true, collection: model_names_1.MODELS.projectsViews });
|
|
18
|
+
projectViewSchema.index({ project: 1, ref: 1, date: 1 }, { unique: true });
|
|
19
|
+
exports.ProjectView = (0, mongoose_1.model)(model_names_1.MODELS.projectsViews, projectViewSchema);
|
|
@@ -1,29 +1 @@
|
|
|
1
|
-
|
|
2
|
-
/// <reference types="mongoose/types/aggregate" />
|
|
3
|
-
/// <reference types="mongoose/types/callback" />
|
|
4
|
-
/// <reference types="mongoose/types/collection" />
|
|
5
|
-
/// <reference types="mongoose/types/connection" />
|
|
6
|
-
/// <reference types="mongoose/types/cursor" />
|
|
7
|
-
/// <reference types="mongoose/types/error" />
|
|
8
|
-
/// <reference types="mongoose/types/expressions" />
|
|
9
|
-
/// <reference types="mongoose/types/helpers" />
|
|
10
|
-
/// <reference types="mongoose/types/middlewares" />
|
|
11
|
-
/// <reference types="mongoose/types/indexes" />
|
|
12
|
-
/// <reference types="mongoose/types/models" />
|
|
13
|
-
/// <reference types="mongoose/types/mongooseoptions" />
|
|
14
|
-
/// <reference types="mongoose/types/pipelinestage" />
|
|
15
|
-
/// <reference types="mongoose/types/populate" />
|
|
16
|
-
/// <reference types="mongoose/types/query" />
|
|
17
|
-
/// <reference types="mongoose/types/schemaoptions" />
|
|
18
|
-
/// <reference types="mongoose/types/schematypes" />
|
|
19
|
-
/// <reference types="mongoose/types/session" />
|
|
20
|
-
/// <reference types="mongoose/types/types" />
|
|
21
|
-
/// <reference types="mongoose/types/utility" />
|
|
22
|
-
/// <reference types="mongoose/types/validation" />
|
|
23
|
-
/// <reference types="mongoose/types/virtuals" />
|
|
24
|
-
/// <reference types="mongoose/types/inferschematype" />
|
|
25
|
-
import { Document } from 'mongoose';
|
|
26
|
-
import { Iuser } from '../types/User';
|
|
27
|
-
type UserDocument = Document & Iuser;
|
|
28
|
-
export declare const incrementProjectsView: (userId: string) => Promise<UserDocument>;
|
|
29
|
-
export {};
|
|
1
|
+
export declare const incrementProjectsView: (userId: string, projectId: string, lang: string) => Promise<void>;
|
|
@@ -10,16 +10,26 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.incrementProjectsView = void 0;
|
|
13
|
+
const notfound_error_1 = require("../errors/notfound-error");
|
|
14
|
+
const allProjects_model_1 = require("../models/allProjects.model");
|
|
15
|
+
const projectViews_model_1 = require("../models/projectViews.model");
|
|
13
16
|
const User_model_1 = require("../models/User.model");
|
|
14
|
-
const incrementProjectsView = (userId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
|
+
const incrementProjectsView = (userId, projectId, lang) => __awaiter(void 0, void 0, void 0, function* () {
|
|
15
18
|
try {
|
|
16
19
|
const user = yield User_model_1.Users.findById(userId);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
const project = yield allProjects_model_1.Project.findOne({ project: projectId });
|
|
21
|
+
if (!user)
|
|
22
|
+
throw new notfound_error_1.NotFound({ en: 'user not found', ar: 'لم يتم العثور على المستخدم' }, lang);
|
|
20
23
|
user.projectsView += 1;
|
|
21
24
|
yield user.save();
|
|
22
|
-
|
|
25
|
+
if (!project)
|
|
26
|
+
throw new notfound_error_1.NotFound({ en: 'project not found', ar: 'لم يتم العثور على المشروع' }, lang);
|
|
27
|
+
const today = new Date();
|
|
28
|
+
today.setHours(0, 0, 0, 0);
|
|
29
|
+
const update = yield projectViews_model_1.ProjectView.updateOne({ user: userId, project: project._id, date: today }, { $inc: { count: 1 }, $setOnInsert: { ref: project.cycle, date: today } }, { upsert: true });
|
|
30
|
+
if (!update.upsertedId) {
|
|
31
|
+
yield projectViews_model_1.ProjectView.updateOne({ user: userId, project: project._id, date: today }, { $inc: { count: 1 } });
|
|
32
|
+
}
|
|
23
33
|
}
|
|
24
34
|
catch (error) {
|
|
25
35
|
console.error('Error incrementing projectsView:', error);
|
|
@@ -25,21 +25,21 @@ export declare enum PERMISSIONS {
|
|
|
25
25
|
getRolesHandler = "get roles",
|
|
26
26
|
getRoleHandler = "get role",
|
|
27
27
|
removeRoleHandler = "remove role",
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
getAnalysisHandler = "get analysis handler",
|
|
28
|
+
createProjectHandler = "create project project",
|
|
29
|
+
updateProjectHandler = "update project project",
|
|
30
|
+
removeProjectHandler = "remove project project",
|
|
31
|
+
getCrmProjectsHandlers = "get crm project projects",
|
|
32
|
+
getAnalysisHandler = "get project analysis handler",
|
|
33
33
|
createCopyrightHandler = "create copyright project",
|
|
34
34
|
updateCopyrightHandler = "update copyright project",
|
|
35
35
|
removeCopyrightHandler = "remove copyright project",
|
|
36
36
|
getCrmCopyrightsHandlers = "get crm copyright projects",
|
|
37
37
|
getCopyrightAnalysisHandler = "get copyright analysis handler",
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
createRentalProjectHandler = "create Rental project",
|
|
39
|
+
updateRentalProjectHandler = "update Rental project",
|
|
40
|
+
removeRentalProjectHandler = "remove Rental project",
|
|
41
|
+
getCrmRentalProject = "get crm rental projects",
|
|
42
|
+
getRentalAnalysisHandler = "get Rental analysis handler",
|
|
43
43
|
getAllReportsHandler = "get all reports",
|
|
44
44
|
getReportHandler = "get report",
|
|
45
45
|
updateReportHandler = "update report",
|
|
@@ -52,7 +52,7 @@ export declare enum PERMISSIONS {
|
|
|
52
52
|
createTeamProjectHandler = "create team project",
|
|
53
53
|
updateTeamProjectHandler = "update team project",
|
|
54
54
|
deleteTeamProjectHandler = "delete team project",
|
|
55
|
-
|
|
55
|
+
getProducerAnalysis = "get producer analysis",
|
|
56
56
|
createRankHandler = "create rank",
|
|
57
57
|
updateRankHandler = "update rank",
|
|
58
58
|
deleteRankHandler = "delete rank",
|
|
@@ -68,11 +68,12 @@ export declare const permissions: {
|
|
|
68
68
|
terms: PERMISSIONS[];
|
|
69
69
|
plans: PERMISSIONS[];
|
|
70
70
|
roles: PERMISSIONS[];
|
|
71
|
-
|
|
71
|
+
Post: PERMISSIONS[];
|
|
72
72
|
copyrights: PERMISSIONS[];
|
|
73
|
-
|
|
73
|
+
RentalBooking: PERMISSIONS[];
|
|
74
74
|
booking: PERMISSIONS[];
|
|
75
75
|
teamProject: PERMISSIONS[];
|
|
76
76
|
rank: PERMISSIONS[];
|
|
77
77
|
setting: PERMISSIONS[];
|
|
78
|
+
producer: PERMISSIONS[];
|
|
78
79
|
};
|
|
@@ -31,24 +31,24 @@ var PERMISSIONS;
|
|
|
31
31
|
PERMISSIONS["getRolesHandler"] = "get roles";
|
|
32
32
|
PERMISSIONS["getRoleHandler"] = "get role";
|
|
33
33
|
PERMISSIONS["removeRoleHandler"] = "remove role";
|
|
34
|
-
//
|
|
35
|
-
PERMISSIONS["
|
|
36
|
-
PERMISSIONS["
|
|
37
|
-
PERMISSIONS["
|
|
38
|
-
PERMISSIONS["
|
|
39
|
-
PERMISSIONS["getAnalysisHandler"] = "get analysis handler";
|
|
34
|
+
// project
|
|
35
|
+
PERMISSIONS["createProjectHandler"] = "create project project";
|
|
36
|
+
PERMISSIONS["updateProjectHandler"] = "update project project";
|
|
37
|
+
PERMISSIONS["removeProjectHandler"] = "remove project project";
|
|
38
|
+
PERMISSIONS["getCrmProjectsHandlers"] = "get crm project projects";
|
|
39
|
+
PERMISSIONS["getAnalysisHandler"] = "get project analysis handler";
|
|
40
40
|
// copyrights
|
|
41
41
|
PERMISSIONS["createCopyrightHandler"] = "create copyright project";
|
|
42
42
|
PERMISSIONS["updateCopyrightHandler"] = "update copyright project";
|
|
43
43
|
PERMISSIONS["removeCopyrightHandler"] = "remove copyright project";
|
|
44
44
|
PERMISSIONS["getCrmCopyrightsHandlers"] = "get crm copyright projects";
|
|
45
45
|
PERMISSIONS["getCopyrightAnalysisHandler"] = "get copyright analysis handler";
|
|
46
|
-
//
|
|
47
|
-
PERMISSIONS["
|
|
48
|
-
PERMISSIONS["
|
|
49
|
-
PERMISSIONS["
|
|
50
|
-
PERMISSIONS["
|
|
51
|
-
PERMISSIONS["
|
|
46
|
+
// Rental-booking
|
|
47
|
+
PERMISSIONS["createRentalProjectHandler"] = "create Rental project";
|
|
48
|
+
PERMISSIONS["updateRentalProjectHandler"] = "update Rental project";
|
|
49
|
+
PERMISSIONS["removeRentalProjectHandler"] = "remove Rental project";
|
|
50
|
+
PERMISSIONS["getCrmRentalProject"] = "get crm rental projects";
|
|
51
|
+
PERMISSIONS["getRentalAnalysisHandler"] = "get Rental analysis handler";
|
|
52
52
|
// reports
|
|
53
53
|
PERMISSIONS["getAllReportsHandler"] = "get all reports";
|
|
54
54
|
PERMISSIONS["getReportHandler"] = "get report";
|
|
@@ -65,7 +65,7 @@ var PERMISSIONS;
|
|
|
65
65
|
PERMISSIONS["updateTeamProjectHandler"] = "update team project";
|
|
66
66
|
PERMISSIONS["deleteTeamProjectHandler"] = "delete team project";
|
|
67
67
|
// producer
|
|
68
|
-
PERMISSIONS["
|
|
68
|
+
PERMISSIONS["getProducerAnalysis"] = "get producer analysis";
|
|
69
69
|
// rank
|
|
70
70
|
PERMISSIONS["createRankHandler"] = "create rank";
|
|
71
71
|
PERMISSIONS["updateRankHandler"] = "update rank";
|
|
@@ -113,11 +113,11 @@ exports.permissions = {
|
|
|
113
113
|
PERMISSIONS.updateRoleHandler,
|
|
114
114
|
PERMISSIONS.removeRoleHandler,
|
|
115
115
|
],
|
|
116
|
-
|
|
117
|
-
PERMISSIONS.
|
|
118
|
-
PERMISSIONS.
|
|
119
|
-
PERMISSIONS.
|
|
120
|
-
PERMISSIONS.
|
|
116
|
+
Post: [
|
|
117
|
+
PERMISSIONS.createProjectHandler,
|
|
118
|
+
PERMISSIONS.updateProjectHandler,
|
|
119
|
+
PERMISSIONS.removeProjectHandler,
|
|
120
|
+
PERMISSIONS.getCrmProjectsHandlers,
|
|
121
121
|
PERMISSIONS.getAnalysisHandler,
|
|
122
122
|
],
|
|
123
123
|
copyrights: [
|
|
@@ -127,12 +127,12 @@ exports.permissions = {
|
|
|
127
127
|
PERMISSIONS.getCrmCopyrightsHandlers,
|
|
128
128
|
PERMISSIONS.getCopyrightAnalysisHandler,
|
|
129
129
|
],
|
|
130
|
-
|
|
131
|
-
PERMISSIONS.
|
|
132
|
-
PERMISSIONS.
|
|
133
|
-
PERMISSIONS.
|
|
134
|
-
PERMISSIONS.
|
|
135
|
-
PERMISSIONS.
|
|
130
|
+
RentalBooking: [
|
|
131
|
+
PERMISSIONS.createRentalProjectHandler,
|
|
132
|
+
PERMISSIONS.updateRentalProjectHandler,
|
|
133
|
+
PERMISSIONS.removeRentalProjectHandler,
|
|
134
|
+
PERMISSIONS.getRentalAnalysisHandler,
|
|
135
|
+
PERMISSIONS.getCrmRentalProject,
|
|
136
136
|
],
|
|
137
137
|
booking: [PERMISSIONS.booking],
|
|
138
138
|
teamProject: [
|
|
@@ -153,5 +153,8 @@ exports.permissions = {
|
|
|
153
153
|
PERMISSIONS.createSettingHandler,
|
|
154
154
|
PERMISSIONS.updateSettingHandler,
|
|
155
155
|
PERMISSIONS.deleteSettingHandler
|
|
156
|
+
],
|
|
157
|
+
producer: [
|
|
158
|
+
PERMISSIONS.getProducerAnalysis,
|
|
156
159
|
]
|
|
157
160
|
};
|