@sasjs/api 0.7.2 → 0.8.0
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/browser.js +29 -100
- package/build/cjs/corpus/records.js +19 -81
- package/build/cjs/identity/fixture.js +1 -1
- package/build/cjs/identity/records.js +8 -19
- package/build/esm/corpus/records.d.ts.map +1 -1
- package/build/esm/corpus/records.js +19 -81
- package/build/esm/identity/fixture.js +1 -1
- package/build/esm/identity/records.d.ts +13 -2
- package/build/esm/identity/records.d.ts.map +1 -1
- package/build/esm/identity/records.js +8 -19
- package/package.json +1 -1
package/build/browser.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @sasjs/api 0.
|
|
1
|
+
/* @sasjs/api 0.8.0 - the SASjs Server API, for a service worker. https://github.com/sasjs/api */
|
|
2
2
|
"use strict";
|
|
3
3
|
var SASjsApi = (() => {
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -3266,23 +3266,14 @@ var SASjsApi = (() => {
|
|
|
3266
3266
|
return details;
|
|
3267
3267
|
};
|
|
3268
3268
|
const findBy = async (by) => by.uid !== void 0 ? store.userById(by.uid) : store.userByName(by.username ?? "");
|
|
3269
|
-
const permissionDetails = async (permission) => {
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
|
|
3273
|
-
|
|
3274
|
-
|
|
3275
|
-
}
|
|
3276
|
-
|
|
3277
|
-
const user3 = await store.userById(permission.user);
|
|
3278
|
-
if (user3) response.user = asUser(user3);
|
|
3279
|
-
}
|
|
3280
|
-
if (permission.group) {
|
|
3281
|
-
const group = await store.groupById(permission.group);
|
|
3282
|
-
if (group) response.group = await groupDetails(group);
|
|
3283
|
-
}
|
|
3284
|
-
return response;
|
|
3285
|
-
};
|
|
3269
|
+
const permissionDetails = async (permission) => ({
|
|
3270
|
+
uid: permission.uid,
|
|
3271
|
+
path: permission.path,
|
|
3272
|
+
type: permission.type,
|
|
3273
|
+
setting: permission.setting,
|
|
3274
|
+
...permission.user ? { user: permission.user } : {},
|
|
3275
|
+
...permission.group ? { group: permission.group } : {}
|
|
3276
|
+
});
|
|
3286
3277
|
return {
|
|
3287
3278
|
async listUsers(caller) {
|
|
3288
3279
|
await requireCaller(store, caller);
|
|
@@ -3583,7 +3574,7 @@ var SASjsApi = (() => {
|
|
|
3583
3574
|
permissions: [
|
|
3584
3575
|
{
|
|
3585
3576
|
uid: "rule-routes",
|
|
3586
|
-
path: "/SASjsApi/
|
|
3577
|
+
path: "/SASjsApi/drive/file",
|
|
3587
3578
|
type: "Route",
|
|
3588
3579
|
setting: "Grant",
|
|
3589
3580
|
group: "group-data-controller"
|
|
@@ -5054,7 +5045,7 @@ var SASjsApi = (() => {
|
|
|
5054
5045
|
request: {
|
|
5055
5046
|
token: RESTRICTED,
|
|
5056
5047
|
params: { username: "user2" },
|
|
5057
|
-
body: { password: "
|
|
5048
|
+
body: { password: "wrong123" }
|
|
5058
5049
|
},
|
|
5059
5050
|
expect: { status: 401, error: "Invalid password." }
|
|
5060
5051
|
},
|
|
@@ -5363,55 +5354,24 @@ var SASjsApi = (() => {
|
|
|
5363
5354
|
body: [
|
|
5364
5355
|
{
|
|
5365
5356
|
uid: "rule-routes",
|
|
5366
|
-
path: "/SASjsApi/
|
|
5357
|
+
path: "/SASjsApi/drive/file",
|
|
5367
5358
|
type: "Route",
|
|
5368
5359
|
setting: "Grant",
|
|
5369
|
-
group:
|
|
5370
|
-
uid: "group-data-controller",
|
|
5371
|
-
name: "DCGroup",
|
|
5372
|
-
description: "Data Controller users",
|
|
5373
|
-
isActive: true,
|
|
5374
|
-
users: [
|
|
5375
|
-
{
|
|
5376
|
-
uid: RESTRICTED_UID,
|
|
5377
|
-
username: "user2",
|
|
5378
|
-
displayName: "Demo User",
|
|
5379
|
-
isAdmin: false
|
|
5380
|
-
}
|
|
5381
|
-
]
|
|
5382
|
-
}
|
|
5360
|
+
group: "group-data-controller"
|
|
5383
5361
|
},
|
|
5384
5362
|
{
|
|
5385
5363
|
uid: "rule-execute",
|
|
5386
5364
|
path: "/SASjsApi/stp/execute",
|
|
5387
5365
|
type: "Route",
|
|
5388
5366
|
setting: "Grant",
|
|
5389
|
-
group:
|
|
5390
|
-
uid: "group-data-controller",
|
|
5391
|
-
name: "DCGroup",
|
|
5392
|
-
description: "Data Controller users",
|
|
5393
|
-
isActive: true,
|
|
5394
|
-
users: [
|
|
5395
|
-
{
|
|
5396
|
-
uid: RESTRICTED_UID,
|
|
5397
|
-
username: "user2",
|
|
5398
|
-
displayName: "Demo User",
|
|
5399
|
-
isAdmin: false
|
|
5400
|
-
}
|
|
5401
|
-
]
|
|
5402
|
-
}
|
|
5367
|
+
group: "group-data-controller"
|
|
5403
5368
|
},
|
|
5404
5369
|
{
|
|
5405
5370
|
uid: "rule-code",
|
|
5406
5371
|
path: "/SASjsApi/code/execute",
|
|
5407
5372
|
type: "Route",
|
|
5408
5373
|
setting: "Deny",
|
|
5409
|
-
user:
|
|
5410
|
-
uid: RESTRICTED_UID,
|
|
5411
|
-
username: "user2",
|
|
5412
|
-
displayName: "Demo User",
|
|
5413
|
-
isAdmin: false
|
|
5414
|
-
}
|
|
5374
|
+
user: RESTRICTED_UID
|
|
5415
5375
|
}
|
|
5416
5376
|
]
|
|
5417
5377
|
}
|
|
@@ -5427,55 +5387,24 @@ var SASjsApi = (() => {
|
|
|
5427
5387
|
body: [
|
|
5428
5388
|
{
|
|
5429
5389
|
uid: "rule-routes",
|
|
5430
|
-
path: "/SASjsApi/
|
|
5390
|
+
path: "/SASjsApi/drive/file",
|
|
5431
5391
|
type: "Route",
|
|
5432
5392
|
setting: "Grant",
|
|
5433
|
-
group:
|
|
5434
|
-
uid: "group-data-controller",
|
|
5435
|
-
name: "DCGroup",
|
|
5436
|
-
description: "Data Controller users",
|
|
5437
|
-
isActive: true,
|
|
5438
|
-
users: [
|
|
5439
|
-
{
|
|
5440
|
-
uid: RESTRICTED_UID,
|
|
5441
|
-
username: "user2",
|
|
5442
|
-
displayName: "Demo User",
|
|
5443
|
-
isAdmin: false
|
|
5444
|
-
}
|
|
5445
|
-
]
|
|
5446
|
-
}
|
|
5393
|
+
group: "group-data-controller"
|
|
5447
5394
|
},
|
|
5448
5395
|
{
|
|
5449
5396
|
uid: "rule-execute",
|
|
5450
5397
|
path: "/SASjsApi/stp/execute",
|
|
5451
5398
|
type: "Route",
|
|
5452
5399
|
setting: "Grant",
|
|
5453
|
-
group:
|
|
5454
|
-
uid: "group-data-controller",
|
|
5455
|
-
name: "DCGroup",
|
|
5456
|
-
description: "Data Controller users",
|
|
5457
|
-
isActive: true,
|
|
5458
|
-
users: [
|
|
5459
|
-
{
|
|
5460
|
-
uid: RESTRICTED_UID,
|
|
5461
|
-
username: "user2",
|
|
5462
|
-
displayName: "Demo User",
|
|
5463
|
-
isAdmin: false
|
|
5464
|
-
}
|
|
5465
|
-
]
|
|
5466
|
-
}
|
|
5400
|
+
group: "group-data-controller"
|
|
5467
5401
|
},
|
|
5468
5402
|
{
|
|
5469
5403
|
uid: "rule-code",
|
|
5470
5404
|
path: "/SASjsApi/code/execute",
|
|
5471
5405
|
type: "Route",
|
|
5472
5406
|
setting: "Deny",
|
|
5473
|
-
user:
|
|
5474
|
-
uid: RESTRICTED_UID,
|
|
5475
|
-
username: "user2",
|
|
5476
|
-
displayName: "Demo User",
|
|
5477
|
-
isAdmin: false
|
|
5478
|
-
}
|
|
5407
|
+
user: RESTRICTED_UID
|
|
5479
5408
|
}
|
|
5480
5409
|
]
|
|
5481
5410
|
}
|
|
@@ -5496,7 +5425,7 @@ var SASjsApi = (() => {
|
|
|
5496
5425
|
request: {
|
|
5497
5426
|
token: ADMIN,
|
|
5498
5427
|
body: {
|
|
5499
|
-
path: "/SASjsApi/
|
|
5428
|
+
path: "/SASjsApi/drive/folder",
|
|
5500
5429
|
type: "Route",
|
|
5501
5430
|
setting: "Grant",
|
|
5502
5431
|
principalType: "user",
|
|
@@ -5505,7 +5434,7 @@ var SASjsApi = (() => {
|
|
|
5505
5434
|
},
|
|
5506
5435
|
expect: {
|
|
5507
5436
|
status: 200,
|
|
5508
|
-
partial: { path: "/SASjsApi/
|
|
5437
|
+
partial: { path: "/SASjsApi/drive/folder", setting: "Grant" }
|
|
5509
5438
|
}
|
|
5510
5439
|
},
|
|
5511
5440
|
{
|
|
@@ -5516,7 +5445,7 @@ var SASjsApi = (() => {
|
|
|
5516
5445
|
request: {
|
|
5517
5446
|
token: ADMIN,
|
|
5518
5447
|
body: {
|
|
5519
|
-
path: "/SASjsApi/
|
|
5448
|
+
path: "/SASjsApi/drive/rename",
|
|
5520
5449
|
type: "Route",
|
|
5521
5450
|
setting: "Grant",
|
|
5522
5451
|
principalType: "group",
|
|
@@ -5526,9 +5455,9 @@ var SASjsApi = (() => {
|
|
|
5526
5455
|
expect: {
|
|
5527
5456
|
status: 200,
|
|
5528
5457
|
partial: {
|
|
5529
|
-
path: "/SASjsApi/
|
|
5458
|
+
path: "/SASjsApi/drive/rename",
|
|
5530
5459
|
setting: "Grant",
|
|
5531
|
-
group:
|
|
5460
|
+
group: "group-data-controller"
|
|
5532
5461
|
}
|
|
5533
5462
|
}
|
|
5534
5463
|
},
|
|
@@ -5540,7 +5469,7 @@ var SASjsApi = (() => {
|
|
|
5540
5469
|
request: {
|
|
5541
5470
|
token: ADMIN,
|
|
5542
5471
|
body: {
|
|
5543
|
-
path: "/SASjsApi/
|
|
5472
|
+
path: "/SASjsApi/drive/deploy",
|
|
5544
5473
|
type: "Route",
|
|
5545
5474
|
setting: "Grant",
|
|
5546
5475
|
principalType: "role",
|
|
@@ -5560,7 +5489,7 @@ var SASjsApi = (() => {
|
|
|
5560
5489
|
request: {
|
|
5561
5490
|
token: ADMIN,
|
|
5562
5491
|
body: {
|
|
5563
|
-
path: "/SASjsApi/
|
|
5492
|
+
path: "/SASjsApi/drive/folder",
|
|
5564
5493
|
type: "Route",
|
|
5565
5494
|
setting: "Grant",
|
|
5566
5495
|
principalType: "user",
|
|
@@ -5580,7 +5509,7 @@ var SASjsApi = (() => {
|
|
|
5580
5509
|
request: {
|
|
5581
5510
|
token: RESTRICTED,
|
|
5582
5511
|
body: {
|
|
5583
|
-
path: "/SASjsApi/
|
|
5512
|
+
path: "/SASjsApi/drive/folder",
|
|
5584
5513
|
type: "Route",
|
|
5585
5514
|
setting: "Grant",
|
|
5586
5515
|
principalType: "user",
|
|
@@ -5597,7 +5526,7 @@ var SASjsApi = (() => {
|
|
|
5597
5526
|
request: {
|
|
5598
5527
|
token: ADMIN,
|
|
5599
5528
|
body: {
|
|
5600
|
-
path: "/SASjsApi/
|
|
5529
|
+
path: "/SASjsApi/drive/rename",
|
|
5601
5530
|
type: "Route",
|
|
5602
5531
|
setting: "Grant",
|
|
5603
5532
|
principalType: "group",
|
|
@@ -5614,7 +5543,7 @@ var SASjsApi = (() => {
|
|
|
5614
5543
|
request: {
|
|
5615
5544
|
token: ADMIN,
|
|
5616
5545
|
body: {
|
|
5617
|
-
path: "/SASjsApi/
|
|
5546
|
+
path: "/SASjsApi/drive/file",
|
|
5618
5547
|
type: "Route",
|
|
5619
5548
|
setting: "Grant",
|
|
5620
5549
|
principalType: "group",
|
|
@@ -404,7 +404,7 @@ exports.RECORD_CORPUS = [
|
|
|
404
404
|
request: {
|
|
405
405
|
token: RESTRICTED,
|
|
406
406
|
params: { username: 'user2' },
|
|
407
|
-
body: { password: '
|
|
407
|
+
body: { password: 'wrong123' }
|
|
408
408
|
},
|
|
409
409
|
expect: { status: 401, error: 'Invalid password.' }
|
|
410
410
|
},
|
|
@@ -713,55 +713,24 @@ exports.RECORD_CORPUS = [
|
|
|
713
713
|
body: [
|
|
714
714
|
{
|
|
715
715
|
uid: 'rule-routes',
|
|
716
|
-
path: '/SASjsApi/
|
|
716
|
+
path: '/SASjsApi/drive/file',
|
|
717
717
|
type: 'Route',
|
|
718
718
|
setting: 'Grant',
|
|
719
|
-
group:
|
|
720
|
-
uid: 'group-data-controller',
|
|
721
|
-
name: 'DCGroup',
|
|
722
|
-
description: 'Data Controller users',
|
|
723
|
-
isActive: true,
|
|
724
|
-
users: [
|
|
725
|
-
{
|
|
726
|
-
uid: RESTRICTED_UID,
|
|
727
|
-
username: 'user2',
|
|
728
|
-
displayName: 'Demo User',
|
|
729
|
-
isAdmin: false
|
|
730
|
-
}
|
|
731
|
-
]
|
|
732
|
-
}
|
|
719
|
+
group: 'group-data-controller'
|
|
733
720
|
},
|
|
734
721
|
{
|
|
735
722
|
uid: 'rule-execute',
|
|
736
723
|
path: '/SASjsApi/stp/execute',
|
|
737
724
|
type: 'Route',
|
|
738
725
|
setting: 'Grant',
|
|
739
|
-
group:
|
|
740
|
-
uid: 'group-data-controller',
|
|
741
|
-
name: 'DCGroup',
|
|
742
|
-
description: 'Data Controller users',
|
|
743
|
-
isActive: true,
|
|
744
|
-
users: [
|
|
745
|
-
{
|
|
746
|
-
uid: RESTRICTED_UID,
|
|
747
|
-
username: 'user2',
|
|
748
|
-
displayName: 'Demo User',
|
|
749
|
-
isAdmin: false
|
|
750
|
-
}
|
|
751
|
-
]
|
|
752
|
-
}
|
|
726
|
+
group: 'group-data-controller'
|
|
753
727
|
},
|
|
754
728
|
{
|
|
755
729
|
uid: 'rule-code',
|
|
756
730
|
path: '/SASjsApi/code/execute',
|
|
757
731
|
type: 'Route',
|
|
758
732
|
setting: 'Deny',
|
|
759
|
-
user:
|
|
760
|
-
uid: RESTRICTED_UID,
|
|
761
|
-
username: 'user2',
|
|
762
|
-
displayName: 'Demo User',
|
|
763
|
-
isAdmin: false
|
|
764
|
-
}
|
|
733
|
+
user: RESTRICTED_UID
|
|
765
734
|
}
|
|
766
735
|
]
|
|
767
736
|
}
|
|
@@ -777,55 +746,24 @@ exports.RECORD_CORPUS = [
|
|
|
777
746
|
body: [
|
|
778
747
|
{
|
|
779
748
|
uid: 'rule-routes',
|
|
780
|
-
path: '/SASjsApi/
|
|
749
|
+
path: '/SASjsApi/drive/file',
|
|
781
750
|
type: 'Route',
|
|
782
751
|
setting: 'Grant',
|
|
783
|
-
group:
|
|
784
|
-
uid: 'group-data-controller',
|
|
785
|
-
name: 'DCGroup',
|
|
786
|
-
description: 'Data Controller users',
|
|
787
|
-
isActive: true,
|
|
788
|
-
users: [
|
|
789
|
-
{
|
|
790
|
-
uid: RESTRICTED_UID,
|
|
791
|
-
username: 'user2',
|
|
792
|
-
displayName: 'Demo User',
|
|
793
|
-
isAdmin: false
|
|
794
|
-
}
|
|
795
|
-
]
|
|
796
|
-
}
|
|
752
|
+
group: 'group-data-controller'
|
|
797
753
|
},
|
|
798
754
|
{
|
|
799
755
|
uid: 'rule-execute',
|
|
800
756
|
path: '/SASjsApi/stp/execute',
|
|
801
757
|
type: 'Route',
|
|
802
758
|
setting: 'Grant',
|
|
803
|
-
group:
|
|
804
|
-
uid: 'group-data-controller',
|
|
805
|
-
name: 'DCGroup',
|
|
806
|
-
description: 'Data Controller users',
|
|
807
|
-
isActive: true,
|
|
808
|
-
users: [
|
|
809
|
-
{
|
|
810
|
-
uid: RESTRICTED_UID,
|
|
811
|
-
username: 'user2',
|
|
812
|
-
displayName: 'Demo User',
|
|
813
|
-
isAdmin: false
|
|
814
|
-
}
|
|
815
|
-
]
|
|
816
|
-
}
|
|
759
|
+
group: 'group-data-controller'
|
|
817
760
|
},
|
|
818
761
|
{
|
|
819
762
|
uid: 'rule-code',
|
|
820
763
|
path: '/SASjsApi/code/execute',
|
|
821
764
|
type: 'Route',
|
|
822
765
|
setting: 'Deny',
|
|
823
|
-
user:
|
|
824
|
-
uid: RESTRICTED_UID,
|
|
825
|
-
username: 'user2',
|
|
826
|
-
displayName: 'Demo User',
|
|
827
|
-
isAdmin: false
|
|
828
|
-
}
|
|
766
|
+
user: RESTRICTED_UID
|
|
829
767
|
}
|
|
830
768
|
]
|
|
831
769
|
}
|
|
@@ -846,7 +784,7 @@ exports.RECORD_CORPUS = [
|
|
|
846
784
|
request: {
|
|
847
785
|
token: ADMIN,
|
|
848
786
|
body: {
|
|
849
|
-
path: '/SASjsApi/
|
|
787
|
+
path: '/SASjsApi/drive/folder',
|
|
850
788
|
type: 'Route',
|
|
851
789
|
setting: 'Grant',
|
|
852
790
|
principalType: 'user',
|
|
@@ -855,7 +793,7 @@ exports.RECORD_CORPUS = [
|
|
|
855
793
|
},
|
|
856
794
|
expect: {
|
|
857
795
|
status: 200,
|
|
858
|
-
partial: { path: '/SASjsApi/
|
|
796
|
+
partial: { path: '/SASjsApi/drive/folder', setting: 'Grant' }
|
|
859
797
|
}
|
|
860
798
|
},
|
|
861
799
|
{
|
|
@@ -866,7 +804,7 @@ exports.RECORD_CORPUS = [
|
|
|
866
804
|
request: {
|
|
867
805
|
token: ADMIN,
|
|
868
806
|
body: {
|
|
869
|
-
path: '/SASjsApi/
|
|
807
|
+
path: '/SASjsApi/drive/rename',
|
|
870
808
|
type: 'Route',
|
|
871
809
|
setting: 'Grant',
|
|
872
810
|
principalType: 'group',
|
|
@@ -876,9 +814,9 @@ exports.RECORD_CORPUS = [
|
|
|
876
814
|
expect: {
|
|
877
815
|
status: 200,
|
|
878
816
|
partial: {
|
|
879
|
-
path: '/SASjsApi/
|
|
817
|
+
path: '/SASjsApi/drive/rename',
|
|
880
818
|
setting: 'Grant',
|
|
881
|
-
group:
|
|
819
|
+
group: 'group-data-controller'
|
|
882
820
|
}
|
|
883
821
|
}
|
|
884
822
|
},
|
|
@@ -890,7 +828,7 @@ exports.RECORD_CORPUS = [
|
|
|
890
828
|
request: {
|
|
891
829
|
token: ADMIN,
|
|
892
830
|
body: {
|
|
893
|
-
path: '/SASjsApi/
|
|
831
|
+
path: '/SASjsApi/drive/deploy',
|
|
894
832
|
type: 'Route',
|
|
895
833
|
setting: 'Grant',
|
|
896
834
|
principalType: 'role',
|
|
@@ -910,7 +848,7 @@ exports.RECORD_CORPUS = [
|
|
|
910
848
|
request: {
|
|
911
849
|
token: ADMIN,
|
|
912
850
|
body: {
|
|
913
|
-
path: '/SASjsApi/
|
|
851
|
+
path: '/SASjsApi/drive/folder',
|
|
914
852
|
type: 'Route',
|
|
915
853
|
setting: 'Grant',
|
|
916
854
|
principalType: 'user',
|
|
@@ -930,7 +868,7 @@ exports.RECORD_CORPUS = [
|
|
|
930
868
|
request: {
|
|
931
869
|
token: RESTRICTED,
|
|
932
870
|
body: {
|
|
933
|
-
path: '/SASjsApi/
|
|
871
|
+
path: '/SASjsApi/drive/folder',
|
|
934
872
|
type: 'Route',
|
|
935
873
|
setting: 'Grant',
|
|
936
874
|
principalType: 'user',
|
|
@@ -947,7 +885,7 @@ exports.RECORD_CORPUS = [
|
|
|
947
885
|
request: {
|
|
948
886
|
token: ADMIN,
|
|
949
887
|
body: {
|
|
950
|
-
path: '/SASjsApi/
|
|
888
|
+
path: '/SASjsApi/drive/rename',
|
|
951
889
|
type: 'Route',
|
|
952
890
|
setting: 'Grant',
|
|
953
891
|
principalType: 'group',
|
|
@@ -964,7 +902,7 @@ exports.RECORD_CORPUS = [
|
|
|
964
902
|
request: {
|
|
965
903
|
token: ADMIN,
|
|
966
904
|
body: {
|
|
967
|
-
path: '/SASjsApi/
|
|
905
|
+
path: '/SASjsApi/drive/file',
|
|
968
906
|
type: 'Route',
|
|
969
907
|
setting: 'Grant',
|
|
970
908
|
principalType: 'group',
|
|
@@ -113,25 +113,14 @@ const createRecordService = (store) => {
|
|
|
113
113
|
const findBy = async (by) => by.uid !== undefined
|
|
114
114
|
? store.userById(by.uid)
|
|
115
115
|
: store.userByName(by.username ?? '');
|
|
116
|
-
const permissionDetails = async (permission) => {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
const user = await store.userById(permission.user);
|
|
125
|
-
if (user)
|
|
126
|
-
response.user = asUser(user);
|
|
127
|
-
}
|
|
128
|
-
if (permission.group) {
|
|
129
|
-
const group = await store.groupById(permission.group);
|
|
130
|
-
if (group)
|
|
131
|
-
response.group = await groupDetails(group);
|
|
132
|
-
}
|
|
133
|
-
return response;
|
|
134
|
-
};
|
|
116
|
+
const permissionDetails = async (permission) => ({
|
|
117
|
+
uid: permission.uid,
|
|
118
|
+
path: permission.path,
|
|
119
|
+
type: permission.type,
|
|
120
|
+
setting: permission.setting,
|
|
121
|
+
...(permission.user ? { user: permission.user } : {}),
|
|
122
|
+
...(permission.group ? { group: permission.group } : {})
|
|
123
|
+
});
|
|
135
124
|
return {
|
|
136
125
|
async listUsers(caller) {
|
|
137
126
|
await requireCaller(store, caller);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../../src/corpus/records.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAA;AAkB/B,qFAAqF;AACrF,eAAO,MAAM,eAAe,EAAE,eAG7B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,eA0C9B,CAAA;AAOD,eAAO,MAAM,aAAa,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../../src/corpus/records.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAA;AAkB/B,qFAAqF;AACrF,eAAO,MAAM,eAAe,EAAE,eAG7B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,eA0C9B,CAAA;AAOD,eAAO,MAAM,aAAa,EAAE,UAAU,EA4kCrC,CAAA"}
|
|
@@ -401,7 +401,7 @@ export const RECORD_CORPUS = [
|
|
|
401
401
|
request: {
|
|
402
402
|
token: RESTRICTED,
|
|
403
403
|
params: { username: 'user2' },
|
|
404
|
-
body: { password: '
|
|
404
|
+
body: { password: 'wrong123' }
|
|
405
405
|
},
|
|
406
406
|
expect: { status: 401, error: 'Invalid password.' }
|
|
407
407
|
},
|
|
@@ -710,55 +710,24 @@ export const RECORD_CORPUS = [
|
|
|
710
710
|
body: [
|
|
711
711
|
{
|
|
712
712
|
uid: 'rule-routes',
|
|
713
|
-
path: '/SASjsApi/
|
|
713
|
+
path: '/SASjsApi/drive/file',
|
|
714
714
|
type: 'Route',
|
|
715
715
|
setting: 'Grant',
|
|
716
|
-
group:
|
|
717
|
-
uid: 'group-data-controller',
|
|
718
|
-
name: 'DCGroup',
|
|
719
|
-
description: 'Data Controller users',
|
|
720
|
-
isActive: true,
|
|
721
|
-
users: [
|
|
722
|
-
{
|
|
723
|
-
uid: RESTRICTED_UID,
|
|
724
|
-
username: 'user2',
|
|
725
|
-
displayName: 'Demo User',
|
|
726
|
-
isAdmin: false
|
|
727
|
-
}
|
|
728
|
-
]
|
|
729
|
-
}
|
|
716
|
+
group: 'group-data-controller'
|
|
730
717
|
},
|
|
731
718
|
{
|
|
732
719
|
uid: 'rule-execute',
|
|
733
720
|
path: '/SASjsApi/stp/execute',
|
|
734
721
|
type: 'Route',
|
|
735
722
|
setting: 'Grant',
|
|
736
|
-
group:
|
|
737
|
-
uid: 'group-data-controller',
|
|
738
|
-
name: 'DCGroup',
|
|
739
|
-
description: 'Data Controller users',
|
|
740
|
-
isActive: true,
|
|
741
|
-
users: [
|
|
742
|
-
{
|
|
743
|
-
uid: RESTRICTED_UID,
|
|
744
|
-
username: 'user2',
|
|
745
|
-
displayName: 'Demo User',
|
|
746
|
-
isAdmin: false
|
|
747
|
-
}
|
|
748
|
-
]
|
|
749
|
-
}
|
|
723
|
+
group: 'group-data-controller'
|
|
750
724
|
},
|
|
751
725
|
{
|
|
752
726
|
uid: 'rule-code',
|
|
753
727
|
path: '/SASjsApi/code/execute',
|
|
754
728
|
type: 'Route',
|
|
755
729
|
setting: 'Deny',
|
|
756
|
-
user:
|
|
757
|
-
uid: RESTRICTED_UID,
|
|
758
|
-
username: 'user2',
|
|
759
|
-
displayName: 'Demo User',
|
|
760
|
-
isAdmin: false
|
|
761
|
-
}
|
|
730
|
+
user: RESTRICTED_UID
|
|
762
731
|
}
|
|
763
732
|
]
|
|
764
733
|
}
|
|
@@ -774,55 +743,24 @@ export const RECORD_CORPUS = [
|
|
|
774
743
|
body: [
|
|
775
744
|
{
|
|
776
745
|
uid: 'rule-routes',
|
|
777
|
-
path: '/SASjsApi/
|
|
746
|
+
path: '/SASjsApi/drive/file',
|
|
778
747
|
type: 'Route',
|
|
779
748
|
setting: 'Grant',
|
|
780
|
-
group:
|
|
781
|
-
uid: 'group-data-controller',
|
|
782
|
-
name: 'DCGroup',
|
|
783
|
-
description: 'Data Controller users',
|
|
784
|
-
isActive: true,
|
|
785
|
-
users: [
|
|
786
|
-
{
|
|
787
|
-
uid: RESTRICTED_UID,
|
|
788
|
-
username: 'user2',
|
|
789
|
-
displayName: 'Demo User',
|
|
790
|
-
isAdmin: false
|
|
791
|
-
}
|
|
792
|
-
]
|
|
793
|
-
}
|
|
749
|
+
group: 'group-data-controller'
|
|
794
750
|
},
|
|
795
751
|
{
|
|
796
752
|
uid: 'rule-execute',
|
|
797
753
|
path: '/SASjsApi/stp/execute',
|
|
798
754
|
type: 'Route',
|
|
799
755
|
setting: 'Grant',
|
|
800
|
-
group:
|
|
801
|
-
uid: 'group-data-controller',
|
|
802
|
-
name: 'DCGroup',
|
|
803
|
-
description: 'Data Controller users',
|
|
804
|
-
isActive: true,
|
|
805
|
-
users: [
|
|
806
|
-
{
|
|
807
|
-
uid: RESTRICTED_UID,
|
|
808
|
-
username: 'user2',
|
|
809
|
-
displayName: 'Demo User',
|
|
810
|
-
isAdmin: false
|
|
811
|
-
}
|
|
812
|
-
]
|
|
813
|
-
}
|
|
756
|
+
group: 'group-data-controller'
|
|
814
757
|
},
|
|
815
758
|
{
|
|
816
759
|
uid: 'rule-code',
|
|
817
760
|
path: '/SASjsApi/code/execute',
|
|
818
761
|
type: 'Route',
|
|
819
762
|
setting: 'Deny',
|
|
820
|
-
user:
|
|
821
|
-
uid: RESTRICTED_UID,
|
|
822
|
-
username: 'user2',
|
|
823
|
-
displayName: 'Demo User',
|
|
824
|
-
isAdmin: false
|
|
825
|
-
}
|
|
763
|
+
user: RESTRICTED_UID
|
|
826
764
|
}
|
|
827
765
|
]
|
|
828
766
|
}
|
|
@@ -843,7 +781,7 @@ export const RECORD_CORPUS = [
|
|
|
843
781
|
request: {
|
|
844
782
|
token: ADMIN,
|
|
845
783
|
body: {
|
|
846
|
-
path: '/SASjsApi/
|
|
784
|
+
path: '/SASjsApi/drive/folder',
|
|
847
785
|
type: 'Route',
|
|
848
786
|
setting: 'Grant',
|
|
849
787
|
principalType: 'user',
|
|
@@ -852,7 +790,7 @@ export const RECORD_CORPUS = [
|
|
|
852
790
|
},
|
|
853
791
|
expect: {
|
|
854
792
|
status: 200,
|
|
855
|
-
partial: { path: '/SASjsApi/
|
|
793
|
+
partial: { path: '/SASjsApi/drive/folder', setting: 'Grant' }
|
|
856
794
|
}
|
|
857
795
|
},
|
|
858
796
|
{
|
|
@@ -863,7 +801,7 @@ export const RECORD_CORPUS = [
|
|
|
863
801
|
request: {
|
|
864
802
|
token: ADMIN,
|
|
865
803
|
body: {
|
|
866
|
-
path: '/SASjsApi/
|
|
804
|
+
path: '/SASjsApi/drive/rename',
|
|
867
805
|
type: 'Route',
|
|
868
806
|
setting: 'Grant',
|
|
869
807
|
principalType: 'group',
|
|
@@ -873,9 +811,9 @@ export const RECORD_CORPUS = [
|
|
|
873
811
|
expect: {
|
|
874
812
|
status: 200,
|
|
875
813
|
partial: {
|
|
876
|
-
path: '/SASjsApi/
|
|
814
|
+
path: '/SASjsApi/drive/rename',
|
|
877
815
|
setting: 'Grant',
|
|
878
|
-
group:
|
|
816
|
+
group: 'group-data-controller'
|
|
879
817
|
}
|
|
880
818
|
}
|
|
881
819
|
},
|
|
@@ -887,7 +825,7 @@ export const RECORD_CORPUS = [
|
|
|
887
825
|
request: {
|
|
888
826
|
token: ADMIN,
|
|
889
827
|
body: {
|
|
890
|
-
path: '/SASjsApi/
|
|
828
|
+
path: '/SASjsApi/drive/deploy',
|
|
891
829
|
type: 'Route',
|
|
892
830
|
setting: 'Grant',
|
|
893
831
|
principalType: 'role',
|
|
@@ -907,7 +845,7 @@ export const RECORD_CORPUS = [
|
|
|
907
845
|
request: {
|
|
908
846
|
token: ADMIN,
|
|
909
847
|
body: {
|
|
910
|
-
path: '/SASjsApi/
|
|
848
|
+
path: '/SASjsApi/drive/folder',
|
|
911
849
|
type: 'Route',
|
|
912
850
|
setting: 'Grant',
|
|
913
851
|
principalType: 'user',
|
|
@@ -927,7 +865,7 @@ export const RECORD_CORPUS = [
|
|
|
927
865
|
request: {
|
|
928
866
|
token: RESTRICTED,
|
|
929
867
|
body: {
|
|
930
|
-
path: '/SASjsApi/
|
|
868
|
+
path: '/SASjsApi/drive/folder',
|
|
931
869
|
type: 'Route',
|
|
932
870
|
setting: 'Grant',
|
|
933
871
|
principalType: 'user',
|
|
@@ -944,7 +882,7 @@ export const RECORD_CORPUS = [
|
|
|
944
882
|
request: {
|
|
945
883
|
token: ADMIN,
|
|
946
884
|
body: {
|
|
947
|
-
path: '/SASjsApi/
|
|
885
|
+
path: '/SASjsApi/drive/rename',
|
|
948
886
|
type: 'Route',
|
|
949
887
|
setting: 'Grant',
|
|
950
888
|
principalType: 'group',
|
|
@@ -961,7 +899,7 @@ export const RECORD_CORPUS = [
|
|
|
961
899
|
request: {
|
|
962
900
|
token: ADMIN,
|
|
963
901
|
body: {
|
|
964
|
-
path: '/SASjsApi/
|
|
902
|
+
path: '/SASjsApi/drive/file',
|
|
965
903
|
type: 'Route',
|
|
966
904
|
setting: 'Grant',
|
|
967
905
|
principalType: 'group',
|
|
@@ -25,13 +25,24 @@ export interface GroupDetailsResponse extends GroupResponse {
|
|
|
25
25
|
isActive: boolean;
|
|
26
26
|
users: UserResponse[];
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* A permission rule as the routes report one.
|
|
30
|
+
*
|
|
31
|
+
* The principal is the identifier, not the whole account: a rule is a row in a
|
|
32
|
+
* table, and a host on any database can produce `user` or `group` as a uid
|
|
33
|
+
* without a join or a populate step. A client that wants the name asks for the
|
|
34
|
+
* account it names, which it can do whether the store is Mongo, a browser's
|
|
35
|
+
* IndexedDB or a file.
|
|
36
|
+
*/
|
|
28
37
|
export interface PermissionResponse {
|
|
29
38
|
uid: string;
|
|
30
39
|
path: string;
|
|
31
40
|
type: string;
|
|
32
41
|
setting: string;
|
|
33
|
-
user
|
|
34
|
-
|
|
42
|
+
/** The uid of the account the rule is assigned to, when it is a user's. */
|
|
43
|
+
user?: string;
|
|
44
|
+
/** The uid of the group the rule is assigned to, when it is a group's. */
|
|
45
|
+
group?: string;
|
|
35
46
|
}
|
|
36
47
|
export interface RecordService {
|
|
37
48
|
listUsers(caller: Subject | undefined): Promise<UserResponse[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../../src/identity/records.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,oBAAoB,EAGpB,aAAa,EAEb,OAAO,EACR,MAAM,YAAY,CAAA;AAEnB,iFAAiF;AACjF,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,QAAQ,EAAE,OAAO,CAAA;IACjB,qBAAqB,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC9D;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,YAAY,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../../src/identity/records.ts"],"names":[],"mappings":"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"}
|
|
@@ -109,25 +109,14 @@ export const createRecordService = (store) => {
|
|
|
109
109
|
const findBy = async (by) => by.uid !== undefined
|
|
110
110
|
? store.userById(by.uid)
|
|
111
111
|
: store.userByName(by.username ?? '');
|
|
112
|
-
const permissionDetails = async (permission) => {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
const user = await store.userById(permission.user);
|
|
121
|
-
if (user)
|
|
122
|
-
response.user = asUser(user);
|
|
123
|
-
}
|
|
124
|
-
if (permission.group) {
|
|
125
|
-
const group = await store.groupById(permission.group);
|
|
126
|
-
if (group)
|
|
127
|
-
response.group = await groupDetails(group);
|
|
128
|
-
}
|
|
129
|
-
return response;
|
|
130
|
-
};
|
|
112
|
+
const permissionDetails = async (permission) => ({
|
|
113
|
+
uid: permission.uid,
|
|
114
|
+
path: permission.path,
|
|
115
|
+
type: permission.type,
|
|
116
|
+
setting: permission.setting,
|
|
117
|
+
...(permission.user ? { user: permission.user } : {}),
|
|
118
|
+
...(permission.group ? { group: permission.group } : {})
|
|
119
|
+
});
|
|
131
120
|
return {
|
|
132
121
|
async listUsers(caller) {
|
|
133
122
|
await requireCaller(store, caller);
|
package/package.json
CHANGED