@nymphjs/tilmeld 1.0.0-beta.131 → 1.0.0-beta.133
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/CHANGELOG.md +12 -0
- package/dist/AbleObject.d.ts +6 -3
- package/dist/AbleObject.js +9 -9
- package/dist/AbleObject.js.map +1 -1
- package/dist/Group.d.ts +24 -23
- package/dist/Group.js +84 -92
- package/dist/Group.js.map +1 -1
- package/dist/Tilmeld.d.ts +9 -9
- package/dist/Tilmeld.js +16 -8
- package/dist/Tilmeld.js.map +1 -1
- package/dist/Tilmeld.types.d.ts +6 -6
- package/dist/User.d.ts +32 -31
- package/dist/User.js +280 -289
- package/dist/User.js.map +1 -1
- package/dist/conf/defaults.js +2 -2
- package/dist/conf/defaults.js.map +1 -1
- package/dist/conf/index.d.ts +8 -10
- package/dist/conf/index.js.map +1 -1
- package/dist/index.d.ts +2 -8
- package/dist/index.js +2 -8
- package/dist/index.js.map +1 -1
- package/dist/testArtifacts.d.ts +4 -2
- package/dist/testArtifacts.js.map +1 -1
- package/dist/tilmeldJoiProps.d.ts +1 -2
- package/dist/tilmeldJoiProps.js +3 -3
- package/dist/tilmeldJoiProps.js.map +1 -1
- package/package.json +5 -5
- package/src/AbleObject.ts +17 -11
- package/src/Group.ts +98 -122
- package/src/Tilmeld.ts +25 -20
- package/src/Tilmeld.types.ts +6 -6
- package/src/User.ts +303 -348
- package/src/conf/defaults.ts +2 -2
- package/src/conf/index.ts +8 -14
- package/src/index.ts +2 -8
- package/src/testArtifacts.ts +6 -4
- package/src/tilmeldJoiProps.ts +3 -3
package/src/Tilmeld.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { URL } from 'node:url';
|
|
2
2
|
import {
|
|
3
3
|
Nymph,
|
|
4
|
+
Entity,
|
|
4
5
|
EntityInterface,
|
|
5
6
|
FormattedSelector,
|
|
6
7
|
Options,
|
|
@@ -15,8 +16,8 @@ import { splitn } from '@sciactive/splitn';
|
|
|
15
16
|
|
|
16
17
|
import { Config, ConfigDefaults as defaults } from './conf/index.js';
|
|
17
18
|
import { AccessControlError } from './errors/index.js';
|
|
18
|
-
import
|
|
19
|
-
import
|
|
19
|
+
import { Group } from './Group.js';
|
|
20
|
+
import { User } from './User.js';
|
|
20
21
|
import { AccessControlData } from './Tilmeld.types.js';
|
|
21
22
|
import { enforceTilmeld } from './enforceTilmeld.js';
|
|
22
23
|
|
|
@@ -43,7 +44,7 @@ export default class Tilmeld implements TilmeldInterface {
|
|
|
43
44
|
/**
|
|
44
45
|
* The currently logged in user.
|
|
45
46
|
*/
|
|
46
|
-
public currentUser:
|
|
47
|
+
public currentUser: User | null = null;
|
|
47
48
|
|
|
48
49
|
/**
|
|
49
50
|
* The user class for this instance of Tilmeld.
|
|
@@ -260,6 +261,7 @@ export default class Tilmeld implements TilmeldInterface {
|
|
|
260
261
|
) {
|
|
261
262
|
const tilmeld = enforceTilmeld(nymph);
|
|
262
263
|
if (
|
|
264
|
+
'$tilmeldDeleteSkipAC' in entity &&
|
|
263
265
|
typeof entity.$tilmeldDeleteSkipAC === 'function' &&
|
|
264
266
|
entity.$tilmeldDeleteSkipAC()
|
|
265
267
|
) {
|
|
@@ -302,6 +304,7 @@ export default class Tilmeld implements TilmeldInterface {
|
|
|
302
304
|
return;
|
|
303
305
|
}
|
|
304
306
|
if (
|
|
307
|
+
'$tilmeldSaveSkipAC' in entity &&
|
|
305
308
|
typeof entity.$tilmeldSaveSkipAC === 'function' &&
|
|
306
309
|
entity.$tilmeldSaveSkipAC()
|
|
307
310
|
) {
|
|
@@ -564,9 +567,15 @@ export default class Tilmeld implements TilmeldInterface {
|
|
|
564
567
|
if (options == null) {
|
|
565
568
|
throw new Error('No options in argument.');
|
|
566
569
|
} else if (
|
|
567
|
-
'class' in options
|
|
568
|
-
(options.class?.
|
|
569
|
-
|
|
570
|
+
!('class' in options) ||
|
|
571
|
+
!(options.class?.prototype instanceof Entity)
|
|
572
|
+
) {
|
|
573
|
+
throw new Error('No class in options.');
|
|
574
|
+
} else if (options.class.class === 'Entity') {
|
|
575
|
+
throw new Error("Can't use Entity class directly.");
|
|
576
|
+
} else if (
|
|
577
|
+
options.class.factorySync() instanceof User ||
|
|
578
|
+
options.class.factorySync() instanceof Group
|
|
570
579
|
) {
|
|
571
580
|
// They are requesting a user/group. Always accessible for reading.
|
|
572
581
|
return;
|
|
@@ -795,15 +804,15 @@ export default class Tilmeld implements TilmeldInterface {
|
|
|
795
804
|
public checkPermissions(
|
|
796
805
|
entity: EntityInterface,
|
|
797
806
|
type: TilmeldAccessLevels = TilmeldAccessLevels.READ_ACCESS,
|
|
798
|
-
user?:
|
|
807
|
+
user?: User | false,
|
|
799
808
|
acProperties?: ACProperties,
|
|
800
809
|
) {
|
|
801
810
|
if (!acProperties) {
|
|
802
811
|
acProperties = entity.$getCurrentAcValues() as ACProperties;
|
|
803
812
|
}
|
|
804
813
|
|
|
805
|
-
let userOrNull:
|
|
806
|
-
let userOrEmpty: User
|
|
814
|
+
let userOrNull: User | null = null;
|
|
815
|
+
let userOrEmpty: User = this.User.factorySync();
|
|
807
816
|
// Calculate the user.
|
|
808
817
|
if (user == null) {
|
|
809
818
|
userOrNull = this.currentUser;
|
|
@@ -831,8 +840,8 @@ export default class Tilmeld implements TilmeldInterface {
|
|
|
831
840
|
) {
|
|
832
841
|
const [_local, domain] = splitn(
|
|
833
842
|
(entity instanceof User
|
|
834
|
-
? (entity as User
|
|
835
|
-
: (entity as Group
|
|
843
|
+
? (entity as User).username
|
|
844
|
+
: (entity as Group).groupname) ?? '',
|
|
836
845
|
'@',
|
|
837
846
|
2,
|
|
838
847
|
);
|
|
@@ -955,9 +964,9 @@ export default class Tilmeld implements TilmeldInterface {
|
|
|
955
964
|
public async checkClientUIDPermissions(
|
|
956
965
|
name: string,
|
|
957
966
|
type: TilmeldAccessLevels = TilmeldAccessLevels.READ_ACCESS,
|
|
958
|
-
user?:
|
|
967
|
+
user?: User | false,
|
|
959
968
|
) {
|
|
960
|
-
let userOrEmpty: User
|
|
969
|
+
let userOrEmpty: User = this.User.factorySync();
|
|
961
970
|
// Calculate the user.
|
|
962
971
|
if (user == null) {
|
|
963
972
|
userOrEmpty = this.User.current(true);
|
|
@@ -1000,7 +1009,7 @@ export default class Tilmeld implements TilmeldInterface {
|
|
|
1000
1009
|
*
|
|
1001
1010
|
* @param user The user.
|
|
1002
1011
|
*/
|
|
1003
|
-
public async fillSession(user: User
|
|
1012
|
+
public async fillSession(user: User) {
|
|
1004
1013
|
this.currentUser = user;
|
|
1005
1014
|
this.gatekeeperCache = await user.$getGatekeeperCache();
|
|
1006
1015
|
|
|
@@ -1193,11 +1202,7 @@ export default class Tilmeld implements TilmeldInterface {
|
|
|
1193
1202
|
* @param sendCookie Send the auth token as a cookie.
|
|
1194
1203
|
* @returns True on success, false on failure.
|
|
1195
1204
|
*/
|
|
1196
|
-
public async login(
|
|
1197
|
-
user: User & UserData,
|
|
1198
|
-
sendAuthHeader: boolean,
|
|
1199
|
-
sendCookie = true,
|
|
1200
|
-
) {
|
|
1205
|
+
public async login(user: User, sendAuthHeader: boolean, sendCookie = true) {
|
|
1201
1206
|
if (user.guid != null && user.enabled) {
|
|
1202
1207
|
if (this.response) {
|
|
1203
1208
|
if (!this.response.headersSent) {
|
|
@@ -1240,7 +1245,7 @@ export default class Tilmeld implements TilmeldInterface {
|
|
|
1240
1245
|
* @returns True on success, false on failure.
|
|
1241
1246
|
*/
|
|
1242
1247
|
public async loginSwitch(
|
|
1243
|
-
user: User
|
|
1248
|
+
user: User,
|
|
1244
1249
|
sendAuthHeader: boolean,
|
|
1245
1250
|
sendCookie = true,
|
|
1246
1251
|
) {
|
package/src/Tilmeld.types.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { Group } from './Group.js';
|
|
2
|
+
import { User } from './User.js';
|
|
3
3
|
|
|
4
|
-
export
|
|
5
|
-
user?: User
|
|
6
|
-
group?: Group
|
|
4
|
+
export interface AccessControlData {
|
|
5
|
+
user?: User;
|
|
6
|
+
group?: Group;
|
|
7
7
|
acUser?: number;
|
|
8
8
|
acGroup?: number;
|
|
9
9
|
acOther?: number;
|
|
10
10
|
acFull?: string[];
|
|
11
11
|
acWrite?: string[];
|
|
12
12
|
acRead?: string[];
|
|
13
|
-
}
|
|
13
|
+
}
|