@bmc-soft/keycloak-auth 1.0.4 → 1.0.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.
package/README.md CHANGED
@@ -1,16 +1,6 @@
1
1
  # @bmc-soft/keycloak-auth
2
2
 
3
- Готовый к продакшену пакет аутентификации Keycloak для React Native с упором на производительность и безопасность.
4
-
5
- ## Возможности
6
-
7
- - **Производительность**: разбиение контекстов снижает лишние ре-рендеры; обновление токенов не затрагивает компоненты, которым нужны только конфиг или инстанс.
8
- - **Безопасность**: токены в OS Keychain; PIN шифруется AES; учётные данные не хранятся в открытом виде.
9
- - **Готовые экраны**: AuthPage, ConfirmAuthPage, виджеты ReauthBottomSheet и кнопки выхода.
10
- - **Темизация**: настройка через тему в `KeycloakProvider` (цвета, шрифты, Loader, кнопки).
11
- - **Автообновление токена**: обновление с повтором запроса; при ошибке — опциональный `onReauthRequired`.
12
- - **Биометрия**: FaceID/TouchID для подтверждения по PIN.
13
- - **React Native**: встроенные полифиллы для keycloak-js, без дополнительной настройки.
3
+ Готовый к продакшену пакет аутентификации Keycloak для React Native.
14
4
 
15
5
  ## Установка
16
6
 
@@ -31,6 +21,12 @@ npm install react-native-keychain
31
21
  Опционально (для интерцепторов): `axios` (>=1.0.0).
32
22
  Для UI нужны: `@gorhom/bottom-sheet`, `react-native-webview`, `react-native-safe-area-context`, `lottie-react-native`, `react-native-svg`.
33
23
 
24
+ ```bash
25
+ npm install @gorhom/bottom-sheet react-native-webview react-native-safe-area-context lottie-react-native react-native-svg
26
+ ```
27
+
28
+ Настройка нативных модулей: [@gorhom/bottom-sheet](https://github.com/gorhom/react-native-bottom-sheet), [react-native-webview](https://github.com/react-native-webview/react-native-webview), [react-native-safe-area-context](https://github.com/th3rdwave/react-native-safe-area-context), [lottie-react-native](https://github.com/lottie-react-native/lottie-react-native), [react-native-svg](https://github.com/software-mansion/react-native-svg).
29
+
34
30
  > Полифиллы для React Native подключаются автоматически при использовании пакета; отдельная настройка keycloak-js не требуется.
35
31
 
36
32
  ---
@@ -521,11 +517,6 @@ KeycloakConfigProvider ← конфиг (редко меняется)
521
517
  - Запросы по HTTPS
522
518
  - Учётные данные не хранятся в открытом виде
523
519
 
524
- ### Полифиллы React Native
525
-
526
- Пакет подключает полифиллы для `document`, `window`, `navigator`, требуемые keycloak-js. Они применяются автоматически при использовании KeycloakProvider. Чтобы применить раньше: `import { initKeycloakPolyfills } from '@bmc-soft/keycloak-auth'; initKeycloakPolyfills();`.
527
-
528
- ---
529
520
 
530
521
  ## Экспорты
531
522
 
@@ -536,4 +527,4 @@ KeycloakConfigProvider ← конфиг (редко меняется)
536
527
 
537
528
  ## Лицензия
538
529
 
539
- MIT © Koala Team
530
+ MIT © BMC-Soft Team
@@ -1 +1 @@
1
- {"version":3,"file":"useLogoutButton.d.ts","sourceRoot":"","sources":["../../../src/ui/LogoutButton/useLogoutButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAK5D,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,SAAS,CAAC;AAQnD,wBAAgB,eAAe,CAAC,KAAK,EAAE,qBAAqB;;;;;;;;;EA2D3D"}
1
+ {"version":3,"file":"useLogoutButton.d.ts","sourceRoot":"","sources":["../../../src/ui/LogoutButton/useLogoutButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAK5D,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,SAAS,CAAC;AASnD,wBAAgB,eAAe,CAAC,KAAK,EAAE,qBAAqB;;;;;;;;;EA6D3D"}
@@ -2,6 +2,7 @@ import React, { useCallback, useMemo, useState } from 'react';
2
2
  import { Modal, StyleSheet, View } from 'react-native';
3
3
  import { useKeycloakTheme } from '../../context';
4
4
  import { WebViewLogout } from '../WebViewLogout';
5
+ import { useKeycloakAuth } from '../../hooks';
5
6
  const styles = StyleSheet.create({
6
7
  modalContent: {
7
8
  flex: 1,
@@ -9,6 +10,7 @@ const styles = StyleSheet.create({
9
10
  });
10
11
  export function useLogoutButton(props) {
11
12
  const { onLogoutSuccess, onError, style } = props;
13
+ const { logout: keycloakLogout } = useKeycloakAuth();
12
14
  const { colors } = useKeycloakTheme();
13
15
  const [showWebView, setShowWebView] = useState(false);
14
16
  const [isLoggingOut, setIsLoggingOut] = useState(false);
@@ -19,8 +21,9 @@ export function useLogoutButton(props) {
19
21
  const handleLogoutSuccess = useCallback(() => {
20
22
  setShowWebView(false);
21
23
  setIsLoggingOut(false);
24
+ keycloakLogout();
22
25
  onLogoutSuccess?.();
23
- }, [onLogoutSuccess]);
26
+ }, [onLogoutSuccess, keycloakLogout]);
24
27
  const handleError = useCallback((error) => {
25
28
  setShowWebView(false);
26
29
  setIsLoggingOut(false);
@@ -1 +1 @@
1
- {"version":3,"file":"useLogoutButton.js","sourceRoot":"","sources":["../../../src/ui/LogoutButton/useLogoutButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAErD,OAAO,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAG/C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,YAAY,EAAE;QACZ,IAAI,EAAE,CAAC;KACR;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,eAAe,CAAC,KAA4B;IAC1D,MAAM,EAAC,eAAe,EAAE,OAAO,EAAE,KAAK,EAAC,GAAG,KAAK,CAAC;IAChD,MAAM,EAAC,MAAM,EAAC,GAAG,gBAAgB,EAAE,CAAC;IACpC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,eAAe,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3C,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,eAAe,EAAE,EAAE,CAAC;IACtB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,KAAY,EAAE,EAAE;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,MAAM,WAAW,GAAG,OAAO,CACzB,GAAG,EAAE,CAAC,CAAC;QACL,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,YAAY;QACrB,YAAY,EAAE,MAAM,EAAE,KAAK;QAC3B,KAAK;KACN,CAAC,EACF,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAClD,CAAC;IAEF,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CACJ,CAAC,KAAK,CACJ,OAAO,CAAC,CAAC,WAAW,CAAC,CACrB,aAAa,CAAC,MAAM,CACpB,WAAW,CAAC,CAAC,KAAK,CAAC,CACnB,oBAAoB,CACpB,cAAc,CAAC,CAAC,GAAG,EAAE;YACnB,cAAc,CAAC,KAAK,CAAC,CAAC;YACtB,eAAe,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC,CACF;QAAA,CAAC,WAAW,CAAC,CAAC,CAAC,CACb,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAC/B;YAAA,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,EAC5E;UAAA,EAAE,IAAI,CAAC,CACR,CAAC,CAAC,CAAC,IAAI,CACV;MAAA,EAAE,KAAK,CAAC,CACT,EACD,CAAC,WAAW,EAAE,mBAAmB,EAAE,WAAW,CAAC,CAChD,CAAC;IAEF,OAAO,EAAC,WAAW,EAAE,KAAK,EAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"useLogoutButton.js","sourceRoot":"","sources":["../../../src/ui/LogoutButton/useLogoutButton.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bmc-soft/keycloak-auth",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "Production-ready Keycloak authentication package for React Native with optimized performance and security",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",