@vc-shell/framework 1.0.126 → 1.0.128

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ ## [1.0.128](https://github.com/VirtoCommerce/vc-shell/compare/v1.0.127...v1.0.128) (2023-12-14)
2
+
3
+
4
+ ### Features
5
+
6
+ * **dynamic:** ability to add custom visibility method to columns schema ([68922fd](https://github.com/VirtoCommerce/vc-shell/commit/68922fda60310f1f85d5c34122248693897354e4))
7
+
8
+
9
+
10
+ ## [1.0.127](https://github.com/VirtoCommerce/vc-shell/compare/v1.0.126...v1.0.127) (2023-12-13)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **dynamic:** props pass to created component instance ([29331fb](https://github.com/VirtoCommerce/vc-shell/commit/29331fb60bacf142d48eccc1af117a0b8fc299dd))
16
+
17
+
18
+
1
19
  ## [1.0.126](https://github.com/VirtoCommerce/vc-shell/compare/v1.0.125...v1.0.126) (2023-11-28)
2
20
 
3
21
 
@@ -14,7 +14,7 @@ import {
14
14
  ExternalSignInProviderInfo,
15
15
  } from "./../../api/platform";
16
16
  import { AuthData, RequestPasswordResult, SignInResults } from "./../../types";
17
- import { useLocalStorage } from "@vueuse/core";
17
+ import { useLocalStorage, useStorage } from "@vueuse/core";
18
18
  //The Platform Manager uses the same key to store authorization data in the
19
19
  //local storage, so we can exchange authorization data between the Platform Manager
20
20
  //and the user application that is hosted in the same domain as the sub application.
@@ -22,7 +22,6 @@ const VC_AUTH_DATA_KEY = "ls.authenticationData";
22
22
 
23
23
  const user: Ref<UserDetail | undefined> = ref();
24
24
  const loading: Ref<boolean> = ref(false);
25
- const authData: Ref<AuthData | undefined> = ref();
26
25
  const authClient = new ClientOAuth2({
27
26
  accessTokenUri: `/connect/token`,
28
27
  scopes: ["offline_access"],
@@ -48,7 +47,16 @@ interface IUseUser {
48
47
  isAuthenticated: () => Promise<boolean>;
49
48
  }
50
49
 
50
+ const simulateLogin = async () => {
51
+ return {
52
+ accessToken: "testToken",
53
+ refreshToken: "testTokenRefresh",
54
+ data: { expires_in: new Date(new Date().setDate(new Date().getDate() + 1)) },
55
+ };
56
+ };
57
+
51
58
  export function useUser(): IUseUser {
59
+ const authData: Ref<AuthData | null> = useStorage(VC_AUTH_DATA_KEY, {});
52
60
  const base = window.location.origin + "/";
53
61
  const externalSecurityClient = new ExternalSignInClient(base);
54
62
  const externalSignInStorage = useLocalStorage<{ providerType: string | undefined }>("externalSignIn", {
@@ -90,7 +98,7 @@ export function useUser(): IUseUser {
90
98
  let token = undefined;
91
99
  try {
92
100
  loading.value = true;
93
- token = await authClient.owner.getToken(username, password);
101
+ token = !window.__DEMO_MODE__ ? await authClient.owner.getToken(username, password) : await simulateLogin();
94
102
  } catch (e) {
95
103
  //TODO: log error
96
104
  return { succeeded: false, error: e as string };
@@ -102,13 +110,14 @@ export function useUser(): IUseUser {
102
110
  authData.value = {
103
111
  accessToken: token.accessToken,
104
112
  refreshToken: token.refreshToken,
105
- expiresAt: addOffsetToCurrentDate(Number(token.data["expires_in"])),
113
+ expiresAt: addOffsetToCurrentDate(Number(token.data?.["expires_in"])),
106
114
  userName: username,
107
115
  };
108
116
  console.log("[useUser]: an access token has been obtained successfully", authData.value);
109
117
 
110
118
  storeAuthData(authData.value);
111
119
  }
120
+
112
121
  await loadUser();
113
122
  return { succeeded: true };
114
123
  }
@@ -120,68 +129,74 @@ export function useUser(): IUseUser {
120
129
  externalSignOut(externalSignInStorage.value.providerType);
121
130
  } else {
122
131
  user.value = undefined;
123
- authData.value = undefined;
124
- storeAuthData({});
132
+ authData.value = null;
133
+ storeAuthData(null);
125
134
  }
126
135
  }
127
136
 
128
137
  async function loadUser(): Promise<UserDetail> {
129
138
  console.debug(`[@vc-shell/framework#useUser:loadUser] - Entry point`);
130
- const token = await getAccessToken();
131
- if (token) {
132
- securityClient.setAuthToken(token);
133
139
 
134
- try {
135
- loading.value = true;
136
- user.value = await securityClient.getCurrentUser();
137
- console.log("[useUser]: an user details has been loaded", user.value);
138
- } catch (e) {
139
- console.dir(e);
140
- throw e;
141
- } finally {
142
- loading.value = false;
140
+ if (!externalSignInStorage.value?.providerType) {
141
+ const token = await getAccessToken();
142
+ if (token) {
143
+ securityClient.setAuthToken(token);
143
144
  }
144
145
  }
145
146
 
147
+ try {
148
+ loading.value = true;
149
+ user.value = !window.__DEMO_MODE__
150
+ ? await securityClient.getCurrentUser()
151
+ : ({
152
+ id: "testUserId",
153
+ userName: "testUserName",
154
+ } as UserDetail);
155
+
156
+ console.log("[useUser]: an user details has been loaded", user.value);
157
+ } catch (e: any) {
158
+ console.dir(e);
159
+ } finally {
160
+ loading.value = false;
161
+ }
162
+
146
163
  return { ...user.value } as UserDetail;
147
164
  }
148
165
 
149
166
  async function getAccessToken(): Promise<string | undefined> {
150
167
  console.debug(`[@vc-shell/framework#useUser:getAccessToken] - Entry point`);
151
- if (!authData.value || Object.keys(authData.value).length === 0) {
152
- authData.value = await readAuthData();
153
- }
154
-
155
- if (authData.value && Date.now() >= (authData.value.expiresAt ?? 0)) {
156
- const token = authClient.createToken(
157
- authData.value.accessToken ?? authData.value.token ?? "",
158
- authData.value.refreshToken ?? "",
159
- {}
160
- );
161
-
162
- console.log("[useUser]: an access token is expired, using refresh token to receive a new");
163
- try {
164
- const newToken = await token.refresh();
165
- if (newToken) {
166
- authData.value = {
167
- ...authData.value,
168
- accessToken: newToken.accessToken,
169
- token: newToken.accessToken,
170
- refreshToken: newToken.refreshToken,
171
- expiresAt: addOffsetToCurrentDate(Number(newToken.data["expires_in"])),
172
- };
173
- storeAuthData(authData.value);
168
+ if (authData.value) {
169
+ if (Date.now() >= (authData.value.expiresAt ?? 0)) {
170
+ const token = authClient.createToken(
171
+ authData.value.accessToken ?? authData.value.token ?? "",
172
+ authData.value.refreshToken ?? "",
173
+ {}
174
+ );
175
+
176
+ console.log("[useUser]: an access token is expired, using refresh token to receive a new");
177
+ try {
178
+ const newToken = await token.refresh();
179
+ if (newToken) {
180
+ authData.value = {
181
+ ...authData.value,
182
+ accessToken: newToken.accessToken,
183
+ token: newToken.accessToken,
184
+ refreshToken: newToken.refreshToken,
185
+ expiresAt: addOffsetToCurrentDate(Number(newToken.data["expires_in"])),
186
+ };
187
+ storeAuthData(authData.value);
188
+ }
189
+ } catch (e: any) {
190
+ console.log("[useUser]: getAccessToken() returns error", e);
174
191
  }
175
- } catch (e) {
176
- console.log("[useUser]: getAccessToken() returns error", e);
177
192
  }
178
- }
179
193
 
180
- return authData.value?.accessToken ?? authData.value?.token;
194
+ return authData.value?.accessToken ?? authData.value?.token;
195
+ }
181
196
  }
182
197
 
183
- function storeAuthData(authData: AuthData) {
184
- localStorage.setItem(VC_AUTH_DATA_KEY, JSON.stringify({ ...(authData || {}) }));
198
+ function storeAuthData(data: AuthData | null) {
199
+ authData.value = data;
185
200
  }
186
201
 
187
202
  async function readAuthData(): Promise<AuthData> {
@@ -12,7 +12,7 @@ export const signalR = {
12
12
  .configureLogging(LogLevel.Information)
13
13
  .build();
14
14
 
15
- function start() {
15
+ const start = () => {
16
16
  connection
17
17
  .start()
18
18
  .then(() => {
@@ -22,7 +22,7 @@ export const signalR = {
22
22
  console.log("SignalR Connection Error: ", err);
23
23
  setTimeout(() => start(), 5000);
24
24
  });
25
- }
25
+ };
26
26
 
27
27
  connection.onclose(() => {
28
28
  start();
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../core/composables/useUser/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,WAAW,EAAE,MAAM,KAAK,CAAC;AAEtD,OAAO,EACL,UAAU,EAGV,cAAc,EAEd,cAAc,EAGd,SAAS,EACT,0BAA0B,EAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAY,qBAAqB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAgB/E,UAAU,QAAQ;IAChB,IAAI,EAAE,WAAW,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAC1C,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,eAAe,EAAE,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAClD,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAClD,QAAQ,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACvE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAChE,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACnG,oBAAoB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/E,kBAAkB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IACtG,yBAAyB,EAAE,MAAM,OAAO,CAAC,0BAA0B,EAAE,GAAG,SAAS,CAAC,CAAC;IACnF,cAAc,EAAE,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAClG,YAAY,EAAE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACzC,eAAe,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACzC;AAED,wBAAgB,OAAO,IAAI,QAAQ,CAmQlC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../core/composables/useUser/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,WAAW,EAAE,MAAM,KAAK,CAAC;AAEtD,OAAO,EACL,UAAU,EAGV,cAAc,EAEd,cAAc,EAGd,SAAS,EACT,0BAA0B,EAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAY,qBAAqB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAe/E,UAAU,QAAQ;IAChB,IAAI,EAAE,WAAW,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAC1C,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,eAAe,EAAE,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAClD,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAClD,QAAQ,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACvE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAChE,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACnG,oBAAoB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/E,kBAAkB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IACtG,yBAAyB,EAAE,MAAM,OAAO,CAAC,0BAA0B,EAAE,GAAG,SAAS,CAAC,CAAC;IACnF,cAAc,EAAE,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAClG,YAAY,EAAE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACzC,eAAe,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACzC;AAUD,wBAAgB,OAAO,IAAI,QAAQ,CA2QlC"}