@kwiz/node 1.0.25 → 1.0.27
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/SPO/common.d.ts +4 -1
- package/dist/SPO/common.js +7 -3
- package/dist/SPO/common.js.map +1 -1
- package/dist/auth/msal.d.ts +29 -1
- package/dist/auth/msal.js +50 -2
- package/dist/auth/msal.js.map +1 -1
- package/dist/graph/graph.d.ts +4 -1
- package/dist/graph/graph.js +8 -3
- package/dist/graph/graph.js.map +1 -1
- package/package.json +2 -2
package/dist/SPO/common.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import { AuthContextType, ITenantInfo } from "@kwiz/common";
|
|
2
2
|
export declare function ConfigureSPOAuth(config?: AuthContextType): void;
|
|
3
|
-
export declare function getAxiosConfigSharePoint(tenantInfo: ITenantInfo, hostName: string,
|
|
3
|
+
export declare function getAxiosConfigSharePoint(tenantInfo: ITenantInfo, hostName: string, options?: {
|
|
4
|
+
userToken?: string;
|
|
5
|
+
clearTokenCache?: boolean;
|
|
6
|
+
} | boolean): Promise<import("axios").AxiosRequestConfig<any>>;
|
package/dist/SPO/common.js
CHANGED
|
@@ -18,15 +18,19 @@ function ConfigureSPOAuth(config) {
|
|
|
18
18
|
auth = config;
|
|
19
19
|
}
|
|
20
20
|
exports.ConfigureSPOAuth = ConfigureSPOAuth;
|
|
21
|
-
function getAxiosConfigSharePoint(tenantInfo, hostName,
|
|
21
|
+
function getAxiosConfigSharePoint(tenantInfo, hostName, options) {
|
|
22
22
|
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
if ((0, common_1.isBoolean)(options)) //old signature had a clearCache boolean
|
|
24
|
+
options = { clearTokenCache: options === true };
|
|
23
25
|
if ((0, common_1.isNullOrUndefined)(auth))
|
|
24
26
|
throw Error("Call ConfigureSPOAuth first");
|
|
25
27
|
// only certificate supported
|
|
26
28
|
// DisableCustomAppAuthentication property, that disable this kind of auth., however it can be overriden using this command:
|
|
27
29
|
// Set-SPOTenant -DisableCustomAppAuthentication $false
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
const token = (0, common_1.isNotEmptyString)(options === null || options === void 0 ? void 0 : options.userToken)
|
|
31
|
+
? options.userToken
|
|
32
|
+
: yield (0, msal_1.GetMSALToken)(tenantInfo, (0, common_1.GetMSALSiteScope)(hostName), auth, options === null || options === void 0 ? void 0 : options.clearTokenCache);
|
|
33
|
+
const config = (0, axios_1.getAxiosConfigBearer)(token, { contantType: "application/json; odata=nometadata" });
|
|
30
34
|
return config;
|
|
31
35
|
});
|
|
32
36
|
}
|
package/dist/SPO/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/SPO/common.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/SPO/common.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAA8H;AAC9H,uCAA4C;AAC5C,oCAAgD;AAEhD,IAAI,IAAI,GAAoB,IAAI,CAAC;AACjC,SAAgB,gBAAgB,CAAC,MAAwB;IACrD,IAAI,GAAG,MAAM,CAAC;AAClB,CAAC;AAFD,4CAEC;AACD,SAAsB,wBAAwB,CAAC,UAAuB,EAAE,QAAgB,EAAE,OAI/E;;QACP,IAAI,IAAA,kBAAS,EAAC,OAAO,CAAC,EAAC,wCAAwC;YAC3D,OAAO,GAAG,EAAE,eAAe,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;QAEpD,IAAI,IAAA,0BAAiB,EAAC,IAAI,CAAC;YAAE,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACxE,6BAA6B;QAC7B,4HAA4H;QAC5H,uDAAuD;QACvD,MAAM,KAAK,GAAG,IAAA,yBAAgB,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC;YAC9C,CAAC,CAAC,OAAO,CAAC,SAAS;YACnB,CAAC,CAAC,MAAM,IAAA,mBAAY,EAAC,UAAU,EAAE,IAAA,yBAAgB,EAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,CAAC,CAAC;QACjG,MAAM,MAAM,GAAG,IAAA,4BAAoB,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC,CAAC;QAClG,OAAO,MAAM,CAAC;IAClB,CAAC;CAAA;AAjBD,4DAiBC"}
|
package/dist/auth/msal.d.ts
CHANGED
|
@@ -1,3 +1,31 @@
|
|
|
1
1
|
import { AuthContextType, ITenantInfo } from "@kwiz/common";
|
|
2
|
-
/** client secret not supported by SharePoint, must use certificate */
|
|
2
|
+
/** Get app-only token. client secret not supported by SharePoint, must use certificate */
|
|
3
3
|
export declare function GetMSALToken(tenantInfo: ITenantInfo, scope: string, auth: AuthContextType, clearCache?: boolean): Promise<string>;
|
|
4
|
+
export interface iUserTokenAccountInfo {
|
|
5
|
+
homeAccountId: string;
|
|
6
|
+
environment: string;
|
|
7
|
+
tenantId: string;
|
|
8
|
+
username: string;
|
|
9
|
+
localAccountId: string;
|
|
10
|
+
name?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface iUserTokenRequestInfo {
|
|
13
|
+
scopes: string[];
|
|
14
|
+
/** a page in your app that will get the code in query after user logs in, call GetMSALUserToken with that code */
|
|
15
|
+
redirectUri: string;
|
|
16
|
+
/** pass a state to the login uri page to validate and/or restore the user's app state (page he came from?) */
|
|
17
|
+
state?: string;
|
|
18
|
+
/** a redirect handler in case we need to take the user to the login page */
|
|
19
|
+
redirect: (url: string) => void;
|
|
20
|
+
/** code you got from redirectUri */
|
|
21
|
+
code?: string;
|
|
22
|
+
/** if you kept a user account from previous GetMSALUserToken result - try to use it to get a silent token/refreshed token */
|
|
23
|
+
account?: iUserTokenAccountInfo;
|
|
24
|
+
}
|
|
25
|
+
/** Get user token.
|
|
26
|
+
* if code or account proivded will attempt to get a token, otherwise will redirect the user
|
|
27
|
+
* client secret not supported by SharePoint, must use certificate */
|
|
28
|
+
export declare function GetMSALUserToken(tenantInfo: ITenantInfo, auth: AuthContextType, info: iUserTokenRequestInfo, clearCache?: boolean): Promise<{
|
|
29
|
+
accessToken: string;
|
|
30
|
+
account: iUserTokenAccountInfo;
|
|
31
|
+
} | null>;
|
package/dist/auth/msal.js
CHANGED
|
@@ -9,11 +9,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.GetMSALToken = void 0;
|
|
12
|
+
exports.GetMSALUserToken = exports.GetMSALToken = void 0;
|
|
13
13
|
const msal_node_1 = require("@azure/msal-node");
|
|
14
14
|
const common_1 = require("@kwiz/common");
|
|
15
15
|
//find tenant id? https://login.microsoftonline.com/kwizcom.onmicrosoft.com/.well-known/openid-configuration
|
|
16
16
|
//https://stackoverflow.com/questions/54771270/msal-ad-token-not-valid-with-sharepoint-online-csom
|
|
17
|
+
const logger = new common_1.CommonLogger("msal");
|
|
17
18
|
var apps = {};
|
|
18
19
|
function GetApp(tenantInfo, auth) {
|
|
19
20
|
let key = `${tenantInfo.idOrName}|${auth.authenticationMode}`;
|
|
@@ -39,7 +40,7 @@ function GetApp(tenantInfo, auth) {
|
|
|
39
40
|
}
|
|
40
41
|
return apps[key];
|
|
41
42
|
}
|
|
42
|
-
/** client secret not supported by SharePoint, must use certificate */
|
|
43
|
+
/** Get app-only token. client secret not supported by SharePoint, must use certificate */
|
|
43
44
|
function GetMSALToken(tenantInfo, scope, auth, clearCache) {
|
|
44
45
|
return __awaiter(this, void 0, void 0, function* () {
|
|
45
46
|
const app = GetApp(tenantInfo, auth);
|
|
@@ -52,4 +53,51 @@ function GetMSALToken(tenantInfo, scope, auth, clearCache) {
|
|
|
52
53
|
});
|
|
53
54
|
}
|
|
54
55
|
exports.GetMSALToken = GetMSALToken;
|
|
56
|
+
/** Get user token.
|
|
57
|
+
* if code or account proivded will attempt to get a token, otherwise will redirect the user
|
|
58
|
+
* client secret not supported by SharePoint, must use certificate */
|
|
59
|
+
function GetMSALUserToken(tenantInfo, auth, info, clearCache) {
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
const app = GetApp(tenantInfo, auth);
|
|
62
|
+
if (clearCache)
|
|
63
|
+
app.clearCache();
|
|
64
|
+
if (info.account) {
|
|
65
|
+
try {
|
|
66
|
+
const result = yield app.acquireTokenSilent({
|
|
67
|
+
account: info.account,
|
|
68
|
+
scopes: info.scopes,
|
|
69
|
+
redirectUri: info.redirectUri
|
|
70
|
+
});
|
|
71
|
+
return {
|
|
72
|
+
accessToken: result.accessToken,
|
|
73
|
+
account: result.account
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
logger.error(e);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (info.code) {
|
|
81
|
+
try {
|
|
82
|
+
const result = yield app.acquireTokenByCode({
|
|
83
|
+
code: info.code,
|
|
84
|
+
scopes: info.scopes,
|
|
85
|
+
redirectUri: info.redirectUri,
|
|
86
|
+
state: info.state
|
|
87
|
+
});
|
|
88
|
+
return {
|
|
89
|
+
accessToken: result.accessToken,
|
|
90
|
+
account: result.account
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
logger.error(e);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const loginUrl = yield app.getAuthCodeUrl(info);
|
|
98
|
+
info.redirect(loginUrl);
|
|
99
|
+
return null;
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
exports.GetMSALUserToken = GetMSALUserToken;
|
|
55
103
|
//# sourceMappingURL=msal.js.map
|
package/dist/auth/msal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msal.js","sourceRoot":"","sources":["../../src/auth/msal.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAAiE;AACjE,
|
|
1
|
+
{"version":3,"file":"msal.js","sourceRoot":"","sources":["../../src/auth/msal.ts"],"names":[],"mappings":"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"}
|
package/dist/graph/graph.d.ts
CHANGED
|
@@ -2,4 +2,7 @@ import { AuthContextType, ITenantInfo } from "@kwiz/common";
|
|
|
2
2
|
/** "https://graph.microsoft.com" */
|
|
3
3
|
export declare const graphScope = "https://graph.microsoft.com";
|
|
4
4
|
export declare function ConfigureGraphAuth(config?: AuthContextType): void;
|
|
5
|
-
export declare function getAxiosConfigGraph(tenantInfo: ITenantInfo,
|
|
5
|
+
export declare function getAxiosConfigGraph(tenantInfo: ITenantInfo, options?: {
|
|
6
|
+
userToken?: string;
|
|
7
|
+
clearTokenCache?: boolean;
|
|
8
|
+
} | boolean): Promise<import("axios").AxiosRequestConfig<any>>;
|
package/dist/graph/graph.js
CHANGED
|
@@ -20,13 +20,18 @@ function ConfigureGraphAuth(config) {
|
|
|
20
20
|
auth = config;
|
|
21
21
|
}
|
|
22
22
|
exports.ConfigureGraphAuth = ConfigureGraphAuth;
|
|
23
|
-
function getAxiosConfigGraph(tenantInfo,
|
|
23
|
+
function getAxiosConfigGraph(tenantInfo, options) {
|
|
24
24
|
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
if ((0, common_1.isBoolean)(options)) //old signature had a clearCache boolean
|
|
26
|
+
options = { clearTokenCache: options === true };
|
|
25
27
|
if ((0, common_1.isNullOrUndefined)(auth))
|
|
26
28
|
throw Error("Call ConfigureGraphAuth first");
|
|
27
29
|
// secret or certificate supported
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
const token = (0, common_1.isNotEmptyString)(options === null || options === void 0 ? void 0 : options.userToken)
|
|
31
|
+
? options.userToken
|
|
32
|
+
: yield (0, msal_1.GetMSALToken)(tenantInfo, exports.graphScope, auth, options === null || options === void 0 ? void 0 : options.clearTokenCache);
|
|
33
|
+
const config = (0, axios_1.getAxiosConfigBearer)(token);
|
|
34
|
+
return config;
|
|
30
35
|
});
|
|
31
36
|
}
|
|
32
37
|
exports.getAxiosConfigGraph = getAxiosConfigGraph;
|
package/dist/graph/graph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/graph/graph.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/graph/graph.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAA4G;AAC5G,uCAA4C;AAC5C,oCAAgD;AAEhD,oCAAoC;AACvB,QAAA,UAAU,GAAG,6BAA6B,CAAC;AAExD,IAAI,IAAI,GAAoB,IAAI,CAAC;AACjC,SAAgB,kBAAkB,CAAC,MAAwB;IACvD,IAAI,GAAG,MAAM,CAAC;AAClB,CAAC;AAFD,gDAEC;AACD,SAAsB,mBAAmB,CAAC,UAAuB,EAAE,OAIxD;;QACP,IAAI,IAAA,kBAAS,EAAC,OAAO,CAAC,EAAC,wCAAwC;YAC3D,OAAO,GAAG,EAAE,eAAe,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;QAEpD,IAAI,IAAA,0BAAiB,EAAC,IAAI,CAAC;YAAE,MAAM,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAE1E,kCAAkC;QAClC,MAAM,KAAK,GAAG,IAAA,yBAAgB,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC;YAC9C,CAAC,CAAC,OAAO,CAAC,SAAS;YACnB,CAAC,CAAC,MAAM,IAAA,mBAAY,EAAC,UAAU,EAAE,kBAAU,EAAE,IAAI,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,CAAC,CAAC;QACjF,MAAM,MAAM,GAAG,IAAA,4BAAoB,EAAC,KAAK,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC;IAClB,CAAC;CAAA;AAhBD,kDAgBC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kwiz/node",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.27",
|
|
4
4
|
"description": "KWIZ utilities and helpers for node applications",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"dependencies": {
|
|
71
71
|
"@azure/data-tables": "^13.2.2",
|
|
72
72
|
"@azure/msal-node": "^2.6.4",
|
|
73
|
-
"@kwiz/common": "^1.0.
|
|
73
|
+
"@kwiz/common": "^1.0.173",
|
|
74
74
|
"axios": "^1.6.7",
|
|
75
75
|
"esbuild": "^0.19.12",
|
|
76
76
|
"get-tsconfig": "^4.7.2",
|