@communecter/cocolight-api-client 1.0.112 → 1.0.114
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/dist/cocolight-api-client.browser.js +1 -1
- package/dist/cocolight-api-client.cjs +1 -1
- package/dist/cocolight-api-client.mjs.js +1 -1
- package/dist/cocolight-api-client.vite.mjs.js +1 -1
- package/dist/cocolight-api-client.vite.mjs.js.map +1 -1
- package/package.json +1 -1
- package/src/api/User.ts +47 -16
- package/types/api/User.d.ts +11 -0
package/package.json
CHANGED
package/src/api/User.ts
CHANGED
|
@@ -922,17 +922,16 @@ export class User extends BaseEntity<UserItemNormalized> {
|
|
|
922
922
|
// ────────────────────────────────
|
|
923
923
|
|
|
924
924
|
/**
|
|
925
|
-
* Valide les préconditions
|
|
925
|
+
* Valide les préconditions de base (connexion, entité, parent, type).
|
|
926
926
|
* @private
|
|
927
927
|
* @param methodName - Nom de la méthode appelante (pour les messages d'erreur).
|
|
928
928
|
* @param expectedTypes - Types d'entité parent autorisés.
|
|
929
929
|
* @throws {ApiError} 401 - Si l'utilisateur n'est pas connecté.
|
|
930
930
|
* @throws {ApiError} 404 - Si l'utilisateur n'est pas enregistré.
|
|
931
931
|
* @throws {ApiError} 404 - Si l'entité parente n'est pas enregistrée.
|
|
932
|
-
* @throws {ApiError} 401 - Si l'utilisateur connecté n'est pas membre de l'entité parente.
|
|
933
932
|
* @throws {ApiError} 400 - Si le type d'entité parent n'est pas valide.
|
|
934
933
|
*/
|
|
935
|
-
private
|
|
934
|
+
private _validateBasePreconditions(methodName: string, expectedTypes: string[]): void {
|
|
936
935
|
if (!this.userId) {
|
|
937
936
|
throw new ApiError(`Vous devez être connecté pour ${methodName}.`, 401);
|
|
938
937
|
}
|
|
@@ -948,6 +947,25 @@ export class User extends BaseEntity<UserItemNormalized> {
|
|
|
948
947
|
if (!expectedTypes.includes(this.parent.getEntityType())) {
|
|
949
948
|
throw new ApiError(`L'entité doit être de type : ${expectedTypes.join(", ")}, reçu : ${this.parent.getEntityType()}`, 400);
|
|
950
949
|
}
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
/**
|
|
953
|
+
* Valide les préconditions pour les méthodes nécessitant d'être membre.
|
|
954
|
+
* @private
|
|
955
|
+
* @param methodName - Nom de la méthode appelante (pour les messages d'erreur).
|
|
956
|
+
* @param expectedTypes - Types d'entité parent autorisés.
|
|
957
|
+
* @throws {ApiError} 401 - Si l'utilisateur n'est pas connecté.
|
|
958
|
+
* @throws {ApiError} 404 - Si l'utilisateur n'est pas enregistré.
|
|
959
|
+
* @throws {ApiError} 404 - Si l'entité parente n'est pas enregistrée.
|
|
960
|
+
* @throws {ApiError} 401 - Si l'utilisateur connecté n'est pas membre de l'entité parente.
|
|
961
|
+
* @throws {ApiError} 400 - Si le type d'entité parent n'est pas valide.
|
|
962
|
+
*/
|
|
963
|
+
private _validateMemberPreconditions(methodName: string, expectedTypes: string[]): void {
|
|
964
|
+
this._validateBasePreconditions(methodName, expectedTypes);
|
|
965
|
+
|
|
966
|
+
if (!this.parent?.id) {
|
|
967
|
+
throw new ApiError("L'entité parente n'est pas enregistrée.", 404);
|
|
968
|
+
}
|
|
951
969
|
|
|
952
970
|
// Vérifier que l'utilisateur connecté a le bon rôle selon le type d'entité
|
|
953
971
|
// Pour les events, tout utilisateur connecté peut agir (pas besoin d'être participant)
|
|
@@ -1068,7 +1086,7 @@ export class User extends BaseEntity<UserItemNormalized> {
|
|
|
1068
1086
|
*/
|
|
1069
1087
|
override isAdmin(): boolean {
|
|
1070
1088
|
try {
|
|
1071
|
-
this.
|
|
1089
|
+
this._validateBasePreconditions("isAdmin", ["organizations", "projects"]);
|
|
1072
1090
|
} catch{
|
|
1073
1091
|
return false;
|
|
1074
1092
|
}
|
|
@@ -1103,7 +1121,7 @@ export class User extends BaseEntity<UserItemNormalized> {
|
|
|
1103
1121
|
*/
|
|
1104
1122
|
override isMember(): boolean {
|
|
1105
1123
|
try {
|
|
1106
|
-
this.
|
|
1124
|
+
this._validateBasePreconditions("isMember", ["organizations"]);
|
|
1107
1125
|
} catch{
|
|
1108
1126
|
return false;
|
|
1109
1127
|
}
|
|
@@ -1138,7 +1156,7 @@ export class User extends BaseEntity<UserItemNormalized> {
|
|
|
1138
1156
|
*/
|
|
1139
1157
|
override isContributor(): boolean {
|
|
1140
1158
|
try {
|
|
1141
|
-
this.
|
|
1159
|
+
this._validateBasePreconditions("isContributor", ["projects"]);
|
|
1142
1160
|
} catch{
|
|
1143
1161
|
return false;
|
|
1144
1162
|
}
|
|
@@ -1173,7 +1191,7 @@ export class User extends BaseEntity<UserItemNormalized> {
|
|
|
1173
1191
|
*/
|
|
1174
1192
|
override isAttendee(): boolean {
|
|
1175
1193
|
try {
|
|
1176
|
-
this.
|
|
1194
|
+
this._validateBasePreconditions("isAttendee", ["events"]);
|
|
1177
1195
|
} catch{
|
|
1178
1196
|
return false;
|
|
1179
1197
|
}
|
|
@@ -1200,13 +1218,19 @@ export class User extends BaseEntity<UserItemNormalized> {
|
|
|
1200
1218
|
*/
|
|
1201
1219
|
override isInviting(): boolean {
|
|
1202
1220
|
try {
|
|
1203
|
-
this.
|
|
1221
|
+
this._validateBasePreconditions("isInviting", ["citoyens", "organizations", "projects", "events"]);
|
|
1204
1222
|
} catch{
|
|
1205
1223
|
return false;
|
|
1206
1224
|
}
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1225
|
+
if(this.getEntityType() === "citoyens"){
|
|
1226
|
+
const userLink = this._getLinkFromConnectedUser();
|
|
1227
|
+
if (!userLink) return false;
|
|
1228
|
+
return userLink?.isInviting === true;
|
|
1229
|
+
} else {
|
|
1230
|
+
const parentLink = this._getParentLinkForUser();
|
|
1231
|
+
if (!parentLink) return false;
|
|
1232
|
+
return parentLink?.isInviting === true;
|
|
1233
|
+
}
|
|
1210
1234
|
}
|
|
1211
1235
|
|
|
1212
1236
|
/**
|
|
@@ -1228,7 +1252,7 @@ export class User extends BaseEntity<UserItemNormalized> {
|
|
|
1228
1252
|
*/
|
|
1229
1253
|
override isInvitingAdmin(): boolean {
|
|
1230
1254
|
try {
|
|
1231
|
-
this.
|
|
1255
|
+
this._validateBasePreconditions("isInvitingAdmin", ["organizations", "projects"]);
|
|
1232
1256
|
} catch{
|
|
1233
1257
|
return false;
|
|
1234
1258
|
}
|
|
@@ -1258,7 +1282,7 @@ export class User extends BaseEntity<UserItemNormalized> {
|
|
|
1258
1282
|
*/
|
|
1259
1283
|
override isAdminPending(): boolean {
|
|
1260
1284
|
try {
|
|
1261
|
-
this.
|
|
1285
|
+
this._validateBasePreconditions("isAdminPending", ["organizations", "projects"]);
|
|
1262
1286
|
} catch{
|
|
1263
1287
|
return false;
|
|
1264
1288
|
}
|
|
@@ -1287,12 +1311,19 @@ export class User extends BaseEntity<UserItemNormalized> {
|
|
|
1287
1311
|
*/
|
|
1288
1312
|
override isToBeValidated(): boolean {
|
|
1289
1313
|
try {
|
|
1290
|
-
this.
|
|
1314
|
+
this._validateBasePreconditions("isToBeValidated", ["citoyens", "organizations", "projects", "events"]);
|
|
1291
1315
|
} catch{
|
|
1292
1316
|
return false;
|
|
1293
1317
|
}
|
|
1294
|
-
|
|
1295
|
-
|
|
1318
|
+
if(this.getEntityType() === "citoyens"){
|
|
1319
|
+
const userLink = this._getLinkFromConnectedUser();
|
|
1320
|
+
if (!userLink) return false;
|
|
1321
|
+
return userLink?.toBeValidated === true;
|
|
1322
|
+
} else {
|
|
1323
|
+
const parentLink = this._getParentLinkForUser();
|
|
1324
|
+
if (!parentLink) return false;
|
|
1325
|
+
return parentLink?.toBeValidated === true;
|
|
1326
|
+
}
|
|
1296
1327
|
}
|
|
1297
1328
|
|
|
1298
1329
|
/**
|
package/types/api/User.d.ts
CHANGED
|
@@ -343,6 +343,17 @@ export declare class User extends BaseEntity<UserItemNormalized> {
|
|
|
343
343
|
* @returns L'entité correspondante au slug.
|
|
344
344
|
*/
|
|
345
345
|
entityBySlug(slug: string): Promise<EntityTypes>;
|
|
346
|
+
/**
|
|
347
|
+
* Valide les préconditions de base (connexion, entité, parent, type).
|
|
348
|
+
* @private
|
|
349
|
+
* @param methodName - Nom de la méthode appelante (pour les messages d'erreur).
|
|
350
|
+
* @param expectedTypes - Types d'entité parent autorisés.
|
|
351
|
+
* @throws {ApiError} 401 - Si l'utilisateur n'est pas connecté.
|
|
352
|
+
* @throws {ApiError} 404 - Si l'utilisateur n'est pas enregistré.
|
|
353
|
+
* @throws {ApiError} 404 - Si l'entité parente n'est pas enregistrée.
|
|
354
|
+
* @throws {ApiError} 400 - Si le type d'entité parent n'est pas valide.
|
|
355
|
+
*/
|
|
356
|
+
private _validateBasePreconditions;
|
|
346
357
|
/**
|
|
347
358
|
* Valide les préconditions pour les méthodes nécessitant d'être membre.
|
|
348
359
|
* @private
|