@icure/api 8.3.5 → 8.3.6

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.
@@ -20,6 +20,9 @@ export declare enum OAuthThirdParty {
20
20
  LINKEDIN = "linkedin",
21
21
  GITHUB = "github"
22
22
  }
23
+ export declare enum DigitalIdProvider {
24
+ BE_FAS = "be.fas"
25
+ }
23
26
  export declare class IccAuthApi {
24
27
  host: string;
25
28
  headers: Array<XHR.Header>;
@@ -47,8 +50,14 @@ export declare class IccAuthApi {
47
50
  * @summary login
48
51
  * @param thirdParty The third party OAuth service used to authenticate the user
49
52
  * @param token The token returned by the third party OAuth service
53
+ * @param groupId the group id where to login to.
54
+ */
55
+ loginWithThirdPartyToken(thirdParty: string, token: string, groupId?: string): Promise<AuthenticationResponse>;
56
+ /**
57
+ * Lite only
58
+ * /auth/
50
59
  */
51
- loginWithThirdPartyToken(thirdParty: string, token: string): Promise<AuthenticationResponse>;
60
+ loginWithCloudToken(issuer: string, cloudJwt: string): Promise<AuthenticationResponse>;
52
61
  /**
53
62
  * Logout
54
63
  * @summary logout
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IccAuthApi = exports.OAuthThirdParty = void 0;
3
+ exports.IccAuthApi = exports.DigitalIdProvider = exports.OAuthThirdParty = void 0;
4
4
  /**
5
5
  * iCure Data Stack API Documentation
6
6
  * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.
@@ -24,6 +24,10 @@ var OAuthThirdParty;
24
24
  OAuthThirdParty["LINKEDIN"] = "linkedin";
25
25
  OAuthThirdParty["GITHUB"] = "github";
26
26
  })(OAuthThirdParty || (exports.OAuthThirdParty = OAuthThirdParty = {}));
27
+ var DigitalIdProvider;
28
+ (function (DigitalIdProvider) {
29
+ DigitalIdProvider["BE_FAS"] = "be.fas";
30
+ })(DigitalIdProvider || (exports.DigitalIdProvider = DigitalIdProvider = {}));
27
31
  class IccAuthApi {
28
32
  constructor(host, headers, authenticationProvider, fetchImpl) {
29
33
  this.host = (0, IccRestApiPath_1.iccRestApiPath)(host);
@@ -83,11 +87,12 @@ class IccAuthApi {
83
87
  * @summary login
84
88
  * @param thirdParty The third party OAuth service used to authenticate the user
85
89
  * @param token The token returned by the third party OAuth service
90
+ * @param groupId the group id where to login to.
86
91
  */
87
- loginWithThirdPartyToken(thirdParty, token) {
92
+ loginWithThirdPartyToken(thirdParty, token, groupId) {
88
93
  let _body = null;
89
94
  _body = token;
90
- const _url = this.host + `/auth/login/${thirdParty}` + '?ts=' + new Date().getTime();
95
+ const _url = this.host + `/auth/login/${thirdParty}` + '?ts=' + new Date().getTime() + (groupId ? `&groupId=${encodeURIComponent(String(groupId))}` : '');
91
96
  let headers = this.headers;
92
97
  headers = headers
93
98
  .filter((h) => { var _a; return h.header !== 'Content-Type' && ((_a = h.header) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== 'authorization'; })
@@ -97,6 +102,18 @@ class IccAuthApi {
97
102
  .then((doc) => new AuthenticationResponse_1.AuthenticationResponse(doc.body))
98
103
  .catch((err) => this.handleError(err));
99
104
  }
105
+ /**
106
+ * Lite only
107
+ * /auth/
108
+ */
109
+ loginWithCloudToken(issuer, cloudJwt) {
110
+ let _body = null;
111
+ const _url = this.host + `/auth/login/icureCloud` + '?ts=' + new Date().getTime() + `&issuer=${encodeURIComponent(String(issuer))}`;
112
+ let headers = [...this.headers, new XHR_1.XHR.Header('Cloud-Auth-Token', cloudJwt)];
113
+ return XHR_1.XHR.sendCommand('POST', _url, headers.filter((h) => { var _a; return ((_a = h.header) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== 'authorization'; }), _body, this.fetchImpl)
114
+ .then((doc) => new AuthenticationResponse_1.AuthenticationResponse(doc.body))
115
+ .catch((err) => this.handleError(err));
116
+ }
100
117
  /**
101
118
  * Logout
102
119
  * @summary logout
@@ -1 +1 @@
1
- {"version":3,"file":"IccAuthApi.js","sourceRoot":"","sources":["../../../icc-api/api/IccAuthApi.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AuthenticationResponse } from '../model/AuthenticationResponse'\nimport { LoginCredentials } from '../model/LoginCredentials'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport enum OAuthThirdParty {\n GOOGLE = 'google',\n MICROSOFT = 'microsoft',\n APPLE = 'apple',\n LINKEDIN = 'linkedin',\n GITHUB = 'github',\n}\n\nexport class IccAuthApi {\n host: string\n headers: Array<XHR.Header>\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array<XHR.Header>) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Check login using groupId/userId and password\n * @summary check\n * @param body\n */\n check(body?: LoginCredentials): Promise<AuthenticationResponse> {\n let _body = null\n _body = body\n\n const _url = this.host + `/auth/check` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers\n .filter((h) => h.header !== 'Content-Type' && h.header?.toLowerCase() !== 'authorization')\n .concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl)\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Login using username and password\n * @summary login\n * @param body\n * @param groupId the group id where to login to.\n * @param duration the duration of the returned JWT authentication token, in seconds.\n */\n login(body?: LoginCredentials, groupId?: string, duration?: number): Promise<AuthenticationResponse> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/auth/login` +\n '?ts=' +\n new Date().getTime() +\n (groupId ? `&groupId=${encodeURIComponent(String(groupId))}` : '') +\n (!!duration ? `&duration=${duration}` : '')\n let headers = this.headers\n headers = headers\n .filter((h) => h.header !== 'Content-Type' && h.header?.toLowerCase() !== 'authorization')\n .concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined)\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Login using third party OAuth provider token\n * @summary login\n * @param thirdParty The third party OAuth service used to authenticate the user\n * @param token The token returned by the third party OAuth service\n */\n loginWithThirdPartyToken(thirdParty: string, token: string): Promise<AuthenticationResponse> {\n let _body = null\n _body = token\n\n const _url = this.host + `/auth/login/${thirdParty}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers\n .filter((h) => h.header !== 'Content-Type' && h.header?.toLowerCase() !== 'authorization')\n .concat(new XHR.Header('Content-Type', 'application/json'))\n .concat(new XHR.Header('token', token))\n return XHR.sendCommand('POST', _url, headers, null, this.fetchImpl, undefined)\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Logout\n * @summary logout\n */\n logout(): Promise<AuthenticationResponse> {\n let _body = null\n\n const _url = this.host + `/auth/logout` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand(\n 'GET',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Logout\n * @summary logout\n */\n logoutPost(): Promise<AuthenticationResponse> {\n let _body = null\n\n const _url = this.host + `/auth/logout` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get token for subsequent operation\n * @summary token\n * @param method\n * @param path\n */\n token(method: string, path: string): Promise<string> {\n let _body = null\n\n const _url = this.host + `/auth/token/${encodeURIComponent(String(method))}/${encodeURIComponent(String(path))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)) as string)\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Gets a new authentication and refresh JWT for a different group\n */\n switchGroup(refreshJWT: string, groupId: string): Promise<AuthenticationResponse> {\n let _body = null\n\n const _url = this.host + `/auth/switch/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = [...this.headers, new XHR.Header('Refresh-Token', refreshJWT)]\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Gets a new authentication JWT using the refresh JWT\n * @summary refresh\n */\n refreshAuthenticationJWT(refreshJWT: string): Promise<AuthenticationResponse> {\n let _body = null\n\n const _url = this.host + `/auth/refresh` + '?ts=' + new Date().getTime()\n let headers = [...this.headers, new XHR.Header('Refresh-Token', refreshJWT)]\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Switch groups using the refresh JWT\n * @summary switch groups\n */\n switchGroupUsingRefreshJWT(groupId: string): Promise<AuthenticationResponse> {\n return this.authenticationProvider.getIcureTokens().then((tokens) => {\n let _body = null\n const _url = this.host + `/auth/switch/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n\n const refreshToken = tokens?.refreshToken\n if (!refreshToken) {\n throw new Error('No refresh token found')\n }\n let headers = [...this.headers, new XHR.Header('Refresh-Token', refreshToken)]\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n })\n }\n\n /**\n * Invalidates a refresh JWT\n * @summary invalidate\n */\n invalidateRefreshJWT(refreshJWT: string): Promise<AuthenticationResponse> {\n let _body = null\n\n const _url = this.host + `/auth/invalidate` + '?ts=' + new Date().getTime()\n let headers = [...this.headers, new XHR.Header('Refresh-Token', refreshJWT)]\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n"]}
1
+ {"version":3,"file":"IccAuthApi.js","sourceRoot":"","sources":["../../../icc-api/api/IccAuthApi.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;GAUG;AACH,+BAA2B;AAC3B,4EAAwE;AAExE,wFAA8G;AAC9G,qDAAiD;AAEjD,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,0CAAuB,CAAA;IACvB,kCAAe,CAAA;IACf,wCAAqB,CAAA;IACrB,oCAAiB,CAAA;AACnB,CAAC,EANW,eAAe,+BAAf,eAAe,QAM1B;AAED,IAAY,iBAEX;AAFD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;AACnB,CAAC,EAFW,iBAAiB,iCAAjB,iBAAiB,QAE5B;AAED,MAAa,UAAU;IAMrB,YACE,IAAY,EACZ,OAAY,EACZ,sBAA+C,EAC/C,SAAyE;QAEzE,IAAI,CAAC,IAAI,GAAG,IAAA,+BAAc,EAAC,IAAI,CAAC,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAG,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7E,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,iDAAwB,EAAE,CAAA;QAChH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAED,UAAU,CAAC,CAAoB;QAC7B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;IAClB,CAAC;IAED,WAAW,CAAC,CAAe;QACzB,MAAM,CAAC,CAAA;IACT,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAuB;QAC3B,IAAI,KAAK,GAAG,IAAI,CAAA;QAChB,KAAK,GAAG,IAAI,CAAA;QAEZ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,aAAa,GAAG,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;QACtE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC1B,OAAO,GAAG,OAAO;aACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAC,CAAC,MAAM,KAAK,cAAc,IAAI,CAAA,MAAA,CAAC,CAAC,MAAM,0CAAE,WAAW,EAAE,MAAK,eAAe,CAAA,EAAA,CAAC;aACzF,MAAM,CAAC,IAAI,SAAG,CAAC,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC,CAAA;QAC7D,OAAO,SAAG,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;aACjE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,+CAAsB,CAAC,GAAG,CAAC,IAAY,CAAC,CAAC;aAC3D,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAuB,EAAE,OAAgB,EAAE,QAAiB;QAChE,IAAI,KAAK,GAAG,IAAI,CAAA;QAChB,KAAK,GAAG,IAAI,CAAA;QAEZ,MAAM,IAAI,GACR,IAAI,CAAC,IAAI;YACT,aAAa;YACb,MAAM;YACN,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;YACpB,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAC7C,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC1B,OAAO,GAAG,OAAO;aACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAC,CAAC,MAAM,KAAK,cAAc,IAAI,CAAA,MAAA,CAAC,CAAC,MAAM,0CAAE,WAAW,EAAE,MAAK,eAAe,CAAA,EAAA,CAAC;aACzF,MAAM,CAAC,IAAI,SAAG,CAAC,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC,CAAA;QAC7D,OAAO,SAAG,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;aAC5E,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,+CAAsB,CAAC,GAAG,CAAC,IAAY,CAAC,CAAC;aAC3D,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED;;;;;;OAMG;IACH,wBAAwB,CAAC,UAAkB,EAAE,KAAa,EAAE,OAAgB;QAC1E,IAAI,KAAK,GAAG,IAAI,CAAA;QAChB,KAAK,GAAG,KAAK,CAAA;QAEb,MAAM,IAAI,GACR,IAAI,CAAC,IAAI,GAAG,eAAe,UAAU,EAAE,GAAG,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAC9I,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC1B,OAAO,GAAG,OAAO;aACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAC,CAAC,MAAM,KAAK,cAAc,IAAI,CAAA,MAAA,CAAC,CAAC,MAAM,0CAAE,WAAW,EAAE,MAAK,eAAe,CAAA,EAAA,CAAC;aACzF,MAAM,CAAC,IAAI,SAAG,CAAC,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;aAC1D,MAAM,CAAC,IAAI,SAAG,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;QACzC,OAAO,SAAG,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;aAC3E,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,+CAAsB,CAAC,GAAG,CAAC,IAAY,CAAC,CAAC;aAC3D,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,MAAc,EAAE,QAAgB;QAClD,IAAI,KAAK,GAAG,IAAI,CAAA;QAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,wBAAwB,GAAG,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,WAAW,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAA;QACnI,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,SAAG,CAAC,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC7E,OAAO,SAAG,CAAC,WAAW,CACpB,MAAM,EACN,IAAI,EACJ,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,MAAM,0CAAE,WAAW,EAAE,MAAK,eAAe,CAAA,EAAA,CAAC,EAClE,KAAK,EACL,IAAI,CAAC,SAAS,CACf;aACE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,+CAAsB,CAAC,GAAG,CAAC,IAAY,CAAC,CAAC;aAC3D,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,IAAI,KAAK,GAAG,IAAI,CAAA;QAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,cAAc,GAAG,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;QACvE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC1B,OAAO,SAAG,CAAC,WAAW,CACpB,KAAK,EACL,IAAI,EACJ,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,MAAM,0CAAE,WAAW,EAAE,MAAK,eAAe,CAAA,EAAA,CAAC,EAClE,KAAK,EACL,IAAI,CAAC,SAAS,EACd,SAAS,EACT,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,CAC7C;aACE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,+CAAsB,CAAC,GAAG,CAAC,IAAY,CAAC,CAAC;aAC3D,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,IAAI,KAAK,GAAG,IAAI,CAAA;QAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,cAAc,GAAG,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;QACvE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC1B,OAAO,SAAG,CAAC,WAAW,CACpB,MAAM,EACN,IAAI,EACJ,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,MAAM,0CAAE,WAAW,EAAE,MAAK,eAAe,CAAA,EAAA,CAAC,EAClE,KAAK,EACL,IAAI,CAAC,SAAS,EACd,SAAS,EACT,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,CAC7C;aACE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,+CAAsB,CAAC,GAAG,CAAC,IAAY,CAAC,CAAC;aAC3D,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAc,EAAE,IAAY;QAChC,IAAI,KAAK,GAAG,IAAI,CAAA;QAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,eAAe,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;QAChJ,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC1B,OAAO,SAAG,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,CAAC;aACzH,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAW,CAAC;aAC7D,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,UAAkB,EAAE,OAAe;QAC7C,IAAI,KAAK,GAAG,IAAI,CAAA;QAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,gBAAgB,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;QAC9G,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,SAAG,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAA;QAC5E,OAAO,SAAG,CAAC,WAAW,CACpB,MAAM,EACN,IAAI,EACJ,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,MAAM,0CAAE,WAAW,EAAE,MAAK,eAAe,CAAA,EAAA,CAAC,EAClE,KAAK,EACL,IAAI,CAAC,SAAS,CACf;aACE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,+CAAsB,CAAC,GAAG,CAAC,IAAY,CAAC,CAAC;aAC3D,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED;;;OAGG;IACH,wBAAwB,CAAC,UAAkB;QACzC,IAAI,KAAK,GAAG,IAAI,CAAA;QAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,eAAe,GAAG,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;QACxE,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,SAAG,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAA;QAC5E,OAAO,SAAG,CAAC,WAAW,CACpB,MAAM,EACN,IAAI,EACJ,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,MAAM,0CAAE,WAAW,EAAE,MAAK,eAAe,CAAA,EAAA,CAAC,EAClE,KAAK,EACL,IAAI,CAAC,SAAS,CACf;aACE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,+CAAsB,CAAC,GAAG,CAAC,IAAY,CAAC,CAAC;aAC3D,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED;;;OAGG;IACH,0BAA0B,CAAC,OAAe;QACxC,OAAO,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAClE,IAAI,KAAK,GAAG,IAAI,CAAA;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,gBAAgB,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;YAE9G,MAAM,YAAY,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,CAAA;YACzC,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;YAC3C,CAAC;YACD,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,SAAG,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAA;YAC9E,OAAO,SAAG,CAAC,WAAW,CACpB,MAAM,EACN,IAAI,EACJ,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,MAAM,0CAAE,WAAW,EAAE,MAAK,eAAe,CAAA,EAAA,CAAC,EAClE,KAAK,EACL,IAAI,CAAC,SAAS,CACf;iBACE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,+CAAsB,CAAC,GAAG,CAAC,IAAY,CAAC,CAAC;iBAC3D,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;OAGG;IACH,oBAAoB,CAAC,UAAkB;QACrC,IAAI,KAAK,GAAG,IAAI,CAAA;QAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,kBAAkB,GAAG,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;QAC3E,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,SAAG,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAA;QAC5E,OAAO,SAAG,CAAC,WAAW,CACpB,MAAM,EACN,IAAI,EACJ,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,MAAM,0CAAE,WAAW,EAAE,MAAK,eAAe,CAAA,EAAA,CAAC,EAClE,KAAK,EACL,IAAI,CAAC,SAAS,CACf;aACE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,+CAAsB,CAAC,GAAG,CAAC,IAAY,CAAC,CAAC;aAC3D,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1C,CAAC;CACF;AAnQD,gCAmQC","sourcesContent":["/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AuthenticationResponse } from '../model/AuthenticationResponse'\nimport { LoginCredentials } from '../model/LoginCredentials'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport enum OAuthThirdParty {\n GOOGLE = 'google',\n MICROSOFT = 'microsoft',\n APPLE = 'apple',\n LINKEDIN = 'linkedin',\n GITHUB = 'github',\n}\n\nexport enum DigitalIdProvider {\n BE_FAS = 'be.fas',\n}\n\nexport class IccAuthApi {\n host: string\n headers: Array<XHR.Header>\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array<XHR.Header>) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Check login using groupId/userId and password\n * @summary check\n * @param body\n */\n check(body?: LoginCredentials): Promise<AuthenticationResponse> {\n let _body = null\n _body = body\n\n const _url = this.host + `/auth/check` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers\n .filter((h) => h.header !== 'Content-Type' && h.header?.toLowerCase() !== 'authorization')\n .concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl)\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Login using username and password\n * @summary login\n * @param body\n * @param groupId the group id where to login to.\n * @param duration the duration of the returned JWT authentication token, in seconds.\n */\n login(body?: LoginCredentials, groupId?: string, duration?: number): Promise<AuthenticationResponse> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/auth/login` +\n '?ts=' +\n new Date().getTime() +\n (groupId ? `&groupId=${encodeURIComponent(String(groupId))}` : '') +\n (!!duration ? `&duration=${duration}` : '')\n let headers = this.headers\n headers = headers\n .filter((h) => h.header !== 'Content-Type' && h.header?.toLowerCase() !== 'authorization')\n .concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined)\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Login using third party OAuth provider token\n * @summary login\n * @param thirdParty The third party OAuth service used to authenticate the user\n * @param token The token returned by the third party OAuth service\n * @param groupId the group id where to login to.\n */\n loginWithThirdPartyToken(thirdParty: string, token: string, groupId?: string): Promise<AuthenticationResponse> {\n let _body = null\n _body = token\n\n const _url =\n this.host + `/auth/login/${thirdParty}` + '?ts=' + new Date().getTime() + (groupId ? `&groupId=${encodeURIComponent(String(groupId))}` : '')\n let headers = this.headers\n headers = headers\n .filter((h) => h.header !== 'Content-Type' && h.header?.toLowerCase() !== 'authorization')\n .concat(new XHR.Header('Content-Type', 'application/json'))\n .concat(new XHR.Header('token', token))\n return XHR.sendCommand('POST', _url, headers, null, this.fetchImpl, undefined)\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Lite only\n * /auth/\n */\n loginWithCloudToken(issuer: string, cloudJwt: string): Promise<AuthenticationResponse> {\n let _body = null\n\n const _url = this.host + `/auth/login/icureCloud` + '?ts=' + new Date().getTime() + `&issuer=${encodeURIComponent(String(issuer))}`\n let headers = [...this.headers, new XHR.Header('Cloud-Auth-Token', cloudJwt)]\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Logout\n * @summary logout\n */\n logout(): Promise<AuthenticationResponse> {\n let _body = null\n\n const _url = this.host + `/auth/logout` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand(\n 'GET',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Logout\n * @summary logout\n */\n logoutPost(): Promise<AuthenticationResponse> {\n let _body = null\n\n const _url = this.host + `/auth/logout` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get token for subsequent operation\n * @summary token\n * @param method\n * @param path\n */\n token(method: string, path: string): Promise<string> {\n let _body = null\n\n const _url = this.host + `/auth/token/${encodeURIComponent(String(method))}/${encodeURIComponent(String(path))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)) as string)\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Gets a new authentication and refresh JWT for a different group\n */\n switchGroup(refreshJWT: string, groupId: string): Promise<AuthenticationResponse> {\n let _body = null\n\n const _url = this.host + `/auth/switch/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = [...this.headers, new XHR.Header('Refresh-Token', refreshJWT)]\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Gets a new authentication JWT using the refresh JWT\n * @summary refresh\n */\n refreshAuthenticationJWT(refreshJWT: string): Promise<AuthenticationResponse> {\n let _body = null\n\n const _url = this.host + `/auth/refresh` + '?ts=' + new Date().getTime()\n let headers = [...this.headers, new XHR.Header('Refresh-Token', refreshJWT)]\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Switch groups using the refresh JWT\n * @summary switch groups\n */\n switchGroupUsingRefreshJWT(groupId: string): Promise<AuthenticationResponse> {\n return this.authenticationProvider.getIcureTokens().then((tokens) => {\n let _body = null\n const _url = this.host + `/auth/switch/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n\n const refreshToken = tokens?.refreshToken\n if (!refreshToken) {\n throw new Error('No refresh token found')\n }\n let headers = [...this.headers, new XHR.Header('Refresh-Token', refreshToken)]\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n })\n }\n\n /**\n * Invalidates a refresh JWT\n * @summary invalidate\n */\n invalidateRefreshJWT(refreshJWT: string): Promise<AuthenticationResponse> {\n let _body = null\n\n const _url = this.host + `/auth/invalidate` + '?ts=' + new Date().getTime()\n let headers = [...this.headers, new XHR.Header('Refresh-Token', refreshJWT)]\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { AuthenticationProvider } from './AuthenticationProvider';
2
2
  import { UserGroup } from '../../icc-api/model/UserGroup';
3
3
  import { AuthService } from './AuthService';
4
- import { IccAuthApi, OAuthThirdParty } from '../../icc-api';
4
+ import { DigitalIdProvider, IccAuthApi, OAuthThirdParty } from '../../icc-api';
5
5
  /**
6
6
  * Needed by a {@link SmartAuthProvider} to get the secrets (password, token, etc.) for authentication to the iCure SDK as needed.
7
7
  */
@@ -47,11 +47,19 @@ export interface AuthSecretProvider {
47
47
  }
48
48
  export type AuthSecretDetails = {
49
49
  value: string;
50
- secretType: Exclude<AuthSecretType, AuthSecretType.EXTERNAL_AUTHENTICATION>;
50
+ secretType: Exclude<AuthSecretType, AuthSecretType.EXTERNAL_AUTHENTICATION | AuthSecretType.DIGITAL_ID | AuthSecretType.ICURE_CLOUD>;
51
51
  } | {
52
52
  value: string;
53
53
  secretType: AuthSecretType.EXTERNAL_AUTHENTICATION;
54
54
  oauthType: OAuthThirdParty;
55
+ } | {
56
+ value: string;
57
+ secretType: AuthSecretType.DIGITAL_ID;
58
+ provider: DigitalIdProvider;
59
+ } | {
60
+ value: string;
61
+ secretType: AuthSecretType.ICURE_CLOUD;
62
+ issuer: string;
55
63
  };
56
64
  /**
57
65
  * Represents a type of secret that can be used for authentication with iCure.
@@ -80,8 +88,31 @@ export declare enum AuthSecretType {
80
88
  * A token provided by an external authentication provider (e.g. Oauth/Google).
81
89
  * Not yet in use.
82
90
  */
83
- EXTERNAL_AUTHENTICATION = "EXTERNAL_AUTHENTICATION"
91
+ EXTERNAL_AUTHENTICATION = "EXTERNAL_AUTHENTICATION",
92
+ /**
93
+ * A special case of external authentication where the provider is a digital identity provider.
94
+ */
95
+ DIGITAL_ID = "DIGITAL_ID",
96
+ /**
97
+ * The secret is an authentication token for a cloud instance of icure (kraken-cloud).
98
+ * Supported only on lite instances.
99
+ */
100
+ ICURE_CLOUD = "ICURE_CLOUD"
84
101
  }
102
+ export type SmartAuthProviderInitialSecret = {
103
+ password: string;
104
+ } | {
105
+ longToken: string;
106
+ } | {
107
+ oauthToken: string;
108
+ oauthType: OAuthThirdParty;
109
+ } | {
110
+ digitalIdToken: string;
111
+ provider: DigitalIdProvider;
112
+ } | {
113
+ cloudToken: string;
114
+ issuer: string;
115
+ };
85
116
  /**
86
117
  * @internal this class is meant for internal use only and may be changed without notice. The SmartAuthProvider will be initialised automatically
87
118
  * by the iCure api depending on the authentication options you provide.
@@ -112,20 +143,13 @@ export declare class SmartAuthProvider implements AuthenticationProvider {
112
143
  * @param secretProvider
113
144
  * @param props optional initialisation properties.
114
145
  */
115
- static initialise(authApi: IccAuthApi, login: string, secretProvider: AuthSecretProvider, props?: {
116
- initialSecret?: {
117
- password: string;
118
- } | {
119
- longToken: string;
120
- } | {
121
- oauthToken: string;
122
- oauthType: OAuthThirdParty;
123
- };
146
+ static initialise(authApi: IccAuthApi, login: string | undefined, secretProvider: AuthSecretProvider, props?: {
147
+ initialSecret?: SmartAuthProviderInitialSecret;
124
148
  initialAuthToken?: string;
125
149
  initialRefreshToken?: string;
126
150
  loginGroupId?: string;
127
151
  debugLog?: boolean;
128
- }): SmartAuthProvider;
152
+ }): Promise<SmartAuthProvider>;
129
153
  private constructor();
130
154
  getAuthService(): AuthService;
131
155
  switchGroup(newGroupId: string, matches: Array<UserGroup>): Promise<AuthenticationProvider>;
@@ -45,9 +45,13 @@ var AuthSecretType;
45
45
  AuthSecretType["EXTERNAL_AUTHENTICATION"] = "EXTERNAL_AUTHENTICATION";
46
46
  /**
47
47
  * A special case of external authentication where the provider is a digital identity provider.
48
- * Not yet in use.
49
48
  */
50
- // DIGITAL_ID = 'DIGITAL_ID',
49
+ AuthSecretType["DIGITAL_ID"] = "DIGITAL_ID";
50
+ /**
51
+ * The secret is an authentication token for a cloud instance of icure (kraken-cloud).
52
+ * Supported only on lite instances.
53
+ */
54
+ AuthSecretType["ICURE_CLOUD"] = "ICURE_CLOUD";
51
55
  })(AuthSecretType || (exports.AuthSecretType = AuthSecretType = {}));
52
56
  // Here starts internal entities that should not be used directly.
53
57
  /**
@@ -78,24 +82,70 @@ class SmartAuthProvider {
78
82
  * @param secretProvider
79
83
  * @param props optional initialisation properties.
80
84
  */
81
- static initialise(authApi, login, secretProvider, props = {}) {
82
- let initialSecret = undefined;
83
- if (props.initialSecret) {
84
- if ('password' in props.initialSecret) {
85
- initialSecret = { value: props.initialSecret.password, type: ServerAuthenticationClass.PASSWORD };
86
- }
87
- else if ('longToken' in props.initialSecret) {
88
- initialSecret = { value: props.initialSecret.longToken, type: ServerAuthenticationClass.LONG_LIVED_TOKEN };
89
- }
90
- else {
91
- initialSecret = {
92
- value: props.initialSecret.oauthToken,
93
- type: ServerAuthenticationClass.EXTERNAL_AUTHENTICATION,
94
- oauthType: props.initialSecret.oauthType,
95
- };
85
+ static initialise(authApi_1, login_1, secretProvider_1) {
86
+ return __awaiter(this, arguments, void 0, function* (authApi, login, secretProvider, props = {}) {
87
+ let initialSecret = undefined;
88
+ let initialAuthToken = props.initialAuthToken;
89
+ let initialRefreshToken = props.initialRefreshToken;
90
+ if (props.initialSecret) {
91
+ if ('password' in props.initialSecret) {
92
+ if (login == undefined)
93
+ throw new Error('To use a password initial secret you must provide a login identifier');
94
+ initialSecret = { value: props.initialSecret.password, type: ServerAuthenticationClass.PASSWORD };
95
+ }
96
+ else if ('longToken' in props.initialSecret) {
97
+ if (login == undefined)
98
+ throw new Error('To use a password initial secret you must provide a login identifier');
99
+ initialSecret = { value: props.initialSecret.longToken, type: ServerAuthenticationClass.LONG_LIVED_TOKEN };
100
+ }
101
+ else if ('oauthToken' in props.initialSecret) {
102
+ if (longLivedOAuthTokens.has(props.initialSecret.oauthType)) {
103
+ initialSecret = {
104
+ value: props.initialSecret.oauthToken,
105
+ type: ServerAuthenticationClass.EXTERNAL_AUTHENTICATION,
106
+ oauthType: props.initialSecret.oauthType,
107
+ };
108
+ }
109
+ else {
110
+ try {
111
+ const authResponse = yield authApi.loginWithThirdPartyToken(props.initialSecret.oauthType, props.initialSecret.oauthToken, props.loginGroupId);
112
+ if (authResponse.token != undefined && authResponse.refreshToken != undefined) {
113
+ initialAuthToken = authResponse.token;
114
+ initialRefreshToken = authResponse.refreshToken;
115
+ }
116
+ }
117
+ catch (_) {
118
+ /* ignored */
119
+ }
120
+ }
121
+ }
122
+ else if ('digitalIdToken' in props.initialSecret) {
123
+ try {
124
+ const authResponse = yield authApi.loginWithThirdPartyToken(props.initialSecret.provider, props.initialSecret.digitalIdToken, props.loginGroupId);
125
+ if (authResponse.token != undefined && authResponse.refreshToken != undefined) {
126
+ initialAuthToken = authResponse.token;
127
+ initialRefreshToken = authResponse.refreshToken;
128
+ }
129
+ }
130
+ catch (_) {
131
+ /* ignored */
132
+ }
133
+ }
134
+ else {
135
+ try {
136
+ const authResponse = yield authApi.loginWithCloudToken(props.initialSecret.issuer, props.initialSecret.cloudToken);
137
+ if (authResponse.token != undefined && authResponse.refreshToken != undefined) {
138
+ initialAuthToken = authResponse.token;
139
+ initialRefreshToken = authResponse.refreshToken;
140
+ }
141
+ }
142
+ catch (_) {
143
+ /* ignored */
144
+ }
145
+ }
96
146
  }
97
- }
98
- return new SmartAuthProvider(new TokenProvider(login, props.loginGroupId, initialSecret, props.initialAuthToken, props.initialRefreshToken, authApi, secretProvider, props.debugLog != undefined ? props.debugLog : true), props.loginGroupId);
147
+ return new SmartAuthProvider(new TokenProvider(login, props.loginGroupId, initialSecret, initialAuthToken, initialRefreshToken, authApi, secretProvider, props.debugLog != undefined ? props.debugLog : true), props.loginGroupId);
148
+ });
99
149
  }
100
150
  constructor(tokenProvider, groupId) {
101
151
  this.tokenProvider = tokenProvider;
@@ -121,7 +171,7 @@ class SmartAuthProvider {
121
171
  exports.SmartAuthProvider = SmartAuthProvider;
122
172
  var ServerAuthenticationClass;
123
173
  (function (ServerAuthenticationClass) {
124
- // DIGITAL_ID = 60,
174
+ ServerAuthenticationClass[ServerAuthenticationClass["DIGITAL_ID"] = 60] = "DIGITAL_ID";
125
175
  ServerAuthenticationClass[ServerAuthenticationClass["TWO_FACTOR_AUTHENTICATION"] = 50] = "TWO_FACTOR_AUTHENTICATION";
126
176
  ServerAuthenticationClass[ServerAuthenticationClass["SHORT_LIVED_TOKEN"] = 40] = "SHORT_LIVED_TOKEN";
127
177
  ServerAuthenticationClass[ServerAuthenticationClass["EXTERNAL_AUTHENTICATION"] = 30] = "EXTERNAL_AUTHENTICATION";
@@ -199,7 +249,7 @@ class TokenProvider {
199
249
  if (!!this.currentLongLivedSecret && (!this.currentLongLivedSecret.type || this.currentLongLivedSecret.type >= minimumAuthenticationClassLevel)) {
200
250
  if (this.debugLog)
201
251
  console.log('Using cached secret');
202
- const resultWithCachedSecret = yield this.doGetTokenWithSecret(this.currentLongLivedSecret, minimumAuthenticationClassLevel);
252
+ const resultWithCachedSecret = yield this.doGetTokenWithSecret({ cached: this.currentLongLivedSecret }, minimumAuthenticationClassLevel);
203
253
  if ('success' in resultWithCachedSecret) {
204
254
  if (this.debugLog)
205
255
  console.log('New token using cached secret success');
@@ -227,12 +277,20 @@ class TokenProvider {
227
277
  askSecretAndGetToken(minimumAuthenticationClassLevel, passwordIsValidAs2fa) {
228
278
  return __awaiter(this, void 0, void 0, function* () {
229
279
  const acceptedSecrets = [
230
- minimumAuthenticationClassLevel <= ServerAuthenticationClass.LONG_LIVED_TOKEN ? [AuthSecretType.LONG_LIVED_TOKEN] : [],
231
- minimumAuthenticationClassLevel <= ServerAuthenticationClass.SHORT_LIVED_TOKEN ? [AuthSecretType.SHORT_LIVED_TOKEN] : [],
280
+ minimumAuthenticationClassLevel <= ServerAuthenticationClass.LONG_LIVED_TOKEN && this.login != undefined
281
+ ? [AuthSecretType.LONG_LIVED_TOKEN]
282
+ : [],
283
+ minimumAuthenticationClassLevel <= ServerAuthenticationClass.SHORT_LIVED_TOKEN && this.login != undefined
284
+ ? [AuthSecretType.SHORT_LIVED_TOKEN]
285
+ : [],
232
286
  minimumAuthenticationClassLevel <= ServerAuthenticationClass.TWO_FACTOR_AUTHENTICATION &&
287
+ this.login != undefined &&
233
288
  (passwordIsValidAs2fa || minimumAuthenticationClassLevel <= ServerAuthenticationClass.PASSWORD)
234
289
  ? [AuthSecretType.PASSWORD]
235
290
  : [],
291
+ minimumAuthenticationClassLevel <= 0 ? [AuthSecretType.ICURE_CLOUD] : [],
292
+ minimumAuthenticationClassLevel <= ServerAuthenticationClass.DIGITAL_ID ? [AuthSecretType.DIGITAL_ID] : [],
293
+ minimumAuthenticationClassLevel <= ServerAuthenticationClass.EXTERNAL_AUTHENTICATION ? [AuthSecretType.EXTERNAL_AUTHENTICATION] : [],
236
294
  ].flat();
237
295
  if (!acceptedSecrets.length)
238
296
  throw new Error('Internal error: no secret type is accepted for this request. Group may be misconfigured, or client may be outdated.');
@@ -244,7 +302,7 @@ class TokenProvider {
244
302
  if (!acceptedSecrets.includes(secretDetails.secretType))
245
303
  throw new Error(`Accepted secret types are ${JSON.stringify(acceptedSecrets)}, but got a secret of type ${secretDetails.secretType}.`);
246
304
  attempts.push(secretDetails);
247
- const result = yield this.doGetTokenWithSecret(secretDetails, minimumAuthenticationClassLevel);
305
+ const result = yield this.doGetTokenWithSecret({ new: secretDetails }, minimumAuthenticationClassLevel);
248
306
  if ('success' in result) {
249
307
  this.updateCachedSecret(secretDetails);
250
308
  return result.success;
@@ -269,7 +327,7 @@ class TokenProvider {
269
327
  if (details.secretType != AuthSecretType.TWO_FACTOR_AUTHENTICATION_TOKEN)
270
328
  throw new Error(`Was expecting a 2fa token but got a secret of type ${details.secretType}.`);
271
329
  attempts.push(details);
272
- const result = yield this.doGetTokenWithSecret({ value: `${password}|${details.value}` }, minimumAuthenticationClassLevel);
330
+ const result = yield this.doGetTokenWithSecret({ new: { value: `${password}|${details.value}`, secretType: AuthSecretType.TWO_FACTOR_AUTHENTICATION_TOKEN } }, minimumAuthenticationClassLevel);
273
331
  if ('success' in result) {
274
332
  this.updateCachedSecret({ value: password, secretType: AuthSecretType.PASSWORD });
275
333
  return result.success;
@@ -280,14 +338,32 @@ class TokenProvider {
280
338
  }
281
339
  });
282
340
  }
283
- doGetTokenWithSecret(secret, minimumAuthenticationClassLevel) {
341
+ doGetTokenWithSecret(secretDetails, minimumAuthenticationClassLevel) {
284
342
  return __awaiter(this, void 0, void 0, function* () {
285
343
  let authResultPromise;
286
- if ('oauthType' in secret && !!secret.oauthType) {
287
- authResultPromise = this.authApi.loginWithThirdPartyToken(secret.oauthType, secret.value); // TODO add group id
344
+ if ('cached' in secretDetails) {
345
+ const secret = secretDetails.cached;
346
+ if ('oauthType' in secret && !!secret.oauthType) {
347
+ authResultPromise = this.authApi.loginWithThirdPartyToken(secret.oauthType, secret.value, this.groupId);
348
+ }
349
+ else {
350
+ authResultPromise = this.authApi.login({ username: this.login, password: secret.value }, this.groupId);
351
+ }
288
352
  }
289
353
  else {
290
- authResultPromise = this.authApi.login({ username: this.login, password: secret.value }, this.groupId);
354
+ const secret = secretDetails.new;
355
+ if (secret.secretType == AuthSecretType.DIGITAL_ID) {
356
+ authResultPromise = this.authApi.loginWithThirdPartyToken(secret.provider, secret.value, this.groupId);
357
+ }
358
+ else if (secret.secretType == AuthSecretType.EXTERNAL_AUTHENTICATION) {
359
+ authResultPromise = this.authApi.loginWithThirdPartyToken(secret.oauthType, secret.value, this.groupId);
360
+ }
361
+ else if (secret.secretType == AuthSecretType.ICURE_CLOUD) {
362
+ authResultPromise = this.authApi.loginWithCloudToken(secret.issuer, secret.value);
363
+ }
364
+ else {
365
+ authResultPromise = this.authApi.login({ username: this.login, password: secret.value }, this.groupId);
366
+ }
291
367
  }
292
368
  return authResultPromise.then((authResult) => {
293
369
  const { token, refreshToken } = authResult;