@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/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 Group, { GroupData } from './Group.js';
19
- import User, { UserData } from './User.js';
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: (User & UserData) | null = null;
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?.factorySync() instanceof User ||
569
- options.class?.factorySync() instanceof Group)
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?: (User & UserData) | false,
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: (User & UserData) | null = null;
806
- let userOrEmpty: User & UserData = this.User.factorySync();
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 & UserData).username
835
- : (entity as Group & GroupData).groupname) ?? '',
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?: (User & UserData) | false,
967
+ user?: User | false,
959
968
  ) {
960
- let userOrEmpty: User & UserData = this.User.factorySync();
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 & UserData) {
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 & UserData,
1248
+ user: User,
1244
1249
  sendAuthHeader: boolean,
1245
1250
  sendCookie = true,
1246
1251
  ) {
@@ -1,13 +1,13 @@
1
- import Group, { GroupData } from './Group.js';
2
- import User, { UserData } from './User.js';
1
+ import { Group } from './Group.js';
2
+ import { User } from './User.js';
3
3
 
4
- export type AccessControlData = {
5
- user?: User & UserData;
6
- group?: Group & GroupData;
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
+ }