<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nirmal Ram</title>
    <description>The latest articles on DEV Community by Nirmal Ram (@ramnirmal0).</description>
    <link>https://dev.to/ramnirmal0</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F667624%2Fa202c710-850e-4cff-9167-8755e12f27c6.png</url>
      <title>DEV Community: Nirmal Ram</title>
      <link>https://dev.to/ramnirmal0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ramnirmal0"/>
    <language>en</language>
    <item>
      <title>How to create protected route using keycloak and React JS</title>
      <dc:creator>Nirmal Ram</dc:creator>
      <pubDate>Mon, 15 Nov 2021 08:42:55 +0000</pubDate>
      <link>https://dev.to/ramnirmal0/how-to-create-protected-route-using-keycloak-and-react-js-2ckc</link>
      <guid>https://dev.to/ramnirmal0/how-to-create-protected-route-using-keycloak-and-react-js-2ckc</guid>
      <description>&lt;p&gt;Once you done configure keycloak with react using keycloak adapter you can use keycloak default functions to create protected routes based on realm roles , client roles , user privileges , resource type.&lt;/p&gt;

&lt;p&gt;below i share react code to demonstrate the inbuilt functions in keycloak-js library&lt;/p&gt;

&lt;p&gt;to use library&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i keycloak-js@12.0.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import './App.css';
import {
  BrowserRouter as Router,
  Switch,
  Route,
  Link
} from "react-router-dom";
import ClientAdmin from './component/ClientAdmin';
import ClientUser from './component/ClientUser';
import RealmAdmin from './component/RealmAdmin';
import SuperAdmin from './component/SuperAdmin';
import Unprotected from './component/Unprotected';
import Protected from './component/Protected';
import NoPermission from './component/NoPermission';

function App(props) {
  return (
    &amp;lt;Router&amp;gt;
    &amp;lt;div className="main-container"&amp;gt;
      &amp;lt;nav&amp;gt;
        &amp;lt;h1&amp;gt;Demo App&amp;lt;/h1&amp;gt;
        &amp;lt;p&amp;gt;Note : You will only see navigation menu based on your user privileges assigned by keycloak&amp;lt;/p&amp;gt;
        &amp;lt;button onClick={()=&amp;gt;props.keycloak.logout()}&amp;gt;LOGOUT&amp;lt;/button&amp;gt;
        &amp;lt;ul&amp;gt;
          &amp;lt;li&amp;gt;
            &amp;lt;Link to="/unprotected"&amp;gt;Unprotected&amp;lt;/Link&amp;gt;
          &amp;lt;/li&amp;gt;
          &amp;lt;li&amp;gt;
            {props.keycloak.hasResourceRole('client1-admin') &amp;amp;&amp;amp; !!props.keycloak.token ? &amp;lt;Link to="/client1-admin"&amp;gt;client1-admin&amp;lt;/Link&amp;gt;:  &amp;lt;span&amp;gt; /client1-admin [no access] &amp;lt;/span&amp;gt;}
          &amp;lt;/li&amp;gt;
          &amp;lt;li&amp;gt;
            {props.keycloak.hasResourceRole('client1-user') &amp;amp;&amp;amp; !!props.keycloak.token ? &amp;lt;Link to="/client1-user"&amp;gt;Client1-User&amp;lt;/Link&amp;gt;:&amp;lt;span&amp;gt; /client1-user [no access] &amp;lt;/span&amp;gt;}
          &amp;lt;/li&amp;gt;
          &amp;lt;li&amp;gt;
            {props.keycloak.hasRealmRole('realm-client1') &amp;amp;&amp;amp; !!props.keycloak.token ? &amp;lt;Link to="/realm-client"&amp;gt;Realm-client1&amp;lt;/Link&amp;gt;:&amp;lt;span&amp;gt; /realm-client [no access] &amp;lt;/span&amp;gt;}
          &amp;lt;/li&amp;gt;
          &amp;lt;li&amp;gt;
            {props.keycloak.hasRealmRole('super-admin') &amp;amp;&amp;amp; !!props.keycloak.token ? &amp;lt;Link to="/super-admin"&amp;gt;Super-Admin&amp;lt;/Link&amp;gt;:&amp;lt;span&amp;gt; /super-admin [no access] &amp;lt;/span&amp;gt;}
          &amp;lt;/li&amp;gt;
          &amp;lt;li&amp;gt;
            {props.keycloak.hasResourceRole('client1-admin') &amp;amp;&amp;amp; props.keycloak.hasRealmRole('realm-client1') &amp;amp;&amp;amp; !!props.keycloak.token ? &amp;lt;Link to="/protected"&amp;gt;Protected&amp;lt;/Link&amp;gt;:&amp;lt;span&amp;gt; /protected [no access] &amp;lt;/span&amp;gt;}
          &amp;lt;/li&amp;gt;
        &amp;lt;/ul&amp;gt;
      &amp;lt;/nav&amp;gt;
      &amp;lt;h1&amp;gt;kEYCLOAK DEMO : SEE COMPONENT CHANGE BELOW&amp;lt;/h1&amp;gt;

      {/* A &amp;lt;Switch&amp;gt; looks through its children &amp;lt;Route&amp;gt;s and
          renders the first one that matches the current URL. */}
      &amp;lt;Switch&amp;gt;
        &amp;lt;Route path="/unprotected"&amp;gt;
           &amp;lt;Unprotected/&amp;gt;
        &amp;lt;/Route&amp;gt;
        &amp;lt;Route path="/client1-admin"&amp;gt;
          {props.keycloak.hasResourceRole('client1-admin') &amp;amp;&amp;amp; !!props.keycloak.token ?  &amp;lt;ClientAdmin/&amp;gt; : &amp;lt;NoPermission/&amp;gt; }
        &amp;lt;/Route&amp;gt;
        &amp;lt;Route path="/client1-user"&amp;gt;
          {props.keycloak.hasResourceRole('client1-user') &amp;amp;&amp;amp; !!props.keycloak.token ?&amp;lt;ClientUser/&amp;gt;: &amp;lt;NoPermission/&amp;gt; }
        &amp;lt;/Route&amp;gt;
        &amp;lt;Route path="/realm-client"&amp;gt;
           {props.keycloak.hasRealmRole('realm-client1') &amp;amp;&amp;amp; !!props.keycloak.token ?&amp;lt;RealmAdmin/&amp;gt;: &amp;lt;NoPermission/&amp;gt; }
        &amp;lt;/Route&amp;gt;
        &amp;lt;Route path="/super-admin"&amp;gt;
          {props.keycloak.hasRealmRole('super-admin') &amp;amp;&amp;amp; !!props.keycloak.token ?&amp;lt;SuperAdmin/&amp;gt;: &amp;lt;NoPermission/&amp;gt; }
        &amp;lt;/Route&amp;gt;
        &amp;lt;Route path="/protected"&amp;gt;
          {props.keycloak.hasResourceRole('client1-admin') &amp;amp;&amp;amp; props.keycloak.hasRealmRole('realm-client1') &amp;amp;&amp;amp; !!props.keycloak.token ? &amp;lt;Protected/&amp;gt;: &amp;lt;NoPermission/&amp;gt; }
        &amp;lt;/Route&amp;gt;
      &amp;lt;/Switch&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/Router&amp;gt;
  );
}

export default App;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>keycloak</category>
      <category>react</category>
      <category>security</category>
      <category>route</category>
    </item>
    <item>
      <title>How to change default title in client login screen using Keycloak?</title>
      <dc:creator>Nirmal Ram</dc:creator>
      <pubDate>Mon, 15 Nov 2021 08:28:17 +0000</pubDate>
      <link>https://dev.to/ramnirmal0/how-to-change-default-title-in-client-login-screen-using-keycloak-p6n</link>
      <guid>https://dev.to/ramnirmal0/how-to-change-default-title-in-client-login-screen-using-keycloak-p6n</guid>
      <description>&lt;p&gt;In your &lt;b&gt;realm settings &amp;gt; HTML Display name&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;replace:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class="kc-logo-text"&amp;gt;&amp;lt;span&amp;gt;Keycloak&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;with your Application name that you wish to show on your login screen. you can also provide HTML code for using image instead of title&lt;/p&gt;

&lt;p&gt;use&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;img alt="..ALT-TEXT.." src="../../SOURCE" width="400"/&amp;gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to insert your logo instead&lt;/p&gt;

&lt;p&gt;Happy Hacking..&lt;/p&gt;

</description>
      <category>keycloak</category>
      <category>security</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
