<?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: Vimal</title>
    <description>The latest articles on DEV Community by Vimal (@vimal_adithan).</description>
    <link>https://dev.to/vimal_adithan</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%2F1237808%2Feb6e3c4d-0d5e-4e1f-9734-c8cb854cf415.jpg</url>
      <title>DEV Community: Vimal</title>
      <link>https://dev.to/vimal_adithan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vimal_adithan"/>
    <language>en</language>
    <item>
      <title>Mongo rhel install cmd</title>
      <dc:creator>Vimal</dc:creator>
      <pubDate>Wed, 04 Feb 2026 09:44:47 +0000</pubDate>
      <link>https://dev.to/vimal_adithan/mongo-rhel-install-cmd-2oc1</link>
      <guid>https://dev.to/vimal_adithan/mongo-rhel-install-cmd-2oc1</guid>
      <description>&lt;p&gt;Create the MongoDB 6.0 repo&lt;/p&gt;

&lt;p&gt;Create /etc/yum.repos.d/mongodb-org-6.0.repo:&lt;/p&gt;

&lt;p&gt;sudo tee /etc/yum.repos.d/mongodb-org-6.0.repo &amp;lt;&amp;lt;'EOF'&lt;br&gt;
[mongodb-org-6.0]&lt;br&gt;
name=MongoDB Repository&lt;br&gt;
baseurl=&lt;a href="https://repo.mongodb.org/yum/redhat/8/mongodb-org/6.0/x86_64/" rel="noopener noreferrer"&gt;https://repo.mongodb.org/yum/redhat/8/mongodb-org/6.0/x86_64/&lt;/a&gt;&lt;br&gt;
gpgcheck=1&lt;br&gt;
enabled=1&lt;br&gt;
gpgkey=&lt;a href="https://www.mongodb.org/static/pgp/server-6.0.asc" rel="noopener noreferrer"&gt;https://www.mongodb.org/static/pgp/server-6.0.asc&lt;/a&gt;&lt;br&gt;
EOF&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Frontend axios middleware</title>
      <dc:creator>Vimal</dc:creator>
      <pubDate>Tue, 04 Jun 2024 20:10:00 +0000</pubDate>
      <link>https://dev.to/vimal_adithan/frontend-axios-middleware-3nd4</link>
      <guid>https://dev.to/vimal_adithan/frontend-axios-middleware-3nd4</guid>
      <description>&lt;p&gt;import axios from 'axios'&lt;br&gt;
import jwt_decode from "jwt-decode";&lt;br&gt;
import dayjs from 'dayjs'&lt;br&gt;
import { useContext } from 'react'&lt;br&gt;
import AuthContext from '../context/AuthContext'&lt;/p&gt;

&lt;p&gt;const baseURL = '&lt;a href="http://127.0.0.1:8000" rel="noopener noreferrer"&gt;http://127.0.0.1:8000&lt;/a&gt;'&lt;/p&gt;

&lt;p&gt;const useAxios = () =&amp;gt; {&lt;br&gt;
    const {authTokens, setUser, setAuthTokens} = useContext(AuthContext)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const axiosInstance = axios.create({
    baseURL,
    headers:{Authorization: `Bearer ${authTokens?.access}`}
});


axiosInstance.interceptors.request.use(async req =&amp;gt; {

    const user = jwt_decode(authTokens.access)
    const isExpired = dayjs.unix(user.exp).diff(dayjs()) &amp;lt; 1;

    if(!isExpired) return req

    const response = await axios.post(`${baseURL}/api/token/refresh/`, {
        refresh: authTokens.refresh
      });

    localStorage.setItem('authTokens', JSON.stringify(response.data))

    setAuthTokens(response.data)
    setUser(jwt_decode(response.data.access))

    req.headers.Authorization = `Bearer ${response.data.access}`
    return req
})

return axiosInstance
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;export default useAxios;&lt;/p&gt;

</description>
      <category>interceptor</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Session logout from RP</title>
      <dc:creator>Vimal</dc:creator>
      <pubDate>Sun, 05 May 2024 20:45:48 +0000</pubDate>
      <link>https://dev.to/vimal_adithan/session-logout-from-rp-min</link>
      <guid>https://dev.to/vimal_adithan/session-logout-from-rp-min</guid>
      <description>&lt;p&gt;// Logout route&lt;br&gt;
app.get('/logout', (req, res) =&amp;gt; {&lt;br&gt;
  // Perform OIDC logout&lt;br&gt;
  req.logout();&lt;br&gt;
  res.redirect(client.endSessionUrl({&lt;br&gt;
    post_logout_redirect_uri: '&lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;', // Redirect after logout&lt;br&gt;
  }));&lt;br&gt;
});&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Creatin session.sig using sessionID in oidc provider</title>
      <dc:creator>Vimal</dc:creator>
      <pubDate>Sun, 05 May 2024 19:44:55 +0000</pubDate>
      <link>https://dev.to/vimal_adithan/creatin-sessionsig-using-sessionid-in-oidc-provider-5f35</link>
      <guid>https://dev.to/vimal_adithan/creatin-sessionsig-using-sessionid-in-oidc-provider-5f35</guid>
      <description>&lt;p&gt;const crypto = require('crypto');&lt;/p&gt;

&lt;p&gt;// Function to generate a signature for a given data and secret key&lt;br&gt;
function generateSignature(data, secretKey) {&lt;br&gt;
    const hmac = crypto.createHmac('sha256', secretKey);&lt;br&gt;
    hmac.update(data);&lt;br&gt;
    return hmac.digest();&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;// Example session ID&lt;br&gt;
const sessionId = "example_session_id";&lt;/p&gt;

&lt;p&gt;// Example secret key (should be securely stored in your application)&lt;br&gt;
const secretKey = Buffer.from("example_secret_key", 'utf-8');&lt;/p&gt;

&lt;p&gt;// Data to sign (in this case, just the session ID)&lt;br&gt;
const data = Buffer.from(sessionId, 'utf-8');&lt;/p&gt;

&lt;p&gt;// Generate signatures for session and legacy session&lt;br&gt;
const sessionSignature = generateSignature(data, secretKey);&lt;br&gt;
const legacySessionSignature = generateSignature(data, secretKey);&lt;/p&gt;

&lt;p&gt;// Encode signatures as base64 strings for use in cookies&lt;br&gt;
const sessionSignatureBase64 = sessionSignature.toString('base64').replace(/=/g, '');&lt;br&gt;
const legacySessionSignatureBase64 = legacySessionSignature.toString('base64').replace(/=/g, '');&lt;/p&gt;

&lt;p&gt;// Print the encoded signatures&lt;br&gt;
console.log("Session Signature:", sessionSignatureBase64);&lt;br&gt;
console.log("Legacy Session Signature:", legacySessionSignatureBase64);&lt;/p&gt;

</description>
      <category>node</category>
      <category>oidcprovide</category>
    </item>
    <item>
      <title>Frontend websites</title>
      <dc:creator>Vimal</dc:creator>
      <pubDate>Sun, 05 May 2024 19:43:05 +0000</pubDate>
      <link>https://dev.to/vimal_adithan/frontend-websites-23j6</link>
      <guid>https://dev.to/vimal_adithan/frontend-websites-23j6</guid>
      <description>&lt;p&gt;Boxshadow&lt;br&gt;
&lt;a href="https://neumorphism.io/#e0e0e0" rel="noopener noreferrer"&gt;https://neumorphism.io/#e0e0e0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Glassmorphism&lt;br&gt;
&lt;a href="https://ui.glass/generator/" rel="noopener noreferrer"&gt;https://ui.glass/generator/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Getwaves&lt;br&gt;
&lt;a href="https://getwaves.io/" rel="noopener noreferrer"&gt;https://getwaves.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Heropatterns&lt;/p&gt;

</description>
    </item>
    <item>
      <title>React Carousel</title>
      <dc:creator>Vimal</dc:creator>
      <pubDate>Tue, 23 Apr 2024 05:16:50 +0000</pubDate>
      <link>https://dev.to/vimal_adithan/react-carousel-23nb</link>
      <guid>https://dev.to/vimal_adithan/react-carousel-23nb</guid>
      <description>&lt;p&gt;import logo from './logo.svg';&lt;br&gt;
import './App.css';&lt;br&gt;
import React ,{useState} from "react";&lt;/p&gt;

&lt;p&gt;function App() {&lt;br&gt;
const images = [array of Image links];&lt;br&gt;
const [Image,setImage] = useState(0);&lt;/p&gt;

&lt;p&gt;const nextfn = ()=&amp;gt; setImage(Image == images.length-1 ? 0 : Image + 1);&lt;/p&gt;

&lt;p&gt;const prefn = () =&amp;gt; setImage(Image == 0 ? images.length-1 : Image - 1);&lt;/p&gt;

&lt;p&gt;**_&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;return (&lt;/li&gt;
&lt;li&gt;   
&lt;/li&gt;
&lt;li&gt;    {images.map((item,index) =&amp;gt; Image == index &amp;amp;&amp;amp; &lt;/li&gt;
&lt;li&gt;    
&lt;/li&gt;
&lt;li&gt;      &lt;img&gt;
&lt;/li&gt;
&lt;li&gt;    &lt;/li&gt;

&lt;li&gt;    )}&lt;/li&gt;
&lt;li&gt;    
&lt;/li&gt;
&lt;li&gt;    Previous&lt;/li&gt;
&lt;li&gt;    Next&lt;/li&gt;
&lt;li&gt;    &lt;/li&gt;

&lt;li&gt;   &lt;/li&gt;

&lt;li&gt;  );&lt;/li&gt;
&lt;li&gt;}
_**&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;export default App;&lt;/p&gt;

&lt;h2&gt;
  
  
  CSS
&lt;/h2&gt;

&lt;p&gt;*{&lt;br&gt;
  box-sizing: border-box;&lt;br&gt;
  padding: 0;&lt;br&gt;
  margin: 0;&lt;br&gt;
}&lt;br&gt;
body{&lt;br&gt;
  display: flex;&lt;br&gt;
  justify-content: center;&lt;br&gt;
  align-items: center;&lt;br&gt;
  height: 100vh;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;button{&lt;br&gt;
  padding: 12px;&lt;br&gt;
  font-size: 17px;&lt;br&gt;
  border: none;&lt;br&gt;
  background-color: rgba(11, 5, 0, 0.607);&lt;br&gt;
  color: white;&lt;br&gt;
  border-radius: 50px;&lt;br&gt;
  cursor: pointer;&lt;br&gt;
  margin: 20px;&lt;br&gt;
}&lt;br&gt;
.button{&lt;br&gt;
  margin: 20px 200px;&lt;br&gt;
}&lt;br&gt;
button:hover{&lt;br&gt;
  background-color: rgba(11, 5, 0, 0.895);&lt;br&gt;
}&lt;br&gt;
img{&lt;br&gt;
  width: 600px;&lt;br&gt;
  height: 370px;&lt;br&gt;
  border-radius: 2px;&lt;br&gt;
}&lt;/p&gt;

</description>
    </item>
    <item>
      <title>/token route for oidc provider</title>
      <dc:creator>Vimal</dc:creator>
      <pubDate>Tue, 16 Apr 2024 17:57:16 +0000</pubDate>
      <link>https://dev.to/vimal_adithan/token-route-for-oidc-provider-4g5c</link>
      <guid>https://dev.to/vimal_adithan/token-route-for-oidc-provider-4g5c</guid>
      <description>&lt;p&gt;curl -X POST \&lt;br&gt;
  -H "Content-Type: application/x-www-form-urlencoded" \&lt;br&gt;
  -d "grant_type=client_credentials&amp;amp;client_id=your_client_id&amp;amp;client_secret=your_client_secret&amp;amp;scope=registration" \&lt;br&gt;
  &lt;a href="https://your_auth_server.com/oauth/token" rel="noopener noreferrer"&gt;https://your_auth_server.com/oauth/token&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Backchannel route for oidc provider</title>
      <dc:creator>Vimal</dc:creator>
      <pubDate>Fri, 05 Apr 2024 05:38:39 +0000</pubDate>
      <link>https://dev.to/vimal_adithan/backchannel-route-for-oidc-provider-2ch4</link>
      <guid>https://dev.to/vimal_adithan/backchannel-route-for-oidc-provider-2ch4</guid>
      <description>&lt;p&gt;curl -X POST \&lt;br&gt;
  -H "Content-Type: application/json" \&lt;br&gt;
  -d '{"client_id": "your_client_id", "client_secret": "your_client_secret", "grant_type": "backchannel_authentication", "scope": "openid profile email", "client_notification_token": "your_notification_token", "binding_message": "optional_message"}' \&lt;br&gt;
  &lt;a href="https://your_oidc_provider.com/backchannel" rel="noopener noreferrer"&gt;https://your_oidc_provider.com/backchannel&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Oidc provider /auth route</title>
      <dc:creator>Vimal</dc:creator>
      <pubDate>Mon, 01 Apr 2024 05:18:56 +0000</pubDate>
      <link>https://dev.to/vimal_adithan/oidc-provider-auth-route-3006</link>
      <guid>https://dev.to/vimal_adithan/oidc-provider-auth-route-3006</guid>
      <description>&lt;p&gt;&lt;a href="http://localhost:3000/oidc/auth" rel="noopener noreferrer"&gt;http://localhost:3000/oidc/auth&lt;/a&gt;&lt;br&gt;
    ?client_id=oidc_client&lt;br&gt;
    &amp;amp;response_type=code&lt;br&gt;
    &amp;amp;response_mode=query&lt;br&gt;
    &amp;amp;redirect_uri=&lt;a href="http://localhost:3001/cb" rel="noopener noreferrer"&gt;http://localhost:3001/cb&lt;/a&gt;&lt;br&gt;
    &amp;amp;code_challenge=nqWxOqTBUa9iu9G5pL6LWChLS5TYEcyhwWbbQlj79ZU&lt;br&gt;
    &amp;amp;code_challenge_method=S256&lt;br&gt;
    &amp;amp;scope=openid&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Oidc /reg route curl for update client</title>
      <dc:creator>Vimal</dc:creator>
      <pubDate>Fri, 29 Mar 2024 12:31:05 +0000</pubDate>
      <link>https://dev.to/vimal_adithan/oidc-reg-route-curl-for-update-client-2elo</link>
      <guid>https://dev.to/vimal_adithan/oidc-reg-route-curl-for-update-client-2elo</guid>
      <description>&lt;p&gt;curl -X POST \&lt;br&gt;
  &lt;a href="https://your-oidc-provider.com/reg" rel="noopener noreferrer"&gt;https://your-oidc-provider.com/reg&lt;/a&gt; \&lt;br&gt;
  -H 'Content-Type: application/json' \&lt;br&gt;
  -d '{&lt;br&gt;
    "client_id": "your_client_id",&lt;br&gt;
    "client_secret": "your_client_secret",&lt;br&gt;
    "client_name": "UpdatedClientName",&lt;br&gt;
    "redirect_uris": ["&lt;a href="https://updatedredirecturi.com/callback%22" rel="noopener noreferrer"&gt;https://updatedredirecturi.com/callback"&lt;/a&gt;],&lt;br&gt;
    "grant_types": ["authorization_code", "refresh_token"],&lt;br&gt;
    "response_types": ["code"],&lt;br&gt;
    "token_endpoint_auth_method": "client_secret_basic"&lt;br&gt;
}'&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Oidc provider client registration</title>
      <dc:creator>Vimal</dc:creator>
      <pubDate>Mon, 25 Mar 2024 06:11:42 +0000</pubDate>
      <link>https://dev.to/vimal_adithan/oidc-provider-client-registration-2fl7</link>
      <guid>https://dev.to/vimal_adithan/oidc-provider-client-registration-2fl7</guid>
      <description>&lt;p&gt;curl -X POST \&lt;br&gt;
  -H "Content-Type: application/json" \&lt;br&gt;
  -d '{&lt;br&gt;
    "client_name": "My Client",&lt;br&gt;
    "redirect_uris": ["&lt;a href="https://example.com/callback%22" rel="noopener noreferrer"&gt;https://example.com/callback"&lt;/a&gt;],&lt;br&gt;
    "grant_types": ["authorization_code", "refresh_token"],&lt;br&gt;
    "response_types": ["code"],&lt;br&gt;
    "token_endpoint_auth_method": "client_secret_basic"&lt;br&gt;
  }' \&lt;br&gt;
  &lt;a href="https://your-oidc-provider.com/reg" rel="noopener noreferrer"&gt;https://your-oidc-provider.com/reg&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Handle html response from api or axios</title>
      <dc:creator>Vimal</dc:creator>
      <pubDate>Thu, 21 Mar 2024 12:08:52 +0000</pubDate>
      <link>https://dev.to/vimal_adithan/how-to-handle-html-response-from-api-or-axios-2396</link>
      <guid>https://dev.to/vimal_adithan/how-to-handle-html-response-from-api-or-axios-2396</guid>
      <description>&lt;p&gt;import React, { useEffect, useState } from 'react';&lt;/p&gt;

&lt;p&gt;function App() {&lt;br&gt;
  const [data, setData] = useState([]);&lt;/p&gt;

&lt;p&gt;useEffect(() =&amp;gt; {&lt;br&gt;
    // Function to fetch data from the API&lt;br&gt;
    const fetchData = async () =&amp;gt; {&lt;br&gt;
      try {&lt;br&gt;
        // Make the API call&lt;br&gt;
        const response = await fetch('&lt;a href="https://example.com/api/endpoint'" rel="noopener noreferrer"&gt;https://example.com/api/endpoint'&lt;/a&gt;);&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    // Check if the request was successful
    if (response.ok) {
      // Parse the HTML content
      const htmlText = await response.text();
      const parser = new DOMParser();
      const doc = parser.parseFromString(htmlText, 'text/html');

      // Find the HTML elements containing the data you want to extract
      const dataElements = doc.querySelectorAll('.data-element');

      // Extract the data from the HTML elements
      const extractedData = Array.from(dataElements).map(element =&amp;gt; element.textContent.trim());

      // Set the extracted data in the state
      setData(extractedData);
    } else {
      console.error('Failed to fetch data from the API:', response.status);
    }
  } catch (error) {
    console.error('Error fetching data:', error);
  }
};

// Call the fetchData function when the component mounts
fetchData();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}, []); // Empty dependency array ensures this effect runs only once on mount&lt;/p&gt;

&lt;p&gt;return (&lt;br&gt;
    &lt;/p&gt;
&lt;br&gt;
      &lt;h1&gt;Extracted Data&lt;/h1&gt;
&lt;br&gt;
      &lt;ul&gt;

        {data.map((item, index) =&amp;gt; (
          &lt;li&gt;{item}&lt;/li&gt;

        ))}
      &lt;/ul&gt;
&lt;br&gt;
    &lt;br&gt;
  );&lt;br&gt;
}

&lt;p&gt;export default App;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
