Django প্রজেক্টে Email Verification এবং Account Activation ব্যবহারকারীর নিরাপত্তা নিশ্চিত করতে এবং প্রকৃত ব্যবহারকারী যাচাই করতে গুরুত্বপূর্ণ। Djoser এবং অন্যান্য প্যাকেজের সাহায্যে সহজেই এই বৈশিষ্ট্যগুলো ইমপ্লিমেন্ট করা যায়। নিচে এই প্রক্রিয়ার বিস্তারিত ব্যাখ্যা দেওয়া হলো।
১. Email Confirmation: ইউজার রেজিস্ট্রেশনের পর অ্যাকাউন্ট কনফার্মেশন মেইল পাঠানো
Djoser SEND_ACTIVATION_EMAIL সেটিং দিয়ে ইমেইল কনফার্মেশন সক্রিয় করা যায়। ব্যবহারকারী রেজিস্ট্রেশনের পর একটি ইমেইল পাবে যাতে অ্যাকাউন্ট একটিভেশন লিংক থাকবে।
১. Django এর ACTIVATION_URL কনফিগারেশন
Django প্রজেক্টে ACTIVATION_URL সেটআপ করতে হবে যাতে এটি React ফ্রন্টএন্ডের URL নির্দেশ করে।
Settings.py কনফিগারেশন:
DJOSER = {
'SEND_ACTIVATION_EMAIL': True,
'ACTIVATION_URL': 'auth/activate/{uid}/{token}/',
}
এখানে ACTIVATION_URL সেট করা হয়েছে যাতে ইমেইলে পাঠানো লিঙ্কে uid এবং token যুক্ত থাকে। React অ্যাপের URL অনুসারে এটি হবে:
DJOSER = {
'SEND_ACTIVATION_EMAIL': True,
'ACTIVATION_URL': 'http://127.0.0.1:3000/activate/{uid}/{token}/',
}
ইমেইল সেটআপ: ইমেইল পাঠানোর জন্য Django এর EMAIL_BACKEND এবং SMTP সার্ভারের সেটআপ প্রয়োজন।
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.your-email-provider.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'your-email@example.com'
EMAIL_HOST_PASSWORD = 'your-email-password'
DEFAULT_FROM_EMAIL = 'webmaster@example.com'
২. React Routing সেটআপ
React অ্যাপে একটি route তৈরি করতে হবে যা uid এবং token ক্যাপচার করে সেই ডাটা ব্যবহার করে API কল করবে।
React Route Component:
import React, { useEffect } from 'react';
import { useParams, useNavigate } from 'react-router-dom';
import axios from 'axios';
const ActivateAccount = () => {
const { uid, token } = useParams();
const navigate = useNavigate();
useEffect(() => {
// API call to submit uid and token
const activateAccount = async () => {
try {
const response = await axios.post('http://127.0.0.1:8000/auth/users/activation/', {
uid: uid,
token: token,
});
alert('Account activated successfully!');
navigate('/login'); // Redirect to login page after successful activation
} catch (error) {
console.error('Activation failed:', error);
alert('Activation failed. Please try again.');
}
};
if (uid && token) {
activateAccount();
}
}, [uid, token, navigate]);
return (
<div>
<h2>Activating your account...</h2>
</div>
);
};
export default ActivateAccount;
৩. React Router সেটআপ
React অ্যাপে react-router-dom ব্যবহার করে routing নিশ্চিত করতে হবে।
App.js:
import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import ActivateAccount from './ActivateAccount';
function App() {
return (
<Router>
<Routes>
<Route path="/activate/:uid/:token" element={<ActivateAccount />} />
</Routes>
</Router>
);
}
export default App;
৪. ব্যাখ্যা
- Django:
ACTIVATION_URLসেটআপ করলে Django ইমেইলে একটিভেশন লিংকে React অ্যাপের URL যুক্ত করে। - React:
useParams()hook ব্যবহার করেuidএবংtokenক্যাপচার করা হয়।axiosব্যবহার করে Django API endpoint এ POST রিকোয়েস্ট পাঠানো হয়। - Redirect: একটিভেশন সফল হলে ইউজারকে লগইন পেজে রিডিরেক্ট করা হয়।
এই পদ্ধতিতে, ব্যবহারকারীরা ইমেইলে প্রাপ্ত লিঙ্কে ক্লিক করলে React অ্যাপের নির্দিষ্ট ভিউ ওপেন হবে এবং uid এবং token সহ অ্যাকাউন্ট একটিভেশন প্রক্রিয়া সম্পন্ন হবে।