Advanced Password Protection System using Google Sheets - Favorite Web

Favorite Multimedia
Views
0

Sheet Setup

প্রথমে Google Sheet এ নিচের মতো করে ৪টা কলাম ব্যাবহার করে একটি শিট তৈরী করুন। তারপর যেই পোস্ট/পেইজে পাসওয়ার্ড সেট করতে চান সেই পেইজের Url দিন, তারপর নিজের ইচ্ছামতো Password লিমিট Set করুন। Used এর ঘর ফাঁকা রাখুন কারণ যতবার Password টি ব্যাবহার করা হবে এইখানে সেইটা Auto Entry হবে।

Apps Script

তারপর Extension থেকে Apps Script এ গিয়ে নিচের কোড টি Past করুন। তারপর শিটের নিচের দিকের Sheet1, Sheet2 লেখা থাকে এইগুলো চেইঞ্জ করলে Apps Script এর Code এর ভিতরে শিটের নাম চেইঞ্জ করে দিন, দুইটার নাম ম্যাচ না করলে Password কাজ করবেনা সবসময় Wrong password দেখাবে। তারপর Code টি Save করে Deploy করুন। Deploy করার সময় অবশ্যই Execute As এ Me এবং Who has access এ Everyone দিতে হবে। তারপর Deploy হয়ে গেলে Web App Url টা Notepad এ Copy করে রাখুন
function doGet(e) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  const data = sheet.getDataRange().getValues();

  const pass = (e.parameter.pass || "").toString().trim();
  const url = (e.parameter.url || "").toString().trim();

  for (let i = 1; i < data.length; i++) {

    let sheetUrl = (data[i][0] || "").toString().trim();
    let password = (data[i][1] || "").toString().trim();
    let used = Number(data[i][2]) || 0;
    let limitRaw = (data[i][3] || "").toString().trim();

    //  9 7 URL + password match
    if (sheetUrl === url && password === pass) {

      // unlimited
      if (limitRaw === "") {
        sheet.getRange(i + 1, 3).setValue(used + 1);
        return ContentService.createTextOutput("OK");
      }

      let limit = Number(limitRaw);

      if (!isNaN(limit) && used < limit) {
        sheet.getRange(i + 1, 3).setValue(used + 1);
        return ContentService.createTextOutput("OK");
      } else {
        return ContentService.createTextOutput("LIMIT");
      }
    }
  }

  return ContentService.createTextOutput("WRONG");
}

Java Script

নিচের Code টি Copy করে Page/Post এর উপরে Past করুন, তারপর PAST YOUR WEB APP URL এর এখানে আপনার Copy করা Url টি Past করুন। তারপর BUY_LINK ভেরিয়েবল এর /shop.html এর এইখানে ৩ বার ভুল Password দিলে অথবা Buy করতে চাইলে যেইখানে নিয়ে যাবে সেই Url দিন তারপর Update বা Save করুন
<script>
const API = "PAST YOUR WEB APP URL";
const BUY_LINK = "/shop.html";

let attempts = 0;
const MAX_ATTEMPTS = 3;

function delay(ms){
  return new Promise(res => setTimeout(res, ms));
}

document.addEventListener("DOMContentLoaded", async function(){

  const post = document.querySelector(".post-body");

  // 🔒 first hide content
  if(post){
    post.style.display = "none";
  }

  const currentUrl = window.location.href;

  while(true){

    // ❌ too many attempts
    if(attempts >= MAX_ATTEMPTS){
      alert("Too many attempts! Redirecting to buy...");
      window.location.href = BUY_LINK;
      return;
    }

    let pass = prompt("Enter Password\n\nCancel = Buy");

    // 👉 cancel = buy
    if(pass === null){
      if(confirm("Go to Buy Page?")){
        window.location.href = BUY_LINK;
        return;
      } else {
        continue;
      }
    }

    // skip empty
    if(pass.trim() === "") continue;

    try{

      let res = await fetch(API + "?pass=" + encodeURIComponent(pass) + "&url=" + encodeURIComponent(currentUrl));
      let text = (await res.text()).trim();

      if(text === "OK"){

        // 🔓 unlock content
        if(post){
          post.style.display = "block";
        }

        break; // exit loop
      }

      else if(text === "LIMIT"){
        alert("Limit reached!");
        window.location.href = BUY_LINK;
        return;
      }

      else{
        attempts++;
        alert("Wrong password! (" + attempts + "/" + MAX_ATTEMPTS + ")");

        await delay(1000 * attempts);
      }

    }catch(e){
      alert("Network error!");
    }

  }

});
</script>

✅ সুবিধা

  • একবার সেটআপ করলে পরবর্তীতে সহজেই শীট থেকে লিমিট আপডেট বা used reset করতে পারবেন। Apps Script বা page/post এ কোনো আপডেট করার প্রয়োজন হবে না।
  • আলাদা হোস্টিং বা ডাটাবেজ ব্যবহারের কোনো প্রয়োজন নেই। শুধুমাত্র Gmail থাকলে’ই Google Sheet ব্যাবহার করে সহজে এটি তৈরী করা সম্ভব।
  • লিমিট সেট, Used Reset এর মতো Advanced ফিচার রয়েছে এবং Password চেইঞ্জ এর মতো কাজ পোস্ট স্কিপ্ট না Change করে Google শিট থেকেই করা যায়।

Post a Comment

0Comments
Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !