UNPKG

strapi-security-suite

Version:

All-in-one authentication and session security plugin for Strapi v5

167 lines (112 loc) 3.9 kB
# 🛡️ Strapi Security Suite (Beta) ## **The Last Plugin You’ll Ever Need to Sleep at Night** A high-performance, in-memory security enhancement plugin for **Strapi v5**, Session-obsessed. Built for the **chaotic genius admin** who refuses to get breached by a stale token.\ Powered by **rage, memory maps, and accountability.** --- ## ✨ Why This Exists Because “just trusting sessions” is how *breaches happen*.\ Because the admin panel deserves better.\ Because your team deserves **a real security layer**, not a checkbox. --- ## ⚔️ Features That Slap ### 🔒 Auto Logout (with taste) Kick idle admins like it’s office closing time. - 🔍 Tracks every request - ⏲️ Custom inactivity timeout from DB - 🧠 Memory-first with `sessionActivityMap` - 💨 Triggers soft or *nuclear* logout depending on your vibe - 💾 Graceful 440s, JS responses, and gentle redirects ### 🚷 Multi-Session Lock One admin = one session. No shadow clones allowed. - 💥 First login wins, others are denied - 🧹 Cleans old sessions like a digital janitor ### 🧄 Session Exorcism Layer™ Revoked tokens get ghosted *instantly*.\ Even if Strapi tries to pretend they’re still cute. - 🔪 Middleware blocks - 🪦 Session cookie wipeout - 📩 Headers set for frontend rejections - 🗑️ `isLoggedIn` purged with prejudice ### 🧠 Smart Middleware Stack - `trackActivity`: Updates timestamps on every move - `rejectRevokedTokens`: Blocks dead sessions like a haunted firewall - `interceptRenewToken`: Stops Strapi’s clingy `/renew-token` requests from reviving zombies --- ## 🧪 Configuration Schema ```json { "autoLogoutTime": 30, "multipleSessionsControl": true, "passwordExpiryDays": 30, "nonReusablePassword": true, "enablePasswordManagement": true } ``` Defined in the content-type:\ `plugin::strapi-security-suite.security_settings` --- ## 🧠 Architecture You’ll Brag About - 🧬 In-memory tracking via `Map()` - ⏱️ `startAutoLogoutWatcher()` with 5s intervals - 🔄 Frontend fetch interceptor for 440s - 🧹 JS logout payload injected server-side to destroy sessions, cookies, and self-respect --- ## ⚙️ Admin Panel UI - 🎛️ Control timeouts, session logic, and password rules - 📜 Planned audit logs, charts, and drama - 🌌 Future dashboard: all your infra sins visualized --- ## 🔐 Frontend Catch Logic - Fetch wrapper intercepts `440` - Purges local/session storage - Sends you crying to `/session-expired` - Optionally calls `/admin/logout` for drama --- ## 📦 Installation ```bash yarn add strapi-security-suite ``` or ```bash npm install strapi-security-suite ``` ### 🔹 `config/plugins.js` Add the following entry inside your `config/plugins.js` file: ```javascript module.exports = ({ env }) => ({ 'strapi-security-suite': { enabled: true, }, }); ``` --- ## 🔮 Upcoming | Feature | Status | | ------------------------------- | -------------- | | Password Expiry | 🛠️ In Dev | | Non-Reusable Passwords | 🛠️ In Dev | | Admin Activity Logs | 🔜 | | Security Dashboard | 🔜 | | Brute Force Detection | 🔜 | | Real-time Session Visualization | 🔜 (and spicy) | --- ## 💥 Real-World Impact > “We installed this and now our interns can’t share logins anymore.”\ > CTO, probably > “Our admin panel feels like it judges us now. I love it.”\ > That one developer who cares --- ## 🧑‍💻 Author [LPIX-11](mohamed.johnson@orange-sonatel.com) --- ## 💡 Philosophy Security should be: - Fast - Unforgiving - Elegant - **Mildly judgmental** --- ## ⚠️ Legal Drama > This plugin is in **Beta**.\ > You break it, it breaks you back, but we’ll still love you.\ > Not liable for insecure vibes.