Multiple Rules এবং Custom Error Messages

প্যাসে (Passay) - Java Technologies

330

প্যাসে (Passay) লাইব্রেরি ব্যবহারকারীদের জন্য শক্তিশালী পাসওয়ার্ড যাচাইয়ের ব্যবস্থা প্রদান করে, যা বিভিন্ন নিয়ম বা "Rules" অনুযায়ী পাসওয়ার্ডের বৈধতা যাচাই করে। পাশাপাশি, আপনি কাস্টম এরর মেসেজ (Custom Error Messages) সেট করতে পারেন, যা ব্যবহারকারীদের আরও নির্দিষ্টভাবে জানাতে সাহায্য করে কেন তাদের পাসওয়ার্ড অকার্যকর।


Multiple Rules in Passay

প্যাসে (Passay) ব্যবহার করে আপনি একাধিক নিয়ম (Rules) প্রয়োগ করতে পারেন, যা পাসওয়ার্ডের শক্তি এবং নিরাপত্তা নিশ্চিত করে। উদাহরণস্বরূপ, আপনি চাইলে পাসওয়ার্ডের দৈর্ঘ্য, অক্ষরের ধরণ, সংখ্যা, বিশেষ চিহ্ন, এবং অন্যান্য শর্তগুলো নির্দিষ্ট করতে পারেন। একাধিক নিয়ম ব্যবহার করে পাসওয়ার্ড যাচাই আরও কঠোর এবং সুরক্ষিত করা যায়।

উদাহরণ:

import org.passay.*;
import java.util.Arrays;
import java.util.List;

public class PasswordValidatorExample {
    public static void main(String[] args) {
        PasswordValidator validator = new PasswordValidator(
            Arrays.asList(
                new LengthRule(8, 20), // পাসওয়ার্ডের দৈর্ঘ্য ৮ থেকে ২০ অক্ষরের মধ্যে হতে হবে
                new CharacterRule(EnglishCharacterData.UpperCase, 1), // কমপক্ষে একটি বড় হাতের অক্ষর থাকতে হবে
                new CharacterRule(EnglishCharacterData.LowerCase, 1), // কমপক্ষে একটি ছোট হাতের অক্ষর থাকতে হবে
                new DigitRule(1), // কমপক্ষে একটি সংখ্যা থাকতে হবে
                new SpecialCharacterRule(1) // কমপক্ষে একটি বিশেষ চিহ্ন থাকতে হবে
            )
        );

        // পাসওয়ার্ড যাচাই
        RuleResult result = validator.validate(new PasswordData("Passw0rd!"));

        if (result.isValid()) {
            System.out.println("পাসওয়ার্ড বৈধ।");
        } else {
            List<String> messages = validator.getMessages(result);
            System.out.println("পাসওয়ার্ড অকার্যকর: " + String.join(", ", messages));
        }
    }
}

এই উদাহরণে, পাসওয়ার্ডের জন্য একাধিক নিয়ম নির্ধারণ করা হয়েছে, যেমন দৈর্ঘ্য, অক্ষরের ধরণ, এবং বিশেষ চিহ্ন। এটি পাসওয়ার্ড যাচাই করার জন্য একটি শক্তিশালী পদ্ধতি প্রদান করে।


Custom Error Messages in Passay

প্যাসে লাইব্রেরিতে আপনি কাস্টম এরর মেসেজ তৈরি করতে পারেন, যা ব্যবহারকারীদের জানাতে সাহায্য করে কেন তাদের পাসওয়ার্ড অকার্যকর। কাস্টম এরর মেসেজগুলি নির্দিষ্ট নিয়ম অনুযায়ী সেট করা যায় এবং এটি ব্যবহারকারীকে আরও সুনির্দিষ্টভাবে নির্দেশনা দেয়।

কাস্টম এরর মেসেজ সেট করার উদাহরণ:

import org.passay.*;
import java.util.Arrays;
import java.util.List;

public class PasswordValidatorExample {
    public static void main(String[] args) {
        PasswordValidator validator = new PasswordValidator(
            Arrays.asList(
                new LengthRule(8, 20), // পাসওয়ার্ডের দৈর্ঘ্য ৮ থেকে ২০ অক্ষরের মধ্যে থাকতে হবে
                new CharacterRule(EnglishCharacterData.UpperCase, 1), // কমপক্ষে একটি বড় হাতের অক্ষর থাকতে হবে
                new CharacterRule(EnglishCharacterData.LowerCase, 1), // কমপক্ষে একটি ছোট হাতের অক্ষর থাকতে হবে
                new DigitRule(1), // কমপক্ষে একটি সংখ্যা থাকতে হবে
                new SpecialCharacterRule(1) // কমপক্ষে একটি বিশেষ চিহ্ন থাকতে হবে
            )
        );

        // কাস্টম এরর মেসেজ যোগ করা
        validator.setMessages(new Properties() {{
            put(LengthRule.MIN_LENGTH, "পাসওয়ার্ডটি কমপক্ষে ৮ অক্ষরের হওয়া উচিত।");
            put(LengthRule.MAX_LENGTH, "পাসওয়ার্ডটি সর্বোচ্চ ২০ অক্ষরের হতে পারে।");
            put(CharacterRule.MIN_UPPERCASE, "পাসওয়ার্ডে কমপক্ষে একটি বড় হাতের অক্ষর থাকতে হবে।");
            put(DigitRule.MIN_DIGITS, "পাসওয়ার্ডে কমপক্ষে একটি সংখ্যা থাকতে হবে।");
            put(SpecialCharacterRule.MIN_SPECIALCHARS, "পাসওয়ার্ডে কমপক্ষে একটি বিশেষ চিহ্ন থাকতে হবে।");
        }});

        // পাসওয়ার্ড যাচাই
        RuleResult result = validator.validate(new PasswordData("pass123"));

        if (result.isValid()) {
            System.out.println("পাসওয়ার্ড বৈধ।");
        } else {
            List<String> messages = validator.getMessages(result);
            System.out.println("পাসওয়ার্ড অকার্যকর: " + String.join(", ", messages));
        }
    }
}

এই উদাহরণে, আমরা কাস্টম এরর মেসেজ নির্ধারণ করেছি যাতে ব্যবহারকারীরা বুঝতে পারেন কেন তাদের পাসওয়ার্ড অকার্যকর হয়েছে। এটি একটি ব্যবহারকারীর অভিজ্ঞতা উন্নত করে এবং তাদের পাসওয়ার্ড সংশোধনে সহায়ক হয়।


সারাংশ

প্যাসে (Passay) লাইব্রেরি ব্যবহারকারীদের জন্য একাধিক শক্তিশালী নিয়ম প্রয়োগ এবং কাস্টম এরর মেসেজ সেট করার সুযোগ প্রদান করে। এই ফিচারগুলো ব্যবহার করে আপনি পাসওয়ার্ড যাচাই প্রক্রিয়াকে আরও কার্যকর, সুনির্দিষ্ট এবং ব্যবহারকারীর জন্য সহায়ক করতে পারেন। এটি অ্যাপ্লিকেশন এবং সিস্টেমের নিরাপত্তা বাড়ানোর জন্য অত্যন্ত কার্যকরী একটি টুল।


Content added By

প্যাসে (Passay) লাইব্রেরি ব্যবহার করে পাসওয়ার্ড যাচাইয়ের জন্য একাধিক ভ্যালিডেশন রুল (validation rules) যোগ করা খুব সহজ। এটি বিভিন্ন শর্তে পাসওয়ার্ডের শক্তিশালীকরণ এবং নিরাপত্তা নিশ্চিত করতে সাহায্য করে। এই রুলগুলি পাসওয়ার্ডের দৈর্ঘ্য, অক্ষরের ধরন, সংখ্যা, বিশেষ চিহ্ন ইত্যাদি নিয়ন্ত্রণ করে।


Multiple Validation Rules যোগ করা

প্যাসে (Passay) লাইব্রেরিতে একাধিক ভ্যালিডেশন রুল যুক্ত করতে, আপনি একটি PasswordValidator অবজেক্ট তৈরি করতে পারেন এবং সেই অবজেক্টে বিভিন্ন রুল নির্ধারণ করতে পারেন। নিচে একটি উদাহরণ দেওয়া হলো যেখানে একাধিক ভ্যালিডেশন রুল যোগ করা হয়েছে:

উদাহরণ: Multiple Validation Rules

import org.passay.*;
import java.util.Arrays;

public class PasswordValidatorExample {
    public static void main(String[] args) {
        // PasswordValidator অবজেক্ট তৈরি করা
        PasswordValidator validator = new PasswordValidator(
            Arrays.asList(
                new LengthRule(8, 20), // পাসওয়ার্ডের দৈর্ঘ্য 8 থেকে 20 অক্ষরের মধ্যে হতে হবে
                new CharacterRule(EnglishCharacterData.UpperCase, 1), // কমপক্ষে একটি বড় হাতের অক্ষর থাকতে হবে
                new CharacterRule(EnglishCharacterData.LowerCase, 1), // কমপক্ষে একটি ছোট হাতের অক্ষর থাকতে হবে
                new DigitRule(1), // কমপক্ষে একটি সংখ্যা থাকতে হবে
                new SpecialCharacterRule(1), // কমপক্ষে একটি বিশেষ চিহ্ন থাকতে হবে
                new WhitespaceRule() // পাসওয়ার্ডে কোনও সাদা স্থান (space) থাকতে পারবে না
            )
        );

        // পাসওয়ার্ড যাচাই করা
        RuleResult result = validator.validate(new PasswordData("Passw0rd!"));

        if (result.isValid()) {
            System.out.println("পাসওয়ার্ড বৈধ।");
        } else {
            // যদি পাসওয়ার্ড অকার্যকর হয়, তাহলে এর ত্রুটিগুলি দেখান
            System.out.println("পাসওয়ার্ড অকার্যকর: " + String.join(", ", validator.getMessages(result)));
        }
    }
}

এই উদাহরণে, আমরা বিভিন্ন রুল ব্যবহার করেছি:

  • LengthRule: পাসওয়ার্ডের দৈর্ঘ্য কমপক্ষে 8 এবং সর্বোচ্চ 20 অক্ষর হতে হবে।
  • CharacterRule: কমপক্ষে একটি বড় হাতের অক্ষর এবং একটি ছোট হাতের অক্ষর থাকতে হবে।
  • DigitRule: কমপক্ষে একটি সংখ্যা থাকতে হবে।
  • SpecialCharacterRule: কমপক্ষে একটি বিশেষ চিহ্ন থাকতে হবে।
  • WhitespaceRule: পাসওয়ার্ডে সাদা স্থান থাকতে পারবে না।

কিভাবে কাজ করে

প্যাসে (Passay) লাইব্রেরি প্রতিটি রুল আলাদাভাবে কার্যকর করে। যখন PasswordValidator অবজেক্টটি একটি পাসওয়ার্ড যাচাই করার জন্য ব্যবহার করা হয়, তখন এটি প্রতিটি নির্ধারিত রুলের শর্ত অনুযায়ী পাসওয়ার্ডটি যাচাই করে।

যদি পাসওয়ার্ডের কোনো শর্ত পূর্ণ না হয়, তবে RuleResult অবজেক্টটি সংশ্লিষ্ট ত্রুটি বার্তা ফিরিয়ে দেয়। পাসওয়ার্ড বৈধ হলে, এটি true রিটার্ন করে এবং অবৈধ হলে সংশ্লিষ্ট ত্রুটির বার্তা প্রদান করে।


সারাংশ

প্যাসে (Passay) লাইব্রেরি ব্যবহার করে একাধিক ভ্যালিডেশন রুল যোগ করা সম্ভব, যা পাসওয়ার্ড যাচাইকরণে শক্তিশালী নিরাপত্তা নীতি প্রয়োগ করে। একাধিক রুলের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশন বা সিস্টেমে নিরাপদ পাসওয়ার্ড নিশ্চিত করতে পারেন।


Content added By

প্যাসে (Passay) লাইব্রেরি ব্যবহার করার সময়, আপনি পাসওয়ার্ড যাচাইয়ের জন্য কাস্টম এরর মেসেজ কনফিগার করতে পারেন। এটি ব্যবহারকারীদের জন্য আরও স্পষ্ট এবং সহায়ক মেসেজ প্রদান করে, বিশেষ করে যখন পাসওয়ার্ড কিছু নির্দিষ্ট শর্ত পূর্ণ করে না। কাস্টম এরর মেসেজগুলি ব্যবহারকারীদের পাসওয়ার্ড সুরক্ষা বৃদ্ধি করার জন্য প্রয়োজনীয় নির্দেশনা প্রদান করতে সহায়ক।


কাস্টম এরর মেসেজ কনফিগার করার পদ্ধতি

প্যাসে (Passay) এর মাধ্যমে পাসওয়ার্ড যাচাই করার সময়, প্রতিটি নিয়মের জন্য কাস্টম এরর মেসেজ নির্ধারণ করা সম্ভব। এর জন্য, প্যাসে লাইব্রেরির PasswordValidator এবং RuleResult ক্লাসের সাহায্যে কাস্টম মেসেজ তৈরি করা যায়।

কাস্টম এরর মেসেজের জন্য পদ্ধতি

প্যাসে (Passay) কাস্টম এরর মেসেজ কনফিগার করতে, আপনাকে PasswordValidator এর সাথে MessageResolver ব্যবহার করতে হবে। নিচে একটি উদাহরণ দেখানো হল যেখানে বিভিন্ন পাসওয়ার্ড রুলের জন্য কাস্টম মেসেজ সংজ্ঞায়িত করা হয়েছে।

কোড উদাহরণ

import org.passay.*;

import java.util.Arrays;
import java.util.List;

public class CustomErrorMessageExample {
    public static void main(String[] args) {
        // কাস্টম মেসেজ রেজোলভার তৈরি
        MessageResolver resolver = new DefaultMessageResolver();

        // পাসওয়ার্ড পলিসি কনফিগারেশন
        PasswordValidator validator = new PasswordValidator(
            resolver,  // কাস্টম মেসেজ রেজোলভার
            Arrays.asList(
                new LengthRule(8, 20), // পাসওয়ার্ডের দৈর্ঘ্য ৮ থেকে ২০ অক্ষরের মধ্যে হবে
                new CharacterRule(EnglishCharacterData.UpperCase, 1), // কমপক্ষে ১টি বড় হাতের অক্ষর থাকতে হবে
                new CharacterRule(EnglishCharacterData.LowerCase, 1), // কমপক্ষে ১টি ছোট হাতের অক্ষর থাকতে হবে
                new DigitRule(1), // কমপক্ষে ১টি সংখ্যা থাকতে হবে
                new SpecialCharacterRule(1) // কমপক্ষে ১টি বিশেষ চিহ্ন থাকতে হবে
            )
        );

        // পাসওয়ার্ড যাচাই
        RuleResult result = validator.validate(new PasswordData("pass"));

        if (result.isValid()) {
            System.out.println("পাসওয়ার্ড বৈধ।");
        } else {
            List<String> messages = validator.getMessages(result);
            System.out.println("পাসওয়ার্ড অকার্যকর: " + String.join(", ", messages));
        }
    }
}

কাস্টম এরর মেসেজ রেজোলভার কনফিগারেশন

আপনি MessageResolver ইন্টারফেস ব্যবহার করে কাস্টম এরর মেসেজ তৈরি করতে পারেন। উদাহরণস্বরূপ, আপনি প্রতিটি রুলের জন্য নির্দিষ্ট মেসেজ প্রদান করতে পারেন:

public class CustomMessageResolver implements MessageResolver {
    @Override
    public String resolveMessage(String key, Object... args) {
        switch (key) {
            case "LengthRule":
                return "পাসওয়ার্ডটি অবশ্যই ৮ থেকে ২০ অক্ষরের মধ্যে হতে হবে।";
            case "UpperCaseCharacterRule":
                return "পাসওয়ার্ডে কমপক্ষে একটি বড় হাতের অক্ষর থাকতে হবে।";
            case "LowerCaseCharacterRule":
                return "পাসওয়ার্ডে কমপক্ষে একটি ছোট হাতের অক্ষর থাকতে হবে।";
            case "DigitRule":
                return "পাসওয়ার্ডে কমপক্ষে একটি সংখ্যা থাকতে হবে।";
            case "SpecialCharacterRule":
                return "পাসওয়ার্ডে কমপক্ষে একটি বিশেষ চিহ্ন থাকতে হবে।";
            default:
                return "অজানা ত্রুটি!";
        }
    }
}

এখানে, আমরা resolveMessage মেথডে কাস্টম মেসেজ প্রদান করেছি, যা রুলের নাম অনুসারে বিভিন্ন ত্রুটি মেসেজ প্রদান করবে।


প্যাসে (Passay) কাস্টম এরর মেসেজের সুবিধা

কাস্টম এরর মেসেজ ব্যবহারকারীদের জন্য বেশ কয়েকটি সুবিধা প্রদান করে:

  • ব্যবহারকারী বান্ধব মেসেজ: স্পষ্ট এবং সহায়ক মেসেজ ব্যবহারকারীদের পাসওয়ার্ডের ত্রুটির কারণ বুঝতে সহায়ক হয়।
  • অন্যান্য ভাষায় মেসেজ কাস্টমাইজেশন: আপনি মেসেজগুলিকে বিভিন্ন ভাষায় কাস্টমাইজ করতে পারেন, যেমন বাংলা, ইংরেজি, ইত্যাদি।
  • নির্দিষ্ট রুলের জন্য কাস্টম বার্তা: পাসওয়ার্ডের বিভিন্ন শর্ত অনুযায়ী, আপনি সুনির্দিষ্ট ত্রুটি বার্তা প্রদান করতে পারবেন।

সারাংশ

প্যাসে (Passay) লাইব্রেরির সাহায্যে আপনি কাস্টম এরর মেসেজ কনফিগার করে পাসওয়ার্ড যাচাই প্রক্রিয়া আরও ব্যবহারকারী বান্ধব করতে পারেন। এটি ব্যবহারকারীদের জন্য ত্রুটি শনাক্তকরণ সহজ করে তোলে এবং পাসওয়ার্ড সুরক্ষা নীতি অনুসরণ করার জন্য প্রয়োজনীয় নির্দেশনা প্রদান করে।


Content added By

Passay লাইব্রেরিতে MessageResolver ইন্টারফেস ব্যবহার করে ডিফল্ট ত্রুটি বার্তাগুলি কাস্টমাইজ বা বিভিন্ন ভাষায় প্রদর্শন করা যায়। এটি বিশেষত দরকার হয় যখন আপনি একটি মাল্টি-ল্যাঙ্গুয়াল অ্যাপ্লিকেশন তৈরি করছেন এবং ব্যবহারকারীদের তাদের স্থানীয় ভাষায় বার্তা প্রদান করতে চান।

MessageResolver কী?

MessageResolver ইন্টারফেসটি পাসওয়ার্ড যাচাই ত্রুটির বার্তা সমাধান (resolve) করার একটি উপায় প্রদান করে। Passay এর ডিফল্ট MessageResolver হলো DefaultMessageResolver, যা ডিফল্ট বার্তা ফাইল থেকে বার্তা লোড করে। তবে আপনি একটি কাস্টম MessageResolver ব্যবহার করে নিজের ভাষার বার্তা সরবরাহ করতে পারেন।


উদাহরণ: কাস্টম MessageResolver ব্যবহার করা

নিচে দেখানো হয়েছে কীভাবে কাস্টম বার্তা সংজ্ঞায়িত করে ব্যবহার করা যায়:

1. Custom MessageResolver তৈরি করুন

import org.passay.MessageResolver;
import java.util.HashMap;
import java.util.Map;

public class CustomMessageResolver implements MessageResolver {
    private final Map<String, String> messages;

    public CustomMessageResolver() {
        messages = new HashMap<>();
        // এখানে বার্তা সংজ্ঞায়িত করুন
        messages.put("TOO_SHORT", "পাসওয়ার্ড খুব ছোট। কমপক্ষে {0} অক্ষর প্রয়োজন।");
        messages.put("TOO_LONG", "পাসওয়ার্ড খুব বড়। সর্বাধিক {0} অক্ষর অনুমোদিত।");
        messages.put("INSUFFICIENT_UPPERCASE", "পাসওয়ার্ডে অন্তত {0} টি বড় হাতের অক্ষর থাকা প্রয়োজন।");
        messages.put("INSUFFICIENT_DIGIT", "পাসওয়ার্ডে অন্তত {0} টি সংখ্যা থাকা প্রয়োজন।");
    }

    @Override
    public String getMessage(String key) {
        return messages.getOrDefault(key, "ত্রুটি: বার্তা পাওয়া যায়নি।");
    }

    @Override
    public String getMessage(String key, String... params) {
        String message = getMessage(key);
        for (int i = 0; i < params.length; i++) {
            message = message.replace("{" + i + "}", params[i]);
        }
        return message;
    }
}

2. PasswordValidator এ MessageResolver যোগ করুন

import org.passay.*;

import java.util.Arrays;

public class CustomMessageResolverExample {
    public static void main(String[] args) {
        // CustomMessageResolver ব্যবহার
        MessageResolver resolver = new CustomMessageResolver();

        PasswordValidator validator = new PasswordValidator(resolver, Arrays.asList(
            new LengthRule(8, 16),       // দৈর্ঘ্য 8-16
            new UppercaseCharacterRule(1), // অন্তত ১টি বড় হাতের অক্ষর
            new DigitCharacterRule(1)    // অন্তত ১টি সংখ্যা
        ));

        String password = "abc";

        RuleResult result = validator.validate(new PasswordData(password));

        if (result.isValid()) {
            System.out.println("পাসওয়ার্ড বৈধ!");
        } else {
            System.out.println("পাসওয়ার্ড অবৈধ। কারণ:");
            validator.getMessages(result).forEach(System.out::println);
        }
    }
}

3. MessageResolver-এর মাধ্যমে মাল্টি-ল্যাঙ্গুয়াল সাপোর্ট

আপনি ভিন্ন ভাষার বার্তাগুলি ResourceBundleMessageResolver বা CustomMessageResolver ব্যবহার করে সংজ্ঞায়িত করতে পারেন। উদাহরণ:

ResourceBundleMessageResolver উদাহরণ:

import org.passay.ResourceBundleMessageResolver;

import java.util.Locale;

public class MultiLanguageSupport {
    public static void main(String[] args) {
        // বাংলা ভাষার জন্য ResourceBundle
        ResourceBundleMessageResolver resolver = new ResourceBundleMessageResolver(
            ResourceBundle.getBundle("messages", new Locale("bn"))
        );

        // আপনার PasswordValidator এ resolver যুক্ত করুন।
    }
}

বার্তা ফাইল (messages_bn.properties):

TOO_SHORT=পাসওয়ার্ড খুব ছোট। কমপক্ষে {0} অক্ষর প্রয়োজন।
TOO_LONG=পাসওয়ার্ড খুব বড়। সর্বাধিক {0} অক্ষর অনুমোদিত।
INSUFFICIENT_UPPERCASE=পাসওয়ার্ডে অন্তত {0} টি বড় হাতের অক্ষর থাকা প্রয়োজন।
INSUFFICIENT_DIGIT=পাসওয়ার্ডে অন্তত {0} টি সংখ্যা থাকা প্রয়োজন।

উপসংহার

Passay-এর MessageResolver ইন্টারফেস ব্যবহার করে আপনি কাস্টম বার্তা তৈরি করতে এবং মাল্টি-ল্যাঙ্গুয়াল সাপোর্ট যোগ করতে পারেন। এটি আপনার অ্যাপ্লিকেশনের ব্যবহারযোগ্যতা বাড়ায় এবং ব্যবহারকারীদের তাদের স্থানীয় ভাষায় আরও ভালো অভিজ্ঞতা প্রদান করে।

Content added By

প্যাসে (Passay) Java লাইব্রেরি ব্যবহার করে কাস্টম ত্রুটির বার্তা (custom error messages) এবং একাধিক নিয়ম (multiple rules) প্রয়োগ করা সম্ভব। এটি আপনাকে ব্যবহারকারীর জন্য আরও তথ্যপূর্ণ এবং উপযুক্ত ত্রুটি বার্তা প্রদানে সহায়তা করে। নিচে এর উদাহরণসহ ব্যাখ্যা দেওয়া হলো।


Custom Error Messages এবং Multiple Rules উদাহরণ

import org.passay.*;

import java.util.Arrays;
import java.util.List;
import java.util.Locale;

public class CustomErrorMessagesExample {
    public static void main(String[] args) {
        // কাস্টম মেসেজ কনফিগারেশন
        MessageResolver customMessageResolver = new MessageResolver() {
            @Override
            public String resolve(String key) {
                switch (key) {
                    case "TOO_SHORT":
                        return "পাসওয়ার্ড খুব ছোট! এটি অন্তত 8 অক্ষর হতে হবে।";
                    case "TOO_LONG":
                        return "পাসওয়ার্ড খুব বড়! এটি সর্বাধিক 16 অক্ষর হতে পারবে।";
                    case "INSUFFICIENT_UPPERCASE":
                        return "পাসওয়ার্ডে অন্তত একটি বড় হাতের অক্ষর থাকতে হবে।";
                    case "INSUFFICIENT_DIGIT":
                        return "পাসওয়ার্ডে অন্তত একটি সংখ্যা থাকতে হবে।";
                    case "INSUFFICIENT_SPECIAL":
                        return "পাসওয়ার্ডে অন্তত একটি বিশেষ অক্ষর থাকতে হবে (যেমন: @, #, $)।";
                    default:
                        return "ত্রুটি: " + key;
                }
            }

            @Override
            public String resolve(String key, Object... args) {
                return resolve(key);
            }
        };

        // PasswordValidator এর নিয়ম সমূহ
        PasswordValidator validator = new PasswordValidator(
            customMessageResolver, // কাস্টম মেসেজ রেসলভার
            Arrays.asList(
                new LengthRule(8, 16),               // দৈর্ঘ্য 8 থেকে 16 অক্ষর
                new UppercaseCharacterRule(1),       // অন্তত 1 বড় হাতের অক্ষর
                new DigitCharacterRule(1),          // অন্তত 1 সংখ্যা
                new SpecialCharacterRule(1),        // অন্তত 1 বিশেষ অক্ষর
                new WhitespaceRule()                // ফাঁকা জায়গা নিষিদ্ধ
            )
        );

        // পাসওয়ার্ড যাচাই
        String password = "Weak@123";
        RuleResult result = validator.validate(new PasswordData(password));

        if (result.isValid()) {
            System.out.println("পাসওয়ার্ড বৈধ!");
        } else {
            System.out.println("পাসওয়ার্ড অবৈধ। কারণ:");
            List<String> messages = validator.getMessages(result);
            messages.forEach(System.out::println); // কাস্টম মেসেজ প্রিন্ট
        }
    }
}

ব্যাখ্যা:

  1. Custom Message Resolver:
    MessageResolver ইন্টারফেস ইমপ্লিমেন্ট করে নির্দিষ্ট নিয়মের জন্য কাস্টম ত্রুটি বার্তা প্রদান করা হয়েছে। উদাহরণস্বরূপ, "TOO_SHORT" এর জন্য বার্তা:
    • "পাসওয়ার্ড খুব ছোট! এটি অন্তত 8 অক্ষর হতে হবে।"
  2. Multiple Rules:
    • LengthRule(8, 16) -> দৈর্ঘ্য 8 থেকে 16 অক্ষর।
    • UppercaseCharacterRule(1) -> অন্তত 1 বড় হাতের অক্ষর।
    • DigitCharacterRule(1) -> অন্তত 1 সংখ্যা।
    • SpecialCharacterRule(1) -> অন্তত 1 বিশেষ অক্ষর।
    • WhitespaceRule() -> ফাঁকা জায়গা নিষিদ্ধ।
  3. Password Validation:
    validator.validate(new PasswordData(password)) দিয়ে পাসওয়ার্ড যাচাই করা হয়েছে। যদি পাসওয়ার্ড অবৈধ হয়, তবে কাস্টম বার্তা validator.getMessages(result) ব্যবহার করে প্রিন্ট করা হয়েছে।

আউটপুট:

যদি পাসওয়ার্ড হয় Weak@123, আউটপুট হবে:

পাসওয়ার্ড অবৈধ। কারণ:
পাসওয়ার্ডে অন্তত একটি বড় হাতের অক্ষর থাকতে হবে।

Maven Dependency:

<dependency>
    <groupId>org.passay</groupId>
    <artifactId>passay</artifactId>
    <version>1.6.0</version>
</dependency>

এভাবে Passay লাইব্রেরি ব্যবহার করে পাসওয়ার্ড যাচাই আরও কাস্টমাইজ এবং ইউজার-ফ্রেন্ডলি করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...