← Back to list

How I Accidentally Gave My App Superpowers (And How Cerbos Saved the Day)

I once let my little cousin play with my app… and in less than five minutes, he deleted all user accounts. Yep. All of them.

aijaz ali · 2026-01-01 11:32 · 0 claps · 2.4 min read
#software-development #authorization #backend-development #developer-experience #programming-humor
Open on Medium ↗
Wiki topics: LIT · Literature & Writing 💻 · Programming 🌐 · Web Development 😂 · Humor & Satire

How I Accidentally Gave My App Superpowers (And How Cerbos Saved the Day)

I once let my little cousin play with my app… and in less than five minutes, he deleted all user accounts. Yep. All of them.

That’s when I realized: managing who can do what in an app is harder than it sounds. Enter Cerbos, my app’s new superhero. Let me tell you how this tiny tool saved my sanity — and your app could be next.

The Problem: Why Permissions Are Tricky

Imagine your app is like a candy store:

  • Some customers can take candy.
  • Some can only look.
  • Some are allowed chocolate, but not lollipops.

Without rules, chaos reigns. That’s your app without proper authorization.

In my case:

  • My cousin (unauthorized user) → deleted accounts
  • Me → 😱 panicking
  • My app → broken

The Discovery: Meet Cerbos

Cerbos is like a bouncer for your app:

“Only let people take what they’re allowed. No exceptions.”

It’s an authorization engine — which is a fancy way of saying it controls who can do what in your app.

Why I loved it:

  1. Works for any app (Node.js, React, etc.)
  2. Centralized rules → easier to manage
  3. Policies are human-readable
  4. Saves your app from “superpower users” (like my cousin 😅)

The Journey: How I Implemented It

Here’s a simple example. Imagine you want to stop anyone from deleting users:

# cerbos.yaml
permissions:
  - action: delete
    resource: user
    allow: false

And in Node.js, you might check like this:

import Cerbos from "@cerbos/sdk";

const cerbos = new Cerbos({ host: "http://localhost:3592" });

const result = await cerbos.check({
  principal: { id: "cousin123", roles: ["user"] },
  resource: { kind: "user", id: "user567" },
  action: "delete"
});

if (result.allowed) {
  console.log("Go ahead, delete!");
} else {
  console.log("Nope! You’re not allowed 😎");
}

Boom! My cousin? Blocked. Me? Peace of mind restored.

Lessons Learned (And Fun Analogies)

  1. Always check permissions — Without Cerbos, your app is like a toddler with keys to a Ferrari.
  2. Centralize rules — Hardcoding everywhere? Nightmare. Cerbos makes one rule book.
  3. Test edge cases — My cousin doesn’t follow rules. Your users might be tricky too.
  4. Use humor in tech — Trust me, if you can laugh at bugs, debugging becomes less painful.

Next Steps / Call to Action

If you’ve ever:

  • Accidentally given a user superpowers
  • Wondered how big apps manage permissions
  • Laughed at your own coding fails

…then maybe it’s time to give Cerbos a try.

Try it out: https://cerbos.dev And tell me your funniest permission fail in the comments — I dare you 😏


메타데이터
post_id
c7cf1bb18c00
slug
how-i-accidentally-gave-my-app-superpowers-and-how-cerbos-saved-the-day-c7cf1bb18c00
url
https://medium.com/@aijazalishah333/how-i-accidentally-gave-my-app-superpowers-and-how-cerbos-saved-the-day-c7cf1bb18c00
canonical_url
https://medium.com/@aijazalishah333/how-i-accidentally-gave-my-app-superpowers-and-how-cerbos-saved-the-day-c7cf1bb18c00
author_url
https://medium.com/@aijazalishah333
status
ok
fetched_at
2026-08-08 06:49:42