@dehwyyy/auth 1.0.4 → 1.0.5
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/client/client.js
CHANGED
|
@@ -8,7 +8,7 @@ export const getClient = (app, baseUrl, redirectBaseUrl, redirectUriPrefix = "")
|
|
|
8
8
|
credentials: 'include',
|
|
9
9
|
});
|
|
10
10
|
const middleware = new Middleware(app, baseUrl, redirectBaseUrl, redirectUriPrefix);
|
|
11
|
-
client.use(middleware.AuthorizationHeaderAttacher, middleware.TokenRefresher);
|
|
11
|
+
client.use(middleware.RequestCloner, middleware.AuthorizationHeaderAttacher, middleware.TokenRefresher);
|
|
12
12
|
}
|
|
13
13
|
return client;
|
|
14
14
|
};
|
|
@@ -5,6 +5,11 @@ export declare class Middleware {
|
|
|
5
5
|
private redirectBaseUrl;
|
|
6
6
|
private redirectUriPrefix;
|
|
7
7
|
constructor(app: string, baseUrl: string, redirectBaseUrl: string, redirectUriPrefix?: string);
|
|
8
|
+
/**
|
|
9
|
+
* Middleware для предварительного клонирования запросов с телом.
|
|
10
|
+
* Этот клон будет использован для повторной попытки в случае 401.
|
|
11
|
+
*/
|
|
12
|
+
get RequestCloner(): OpenAPIMiddleware;
|
|
8
13
|
get AuthorizationHeaderAttacher(): OpenAPIMiddleware;
|
|
9
14
|
get TokenRefresher(): OpenAPIMiddleware;
|
|
10
15
|
}
|
|
@@ -10,6 +10,23 @@ export class Middleware {
|
|
|
10
10
|
this.redirectBaseUrl = redirectBaseUrl;
|
|
11
11
|
this.redirectUriPrefix = redirectUriPrefix;
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Middleware для предварительного клонирования запросов с телом.
|
|
15
|
+
* Этот клон будет использован для повторной попытки в случае 401.
|
|
16
|
+
*/
|
|
17
|
+
get RequestCloner() {
|
|
18
|
+
return {
|
|
19
|
+
async onRequest({ request }) {
|
|
20
|
+
// Клонируем только запросы, которые могут иметь тело
|
|
21
|
+
const methodsWithBody = ['POST', 'PUT', 'PATCH', 'DELETE'];
|
|
22
|
+
if (methodsWithBody.includes(request.method.toUpperCase())) {
|
|
23
|
+
request._clone = request.clone();
|
|
24
|
+
console.log('cloned');
|
|
25
|
+
}
|
|
26
|
+
return request;
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
13
30
|
get AuthorizationHeaderAttacher() {
|
|
14
31
|
const auth = GetAuthService(this.app, this.baseUrl, this.redirectBaseUrl, this.redirectUriPrefix);
|
|
15
32
|
return {
|
|
@@ -26,7 +43,8 @@ export class Middleware {
|
|
|
26
43
|
return response;
|
|
27
44
|
}
|
|
28
45
|
const auth = GetAuthService(t.app, t.baseUrl, t.redirectBaseUrl, t.redirectUriPrefix);
|
|
29
|
-
|
|
46
|
+
const requestToRetry = request._clone || request;
|
|
47
|
+
return auth.RefreshAndRetry(requestToRetry, response);
|
|
30
48
|
},
|
|
31
49
|
};
|
|
32
50
|
}
|