1.0.120 • Published 1 year ago

keycloak-provider v1.0.120

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

Logo

Keylcoak Provider


React binding for Keycloak

Table of Contents


  • Install
  • Getting Started
    • Setup Keycloak Configuration
    • Setup KeycloakAuthProvider
    • Context Usage
    • AccessControll Function Usage

Install


React keycloak-provider requires:

  • keycloak-provider @latest
npm install keycloak-provider

Getting Started


Setup Keycloak Configuration

Create a any const veriable like const KeycloakConfig in the App component

 const keycloakConfig = {
    url: "",
    realm: "",
    clientId: "",
  };

Setup KeycloakAuthProvider

Created const KeycloakConfig veriable we will used in KeycloakAuthProvider in the App component

import { KeycloakAuthProvider } from "keycloak-provider"

// Wrap everything inside KeycloakAuthProvider
const App = () => {
  return <ReactKeycloakProvider keycloakConfig={keycloakConfig}>...</ReactKeycloakProvider>
}
  1. If your using other providers (such as react-redux) it is recommended to place them inside KeycloakAuthProvider.
  2. If your using <React.StrictMode></React.StrictMode> please make sure that you place them inside KeycloakAuthProvider otherwise it will cause infinite call to keycloak token .

KeycloakAuthProvider automatically invokes keycloak.init() method .

Context Usage

Import context from import { KeycloakContext } from "keycloak-provider"

When a component requires access to Keycloak, you can use the KeycloakContext and you can get all function provided by keycloak object using this like (keycloak.logout,kycloak.token).

  • This context provide you two veriables
    • keycloak
    • authenticated
import { useContext } from "react";
import { KeycloakContext } from "keycloak-provider"

export default () => {
  // Using Object destructuring
  const {keycloak,authenticated} = useContext(KeycloakContext);

  return (
    <div>
      <div>{`User is ${
        !keycloak.authenticated ? 'NOT ' : ''
      }authenticated`}</div>

      {!!keycloak.authenticated && (
        <button type="button" onClick={() => keycloak.logout()}>
          Logout
        </button>
      )}
    </div>
  )
}

AccessControll Function Usage

import accessControll function from import { accessControll } from "keycloak-provider"

when you required to specify access from the scope provided by backend API's then you can do this by using this function to controll the access to ui components.

//this function will check that User Resource has read access to that role
  using token and return true and false value accordingly
  const Access = accessControll("User", "read", keyclaokToken)

After you can set it in useState hook or any veriable and add condition accordingly in your UI.

ex.

import { accessControll } from "keycloak-provider"


export default () => {

  const [buttonAccess,setButtonAccess] = useState(false);
  new Promise((resolve, reject) => {
     resolve(accessControll("LogoutButton", "read", keycloak?.token));
    }).then((response)=>{
     setButtonAccess(response)
  })

  return (
    <div>
      <div>{`User is ${
        !keycloak.authenticated ? 'NOT ' : ''
      }authenticated`}</div>

      {!!keycloak.authenticated && (
        {buttonAccess && <button type="button" onClick={() => keycloak.logout()}>
          Logout
        </button>}
      )}
    </div>
  )
}

Copyright (c) 2022. GESSA (www.gessa.io)

1.0.120

1 year ago

1.0.119

1 year ago

1.0.118

1 year ago

1.0.117

1 year ago

1.0.116

1 year ago

1.0.115

1 year ago

1.0.114

1 year ago

1.0.113

1 year ago

1.0.112

1 year ago

1.0.111

1 year ago

1.0.110

1 year ago

1.0.109

1 year ago

1.0.108

1 year ago

1.0.107

1 year ago

1.0.106

1 year ago

1.0.105

1 year ago

1.0.104

1 year ago

1.0.103

1 year ago

1.0.102

1 year ago

1.0.101

1 year ago

1.0.100

1 year ago

1.0.99

1 year ago

1.0.98

1 year ago

1.0.97

1 year ago

1.0.96

1 year ago

1.0.95

1 year ago

1.0.94

1 year ago

1.0.93

1 year ago

1.0.92

1 year ago

1.0.91

1 year ago

1.0.90

1 year ago

1.0.89

1 year ago

1.0.88

1 year ago

1.0.87

1 year ago

1.0.85

1 year ago

1.0.84

1 year ago

1.0.83

1 year ago

1.0.82

1 year ago

1.0.81

1 year ago

1.0.80

1 year ago

1.0.79

1 year ago

1.0.78

1 year ago

1.0.77

1 year ago

1.0.76

1 year ago

1.0.75

1 year ago

1.0.74

1 year ago

1.0.73

1 year ago

1.0.72

1 year ago

1.0.71

1 year ago

1.0.70

1 year ago

1.0.69

1 year ago

1.0.68

1 year ago

1.0.67

1 year ago

1.0.66

1 year ago

1.0.65

1 year ago

1.0.64

1 year ago

1.0.63

1 year ago

1.0.62

1 year ago

1.0.61

1 year ago

1.0.60

1 year ago

1.0.59

1 year ago

1.0.58

1 year ago

1.0.57

1 year ago

1.0.56

1 year ago

1.0.55

1 year ago

1.0.54

1 year ago

1.0.52

1 year ago

1.0.51

1 year ago

1.0.50

1 year ago

1.0.49

1 year ago

1.0.48

1 year ago

1.0.47

1 year ago

1.0.46

1 year ago

1.0.45

1 year ago

1.0.44

1 year ago

1.0.43

1 year ago

1.0.42

1 year ago

1.0.41

1 year ago

1.0.40

1 year ago

1.0.39

1 year ago

1.0.38

1 year ago

1.0.37

1 year ago

1.0.36

1 year ago

1.0.35

1 year ago

1.0.34

1 year ago

1.0.33

1 year ago

1.0.32

1 year ago

1.0.31

1 year ago

1.0.30

1 year ago

1.0.29

1 year ago

1.0.28

1 year ago

1.0.27

1 year ago

1.0.26

1 year ago

1.0.25

1 year ago

1.0.24

1 year ago

1.0.23

1 year ago

1.0.22

1 year ago

1.0.21

1 year ago

1.0.20

1 year ago

1.0.19

1 year ago

1.0.18

1 year ago

1.0.17

1 year ago

1.0.16

1 year ago

1.0.15

1 year ago

1.0.14

1 year ago

1.0.13

1 year ago

1.0.12

1 year ago

1.0.11

1 year ago

1.0.10

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago