@zssz-soft/firebase-functions-shared 1.1.2 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/__tests__/mocks/firebase-admin.mock.d.ts +81 -0
- package/lib/__tests__/mocks/firebase-admin.mock.d.ts.map +1 -0
- package/lib/__tests__/mocks/firebase-admin.mock.js +111 -0
- package/lib/__tests__/mocks/firebase-admin.mock.js.map +1 -0
- package/lib/__tests__/mocks/firebase-functions.mock.d.ts +37 -0
- package/lib/__tests__/mocks/firebase-functions.mock.d.ts.map +1 -0
- package/lib/__tests__/mocks/firebase-functions.mock.js +59 -0
- package/lib/__tests__/mocks/firebase-functions.mock.js.map +1 -0
- package/lib/config/app.config.d.ts +5 -0
- package/lib/config/app.config.d.ts.map +1 -1
- package/lib/config/app.config.js.map +1 -1
- package/lib/modules/bootstrap/bootstrap.d.ts +61 -2
- package/lib/modules/bootstrap/bootstrap.d.ts.map +1 -1
- package/lib/modules/bootstrap/bootstrap.js +200 -141
- package/lib/modules/bootstrap/bootstrap.js.map +1 -1
- package/lib/modules/email/email.d.ts.map +1 -1
- package/lib/modules/email/email.js +1 -1
- package/lib/modules/email/email.js.map +1 -1
- package/lib/modules/email/email.service.js +1 -1
- package/lib/modules/email/email.service.js.map +1 -1
- package/lib/modules/security/effective-permissions.d.ts.map +1 -1
- package/lib/modules/security/effective-permissions.js +7 -6
- package/lib/modules/security/effective-permissions.js.map +1 -1
- package/lib/modules/storage/thumbnail-functions.d.ts.map +1 -1
- package/lib/modules/storage/thumbnail-functions.js +24 -21
- package/lib/modules/storage/thumbnail-functions.js.map +1 -1
- package/lib/modules/user/user-management.d.ts +42 -7
- package/lib/modules/user/user-management.d.ts.map +1 -1
- package/lib/modules/user/user-management.js +131 -79
- package/lib/modules/user/user-management.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,162 +1,221 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.PERMISSION_CREATE_THUMBNAIL = exports.PERMISSION_USER = exports.PERMISSION_ADMIN = void 0;
|
|
4
|
+
exports.getFirestoreInstance = getFirestoreInstance;
|
|
5
|
+
exports.createBootstrapRoles = createBootstrapRoles;
|
|
6
|
+
exports.validateBootstrapData = validateBootstrapData;
|
|
7
|
+
exports.getAdminPassword = getAdminPassword;
|
|
8
|
+
exports.isSystemBootstrapped = isSystemBootstrapped;
|
|
9
|
+
exports.createRolesIfNotExist = createRolesIfNotExist;
|
|
10
|
+
exports.createAdminUserDocument = createAdminUserDocument;
|
|
11
|
+
exports.executeSystemBootstrap = executeSystemBootstrap;
|
|
12
|
+
exports.executeCheckBootstrapStatus = executeCheckBootstrapStatus;
|
|
13
|
+
exports.handleBootstrapStatusError = handleBootstrapStatusError;
|
|
14
|
+
exports.createSystemBootstrapFunction = createSystemBootstrapFunction;
|
|
15
|
+
exports.createCheckBootstrapStatusFunction = createCheckBootstrapStatusFunction;
|
|
4
16
|
const firestore_1 = require("firebase-admin/firestore");
|
|
17
|
+
const firebase_functions_1 = require("firebase-functions");
|
|
5
18
|
const https_1 = require("firebase-functions/https");
|
|
6
19
|
const config_1 = require("../../config");
|
|
7
20
|
const user_1 = require("../user");
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
throw new https_1.HttpsError('failed-precondition', 'Firebase Authentication is not enabled for this project. Please enable it in the Firebase Console: https://console.firebase.google.com/project/pestcontrol-6f622/authentication');
|
|
35
|
-
}
|
|
36
|
-
throw error;
|
|
37
|
-
}
|
|
38
|
-
const bootstrapRoles = [
|
|
39
|
-
{
|
|
40
|
-
id: '66000',
|
|
41
|
-
editable: false,
|
|
42
|
-
name: 'ADMIN',
|
|
43
|
-
permissions: ['ADMIN', 'createThumbnail'],
|
|
44
|
-
meta: {
|
|
45
|
-
createdAt: new Date().toISOString(),
|
|
46
|
-
updatedAt: new Date().toISOString(),
|
|
47
|
-
createdBy: 'system-bootstrap',
|
|
48
|
-
updatedBy: 'system-bootstrap',
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
id: '66001',
|
|
53
|
-
editable: false,
|
|
54
|
-
name: 'USER',
|
|
55
|
-
permissions: ['USER'],
|
|
56
|
-
meta: {
|
|
57
|
-
createdAt: new Date().toISOString(),
|
|
58
|
-
updatedAt: new Date().toISOString(),
|
|
59
|
-
createdBy: 'system-bootstrap',
|
|
60
|
-
updatedBy: 'system-bootstrap',
|
|
61
|
-
},
|
|
21
|
+
// Permission constants - exported for testing
|
|
22
|
+
exports.PERMISSION_ADMIN = 'ADMIN';
|
|
23
|
+
exports.PERMISSION_USER = 'USER';
|
|
24
|
+
exports.PERMISSION_CREATE_THUMBNAIL = 'createThumbnail';
|
|
25
|
+
/**
|
|
26
|
+
* Get Firestore instance based on config
|
|
27
|
+
*/
|
|
28
|
+
function getFirestoreInstance(config) {
|
|
29
|
+
return config.firestoreDatabaseId ? (0, firestore_1.getFirestore)(config.firestoreDatabaseId) : (0, firestore_1.getFirestore)();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Create bootstrap roles array based on config
|
|
33
|
+
*/
|
|
34
|
+
function createBootstrapRoles(config) {
|
|
35
|
+
const now = new Date().toISOString();
|
|
36
|
+
return [
|
|
37
|
+
{
|
|
38
|
+
id: config.defaultAdminRoleId,
|
|
39
|
+
editable: false,
|
|
40
|
+
name: exports.PERMISSION_ADMIN,
|
|
41
|
+
permissions: [exports.PERMISSION_ADMIN, exports.PERMISSION_CREATE_THUMBNAIL],
|
|
42
|
+
meta: {
|
|
43
|
+
createdAt: now,
|
|
44
|
+
updatedAt: now,
|
|
45
|
+
createdBy: 'system-bootstrap',
|
|
46
|
+
updatedBy: 'system-bootstrap',
|
|
62
47
|
},
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
const adminUserDoc = {
|
|
72
|
-
id: userRecord.uid,
|
|
73
|
-
email: adminEmail,
|
|
74
|
-
displayName: adminDisplayName,
|
|
75
|
-
firstName: 'Bootstrap',
|
|
76
|
-
lastName: 'Admin',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
id: config.defaultUserRoleId,
|
|
51
|
+
editable: false,
|
|
52
|
+
name: exports.PERMISSION_USER,
|
|
53
|
+
permissions: [exports.PERMISSION_USER],
|
|
77
54
|
meta: {
|
|
78
|
-
createdAt:
|
|
79
|
-
updatedAt:
|
|
55
|
+
createdAt: now,
|
|
56
|
+
updatedAt: now,
|
|
80
57
|
createdBy: 'system-bootstrap',
|
|
58
|
+
updatedBy: 'system-bootstrap',
|
|
81
59
|
},
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
};
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Validate bootstrap request data
|
|
65
|
+
*/
|
|
66
|
+
function validateBootstrapData(data) {
|
|
67
|
+
if (!data.adminEmail) {
|
|
68
|
+
throw new https_1.HttpsError('invalid-argument', 'Admin email is required for system bootstrap');
|
|
92
69
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get password to use for admin user
|
|
73
|
+
*/
|
|
74
|
+
function getAdminPassword(providedPassword, defaultPassword) {
|
|
75
|
+
return providedPassword && providedPassword.length >= 6 ? providedPassword : defaultPassword;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Check if system is already bootstrapped
|
|
79
|
+
*/
|
|
80
|
+
async function isSystemBootstrapped(firestore) {
|
|
81
|
+
const usersSnapshot = await firestore.collection(user_1.USER_FEATURE_KEY).limit(1).get();
|
|
82
|
+
return !usersSnapshot.empty;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Create roles in Firestore if they don't exist
|
|
86
|
+
*/
|
|
87
|
+
async function createRolesIfNotExist(firestore, roles) {
|
|
88
|
+
for (const role of roles) {
|
|
89
|
+
const roleRef = firestore.collection(user_1.ROLE_FEATURE_KEY).doc(role.id);
|
|
90
|
+
const roleDoc = await roleRef.get();
|
|
91
|
+
if (!roleDoc.exists) {
|
|
92
|
+
await roleRef.set(role);
|
|
93
|
+
}
|
|
96
94
|
}
|
|
97
|
-
}
|
|
98
|
-
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Create admin user document in Firestore
|
|
98
|
+
*/
|
|
99
|
+
function createAdminUserDocument(uid, email, displayName, roleIds) {
|
|
100
|
+
return {
|
|
101
|
+
id: uid,
|
|
102
|
+
email,
|
|
103
|
+
displayName,
|
|
104
|
+
firstName: 'Bootstrap',
|
|
105
|
+
lastName: 'Admin',
|
|
106
|
+
meta: {
|
|
107
|
+
createdAt: new Date(),
|
|
108
|
+
updatedAt: new Date(),
|
|
109
|
+
createdBy: 'system-bootstrap',
|
|
110
|
+
},
|
|
111
|
+
status: 'active',
|
|
112
|
+
roleIds,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Core bootstrap logic - exported for testing
|
|
117
|
+
*/
|
|
118
|
+
async function executeSystemBootstrap(data, config) {
|
|
99
119
|
var _a;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
const userCount = usersSnapshot.size;
|
|
107
|
-
const isBootstrapped = userCount > 0;
|
|
120
|
+
validateBootstrapData(data);
|
|
121
|
+
const { adminEmail, adminDisplayName = 'Bootstrap Admin', adminPassword } = data;
|
|
122
|
+
const password = getAdminPassword(adminPassword, config.defaultAdminPassword);
|
|
123
|
+
const firestore = getFirestoreInstance(config);
|
|
124
|
+
// Check if already bootstrapped
|
|
125
|
+
if (await isSystemBootstrapped(firestore)) {
|
|
108
126
|
return {
|
|
109
127
|
success: true,
|
|
110
|
-
message:
|
|
111
|
-
|
|
112
|
-
: 'System is not bootstrapped - no users found',
|
|
113
|
-
data: {
|
|
114
|
-
isBootstrapped,
|
|
115
|
-
userCount,
|
|
116
|
-
},
|
|
128
|
+
message: 'System already has users - bootstrap not needed',
|
|
129
|
+
userCreated: false,
|
|
117
130
|
};
|
|
118
131
|
}
|
|
132
|
+
// Create auth user
|
|
133
|
+
let userRecord;
|
|
134
|
+
try {
|
|
135
|
+
userRecord = await (0, user_1.createAuthUser)(adminEmail, adminDisplayName, password);
|
|
136
|
+
}
|
|
119
137
|
catch (error) {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
if ((error === null || error === void 0 ? void 0 : error.code) === 5 || ((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('NOT_FOUND'))) {
|
|
123
|
-
const config = (0, config_1.getConfig)();
|
|
124
|
-
throw new https_1.HttpsError('failed-precondition', `Firestore database "${config.firestoreDatabaseId || 'default'}" not found. Please check your database ID in the Firebase Console: https://console.firebase.google.com/project/${config.projectId}/firestore/databases`);
|
|
138
|
+
if (((_a = error === null || error === void 0 ? void 0 : error.errorInfo) === null || _a === void 0 ? void 0 : _a.code) === 'auth/configuration-not-found') {
|
|
139
|
+
throw new https_1.HttpsError('failed-precondition', `Firebase Authentication is not enabled for this project. Please enable it in the Firebase Console: https://console.firebase.google.com/project/${config.projectId}/authentication`);
|
|
125
140
|
}
|
|
126
|
-
throw
|
|
127
|
-
|
|
141
|
+
throw error;
|
|
142
|
+
}
|
|
143
|
+
// Create roles
|
|
144
|
+
const bootstrapRoles = createBootstrapRoles(config);
|
|
145
|
+
await createRolesIfNotExist(firestore, bootstrapRoles);
|
|
146
|
+
// Create admin user document
|
|
147
|
+
const adminUserDoc = createAdminUserDocument(userRecord.uid, adminEmail, adminDisplayName, bootstrapRoles.map((role) => role.id));
|
|
148
|
+
await firestore.collection(user_1.USER_FEATURE_KEY).doc(userRecord.uid).set(adminUserDoc);
|
|
149
|
+
return {
|
|
150
|
+
success: true,
|
|
151
|
+
message: `Admin user created successfully. Login with email: ${adminEmail}`,
|
|
152
|
+
userCreated: true,
|
|
153
|
+
userId: userRecord.uid,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Core check bootstrap status logic - exported for testing
|
|
158
|
+
*/
|
|
159
|
+
async function executeCheckBootstrapStatus(config) {
|
|
160
|
+
const firestore = getFirestoreInstance(config);
|
|
161
|
+
const usersSnapshot = await firestore.collection(user_1.USER_FEATURE_KEY).get();
|
|
162
|
+
const userCount = usersSnapshot.size;
|
|
163
|
+
const isBootstrapped = userCount > 0;
|
|
164
|
+
return {
|
|
165
|
+
success: true,
|
|
166
|
+
message: isBootstrapped
|
|
167
|
+
? `System is bootstrapped with ${userCount} user(s)`
|
|
168
|
+
: 'System is not bootstrapped - no users found',
|
|
169
|
+
data: {
|
|
170
|
+
isBootstrapped,
|
|
171
|
+
userCount,
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Handle bootstrap status check errors
|
|
177
|
+
*/
|
|
178
|
+
function handleBootstrapStatusError(error, config) {
|
|
179
|
+
var _a;
|
|
180
|
+
// Handle database not found error specifically
|
|
181
|
+
if ((error === null || error === void 0 ? void 0 : error.code) === 5 || ((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('NOT_FOUND'))) {
|
|
182
|
+
throw new https_1.HttpsError('failed-precondition', `Firestore database "${config.firestoreDatabaseId || 'default'}" not found. Please check your database ID in the Firebase Console: https://console.firebase.google.com/project/${config.projectId}/firestore/databases`);
|
|
128
183
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
//
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
//
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
184
|
+
throw new https_1.HttpsError('internal', 'Failed to check bootstrap status: ' + (error instanceof Error ? error.message : String(error)));
|
|
185
|
+
}
|
|
186
|
+
// Cloud Function factory - creates systemBootstrap function
|
|
187
|
+
function createSystemBootstrapFunction() {
|
|
188
|
+
const config = (0, config_1.getConfig)();
|
|
189
|
+
return (0, https_1.onCall)({
|
|
190
|
+
region: config.region,
|
|
191
|
+
enforceAppCheck: config.enforceAppCheck,
|
|
192
|
+
}, async (request) => {
|
|
193
|
+
try {
|
|
194
|
+
return await executeSystemBootstrap(request.data, config);
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
firebase_functions_1.logger.error('System bootstrap error:', error);
|
|
198
|
+
if (error instanceof https_1.HttpsError) {
|
|
199
|
+
throw error;
|
|
200
|
+
}
|
|
201
|
+
throw new https_1.HttpsError('internal', 'System bootstrap failed: ' + (error instanceof Error ? error.message : String(error)));
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
// Cloud Function factory - creates checkBootstrapStatus function
|
|
206
|
+
function createCheckBootstrapStatusFunction() {
|
|
207
|
+
const config = (0, config_1.getConfig)();
|
|
208
|
+
return (0, https_1.onCall)({
|
|
209
|
+
region: config.region,
|
|
210
|
+
enforceAppCheck: config.enforceAppCheck,
|
|
211
|
+
}, async () => {
|
|
212
|
+
try {
|
|
213
|
+
return await executeCheckBootstrapStatus(config);
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
firebase_functions_1.logger.error('Bootstrap status check error:', error);
|
|
217
|
+
handleBootstrapStatusError(error, config);
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
}
|
|
162
221
|
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../src/modules/bootstrap/bootstrap.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../src/modules/bootstrap/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/modules/email/email.ts"],"names":[],"mappings":"AAQA,wBAAgB,uBAAuB;;;
|
|
1
|
+
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/modules/email/email.ts"],"names":[],"mappings":"AAQA,wBAAgB,uBAAuB;;;aA4FtC"}
|
|
@@ -41,7 +41,7 @@ const email_service_1 = require("./email.service");
|
|
|
41
41
|
const email_validator_1 = require("./email.validator");
|
|
42
42
|
function createSendEmailFunction() {
|
|
43
43
|
const config = (0, config_1.getConfig)();
|
|
44
|
-
return (0, https_1.onCall)({ region: config.region }, async (request) => {
|
|
44
|
+
return (0, https_1.onCall)({ region: config.region, enforceAppCheck: config.enforceAppCheck }, async (request) => {
|
|
45
45
|
if (!request.auth) {
|
|
46
46
|
throw new https_1.HttpsError('unauthenticated', 'A felhasználónak be kell jelentkeznie az email küldéséhez.');
|
|
47
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../../src/modules/email/email.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../../src/modules/email/email.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,7 +78,7 @@ class EmailService {
|
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
catch (error) {
|
|
81
|
-
|
|
81
|
+
firebase_functions_1.logger.error('Email sending error:', error);
|
|
82
82
|
return {
|
|
83
83
|
success: false,
|
|
84
84
|
error: error instanceof Error ? error.message : 'Unknown error',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.service.js","sourceRoot":"","sources":["../../../src/modules/email/email.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2DAA4C;AAC5C,uDAAyC;AAEzC,yCAAyD;AAGzD,MAAa,YAAY;IAAzB;QACU,gBAAW,GAAkC,IAAI,CAAC;IA2M5D,CAAC;IAzMS,cAAc;QACpB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,WAAW,GAAG,IAAA,uBAAc,GAAE,CAAC;YAErC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,eAAe,CAAC;gBAC5C,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,IAAI,EAAE;oBACJ,IAAI,EAAE,WAAW,CAAC,IAAI;oBACtB,IAAI,EAAE,WAAW,CAAC,IAAI;iBACvB;aACF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAqB;QACnC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,MAAM,WAAW,GAAG,IAAA,uBAAc,GAAE,CAAC;YACrC,2BAAM,CAAC,IAAI,CACT,0CAA0C,WAAW,CAAC,IAAI,WAAW,WAAW,CAAC,IAAI,EAAE,CACxF,CAAC;YACF,MAAM,WAAW,GAAG;gBAClB,IAAI,EAAE,IAAI,WAAW,CAAC,QAAQ,MAAM,WAAW,CAAC,SAAS,GAAG;gBAC5D,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;gBAClE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC;YAEF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAErD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,
|
|
1
|
+
{"version":3,"file":"email.service.js","sourceRoot":"","sources":["../../../src/modules/email/email.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effective-permissions.d.ts","sourceRoot":"","sources":["../../../src/modules/security/effective-permissions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"effective-permissions.d.ts","sourceRoot":"","sources":["../../../src/modules/security/effective-permissions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,0BAA0B,EAG3B,MAAM,gCAAgC,CAAC;AAExC;;;;;GAKG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,OAAO,CAAC,0BAA0B,CAAM,GAC/C,OAAO,CAAC,IAAI,CAAC,CAyDf;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,OAAO,CAAC,0BAA0B,CAAM,GAC/C,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;;;GAKG;AACH,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,GAAE,OAAO,CAAC,0BAA0B,CAAM,GAC/C,OAAO,CAAC,IAAI,CAAC,CAiBf"}
|
|
@@ -42,6 +42,7 @@ exports.calculateEffectivePermissions = calculateEffectivePermissions;
|
|
|
42
42
|
exports.deleteEffectivePermissions = deleteEffectivePermissions;
|
|
43
43
|
exports.batchUpdateEffectivePermissions = batchUpdateEffectivePermissions;
|
|
44
44
|
const admin = __importStar(require("firebase-admin"));
|
|
45
|
+
const firebase_functions_1 = require("firebase-functions");
|
|
45
46
|
const effective_permissions_models_1 = require("./effective-permissions.models");
|
|
46
47
|
/**
|
|
47
48
|
* Calculate and cache effective permissions for a user
|
|
@@ -55,7 +56,7 @@ async function calculateEffectivePermissions(userId, config = {}) {
|
|
|
55
56
|
// Fetch user document
|
|
56
57
|
const userDoc = await db.collection(cfg.userCollection).doc(userId).get();
|
|
57
58
|
if (!userDoc.exists) {
|
|
58
|
-
|
|
59
|
+
firebase_functions_1.logger.warn(`User ${userId} does not exist, skipping permission calculation`);
|
|
59
60
|
return;
|
|
60
61
|
}
|
|
61
62
|
const userData = userDoc.data();
|
|
@@ -92,7 +93,7 @@ async function calculateEffectivePermissions(userId, config = {}) {
|
|
|
92
93
|
.collection(userId)
|
|
93
94
|
.doc('effective_permissions')
|
|
94
95
|
.set(effectivePermissions, { merge: false });
|
|
95
|
-
|
|
96
|
+
firebase_functions_1.logger.info(`Updated effective permissions for user ${userId}: ${effectivePermissions.permissions.length} permissions, ${effectivePermissions.roles.length} roles`);
|
|
96
97
|
}
|
|
97
98
|
/**
|
|
98
99
|
* Delete effective permissions cache for a user
|
|
@@ -109,7 +110,7 @@ async function deleteEffectivePermissions(userId, config = {}) {
|
|
|
109
110
|
.collection(userId)
|
|
110
111
|
.doc('effective_permissions')
|
|
111
112
|
.delete();
|
|
112
|
-
|
|
113
|
+
firebase_functions_1.logger.info(`Deleted effective permissions for user ${userId}`);
|
|
113
114
|
}
|
|
114
115
|
/**
|
|
115
116
|
* Batch update effective permissions for multiple users
|
|
@@ -120,14 +121,14 @@ async function deleteEffectivePermissions(userId, config = {}) {
|
|
|
120
121
|
async function batchUpdateEffectivePermissions(userIds, config = {}) {
|
|
121
122
|
const cfg = Object.assign(Object.assign({}, effective_permissions_models_1.DEFAULT_EFFECTIVE_PERMISSIONS_CONFIG), config);
|
|
122
123
|
const BATCH_SIZE = cfg.batchSize;
|
|
123
|
-
|
|
124
|
+
firebase_functions_1.logger.info(`Batch updating ${userIds.length} users (batch size: ${BATCH_SIZE})`);
|
|
124
125
|
for (let i = 0; i < userIds.length; i += BATCH_SIZE) {
|
|
125
126
|
const batch = userIds.slice(i, i + BATCH_SIZE);
|
|
126
127
|
const batchNumber = Math.floor(i / BATCH_SIZE) + 1;
|
|
127
128
|
const totalBatches = Math.ceil(userIds.length / BATCH_SIZE);
|
|
128
|
-
|
|
129
|
+
firebase_functions_1.logger.info(`Processing batch ${batchNumber}/${totalBatches} (${batch.length} users)`);
|
|
129
130
|
await Promise.all(batch.map((userId) => calculateEffectivePermissions(userId, config)));
|
|
130
131
|
}
|
|
131
|
-
|
|
132
|
+
firebase_functions_1.logger.info(`Completed batch update for ${userIds.length} users`);
|
|
132
133
|
}
|
|
133
134
|
//# sourceMappingURL=effective-permissions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effective-permissions.js","sourceRoot":"","sources":["../../../src/modules/security/effective-permissions.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"effective-permissions.js","sourceRoot":"","sources":["../../../src/modules/security/effective-permissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thumbnail-functions.d.ts","sourceRoot":"","sources":["../../../src/modules/storage/thumbnail-functions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"thumbnail-functions.d.ts","sourceRoot":"","sources":["../../../src/modules/storage/thumbnail-functions.ts"],"names":[],"mappings":"AAiBA,UAAU,wBAAwB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAiTD,eAAO,MAAM,iBAAiB,gGAuO7B,CAAC"}
|