Ruby on Rails-এ একটি User Registration এবং Login System তৈরি করা একটি সাধারণ কিন্তু গুরুত্বপূর্ণ কাজ, যা অধিকাংশ ওয়েব অ্যাপ্লিকেশনেই প্রয়োজন হয়। এই টিউটোরিয়ালে আমরা একটি সিম্পল ব্যবহারকারী নিবন্ধন (registration) এবং লগইন (login) সিস্টেম তৈরি করব। এর জন্য Devise gem ব্যবহারের মাধ্যমে সহজেই একটি শক্তিশালী অথেন্টিকেশন সিস্টেম তৈরি করা যাবে।
1. Devise Gem ইনস্টলেশন
Devise একটি জনপ্রিয় Ruby gem, যা রুবি অন রেইলস অ্যাপ্লিকেশনের জন্য এক্সটেনসিভ অথেন্টিকেশন সিস্টেম প্রদান করে। এটি লগইন, রেজিস্ট্রেশন, ফগোট পাসওয়ার্ড, এবং অন্যান্য অথেন্টিকেশন কার্যক্রম সহজভাবে পরিচালনা করতে সহায়তা করে।
১. Devise Gem ইনস্টল করা
প্রথমে Gemfile এ Devise gem যোগ করুন:
gem 'devise'
এরপর, নিচের কমান্ডটি চালিয়ে gem ইনস্টল করুন:
bundle install
২. Devise কনফিগারেশন
Devise ইনস্টল করার পর, কনফিগারেশন ফাইল সেটআপ করতে নিম্নলিখিত কমান্ডটি চালান:
rails generate devise:install
এটি Devise এর কনফিগারেশন ফাইল তৈরি করবে এবং কিছু গাইডলাইনও প্রদান করবে যা আপনাকে আপনার অ্যাপ্লিকেশন সেটআপ করতে সহায়তা করবে। নির্দেশাবলী অনুসরণ করতে ভুলবেন না।
2. User মডেল তৈরি করা
এখন, আমরা একটি User মডেল তৈরি করব যা আমাদের ব্যবহারকারীদের জন্য রেজিস্ট্রেশন এবং লগইন সিস্টেমের ভূমিকা পালন করবে।
১. User মডেল তৈরি
Devise ব্যবহার করতে হলে, আমরা একটি User মডেল তৈরি করতে হবে যা Devise দ্বারা প্রোভাইড করা ফিচারসমূহ ইনক্লুড করবে। devise কনফিগারেশন দিয়ে মডেল তৈরি করতে নিম্নলিখিত কমান্ডটি চালান:
rails generate devise User
এটি User মডেল তৈরি করবে এবং প্রয়োজনীয় ফিল্ডগুলো (যেমন email, encrypted_password ইত্যাদি) সহ ডেটাবেস মাইগ্রেশন ফাইল তৈরি করবে।
২. মাইগ্রেশন চালানো
মাইগ্রেশন ফাইল তৈরি হওয়ার পর, এটি ডেটাবেসে প্রয়োগ করতে নিম্নলিখিত কমান্ডটি চালান:
rails db:migrate
এটি ডেটাবেসের users টেবিল তৈরি করবে, যেখানে Devise এর প্রিভিলেজগুলোর জন্য প্রয়োজনীয় ফিল্ড থাকবে (যেমন email, encrypted_password, reset_password_token, ইত্যাদি)।
3. রেজিস্ট্রেশন এবং লগইন ফর্ম তৈরি করা
১. রেজিস্ট্রেশন ফর্ম (Sign Up)
Devise স্বয়ংক্রিয়ভাবে রেজিস্ট্রেশন এবং লগইন ফর্ম তৈরি করে, তবে যদি আপনি কাস্টম ফর্ম তৈরি করতে চান, তবে নিচের মত করতে পারেন।
app/views/devise/registrations/new.html.erb ফাইলে রেজিস্ট্রেশন ফর্ম থাকবে:
<h2>Sign Up</h2>
<%= form_for(@user, as: :user, url: user_registration_path) do |f| %>
<div>
<%= f.label :email %>
<%= f.email_field :email, autofocus: true %>
</div>
<div>
<%= f.label :password %>
<%= f.password_field :password, autocomplete: "off" %>
</div>
<div>
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation %>
</div>
<div>
<%= f.submit "Sign Up" %>
</div>
<% end %>
২. লগইন ফর্ম (Login)
লগইন ফর্মের জন্য app/views/devise/sessions/new.html.erb ফাইলটি কাস্টমাইজ করা যেতে পারে:
<h2>Login</h2>
<%= form_for(:user, as: :user, url: user_session_path) do |f| %>
<div>
<%= f.label :email %>
<%= f.email_field :email, autofocus: true %>
</div>
<div>
<%= f.label :password %>
<%= f.password_field :password, autocomplete: "off" %>
</div>
<div>
<%= f.submit "Login" %>
</div>
<% end %>
4. Routes কনফিগারেশন
Devise স্বয়ংক্রিয়ভাবে প্রয়োজনীয় রুট (routes) কনফিগার করে, কিন্তু যদি আপনি কাস্টম রাউট ব্যবহার করতে চান তবে config/routes.rb ফাইলে সেটআপ করতে পারেন:
Rails.application.routes.draw do
devise_for :users
root to: 'home#index'
end
এটি Devise এর জন্য সমস্ত রাউট তৈরি করবে, যেমন:
/users/sign_in(লগইন পেজ)/users/sign_up(রেজিস্ট্রেশন পেজ)/users/sign_out(লগআউট)
5. User Authentication
Devise স্বয়ংক্রিয়ভাবে লগইন, রেজিস্ট্রেশন, লগআউট এবং অন্যান্য অথেন্টিকেশন ফিচারগুলি হ্যান্ডেল করবে। ব্যবহারকারী যদি লগইন না থাকে তবে তারা স্বয়ংক্রিয়ভাবে লগইন পেজে রিডাইরেক্ট হবে।
১. ব্যবহারকারী লগইন এবং লগআউট
Devise স্বয়ংক্রিয়ভাবে sign_in এবং sign_out ফাংশনালিটি প্রদান করে। আপনি যদি লগইন বা লগআউট করতে চান, তাহলে নিচের মত ব্যবহার করতে পারেন:
# লগইন
user = User.find_by(email: "user@example.com")
sign_in(user)
# লগআউট
sign_out(user)
২. ব্যবহারকারীর তথ্য অ্যাক্সেস
লগইন হওয়ার পর, আপনি ব্যবহারকারীর তথ্য অ্যাক্সেস করতে পারেন:
current_user # এটি বর্তমানে লগইন করা ব্যবহারকারীকে ফেরত দেবে।
6. Password Reset
Devise ব্যবহারকারীদের পাসওয়ার্ড রিসেট করার জন্য একটি স্বয়ংক্রিয় পদ্ধতি প্রদান করে। ব্যবহারকারী যদি পাসওয়ার্ড ভুলে যায়, তবে তারা একটি লিঙ্ক পেতে পারে যার মাধ্যমে তারা তাদের পাসওয়ার্ড রিসেট করতে পারবে।
Devise পাসওয়ার্ড রিসেট ফিচারটি সক্রিয় করার জন্য কিছু কনফিগারেশন সেটআপ করতে হয়। config/initializers/devise.rb ফাইলে config.reconfirmable এবং অন্যান্য পাসওয়ার্ড রিসেট কনফিগারেশন পরিবর্তন করতে হবে।
সারমর্ম
Ruby on Rails-এ একটি User Registration এবং Login System তৈরি করতে Devise gem ব্যবহার করা একটি সহজ এবং জনপ্রিয় উপায়। এটি লগইন, রেজিস্ট্রেশন, পাসওয়ার্ড রিসেট, এবং সেশন ম্যানেজমেন্টের মতো গুরুত্বপূর্ণ ফিচারগুলি স্বয়ংক্রিয়ভাবে তৈরি করে। Devise এর মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনকে দ্রুত অথেন্টিকেশন এবং অথোরাইজেশন সিস্টেম সেটআপ করতে পারবেন।
Read more