Package Exports
- strapi-plugin-do-not-delete/package.json
- strapi-plugin-do-not-delete/strapi-server
Readme

Strapi "Do Not Delete"
A plugin for Strapi CMS that protects certain entries from being deleted.

Get Started
β¨ Features
- Protect certain entries from being deleted.
- Use various comparators to match against protection rules.
π Installation
yarn add strapi-plugin-do-not-delete@latest
Don't forget to restart or rebuild your Strapi app when installing a new plugin.
π§ Configuration
Configuration can be added to the pluginOptions
of a schema. This will need to apply to each individual content type that utilizes this plugin.
// ./api/page/content-types/page/schema.json
{
"kind": "collectionType",
"collectionName": "pages",
"info": {
"singularName": "page",
"pluralName": "pages",
"displayName": "Page",
"description": "Generic web page"
},
"options": {
"draftAndPublish": true
},
"pluginOptions": {
"do-not-delete": {
// Config goes here.
}
},
"attributes": {
"title": {
"type": "string",
"required": true
},
"slug": {
"type": "uid",
"targetField": "title",
"required": true
}
}
}
property | type | description |
---|---|---|
rules | array | An array of protection rules. |
rules
An array of protection rules.
Example
Below, the comparison rule is querying if the slug
value for Page
is equal to home
, and if this condition is true, the delete operation is cancelled.
// ./api/page/content-types/page/schema.json
"pluginOptions": {
"do-not-delete": {
"rules": [
["slug", "is", "home"]
]
}
}
Comparators
The items in each comparison array must follow the format:
['attribute', 'comparator', 'value or pattern']
Comparator | Description |
---|---|
is |
Strict equality with === |
isNot |
Strict inequality with !== |
in |
Does the value array include attribute ? |
notIn |
Does the value array not include attribute ? |
has |
Does the attribute contain value ? |
hasNot |
Does the attribute not contain value ? |
lt |
Is attribute less than value ? |
lte |
Is attribute less than or equal to value ? |
gt |
Is attribute greater than value ? |
gte |
Is attribute greater than or equal to value ? |
between |
Does attribute fall between the pair of values ? |
after |
Does attribute occur after the value date? |
before |
Does attribute occur before the value date? |
day |
Does attribute occur on the same day of the value date? |
month |
Does attribute occur in the same month of the value date? |
year |
Does attribute occur in the same year of the value date? |
matches |
RegExp test against pattern (do not include outer slashes) |
// ./api/page/content-types/page/schema.json
"pluginOptions": {
"do-not-delete": {
"rules": [
// Equality.
["slug", "is", "home"],
["slug", "isNot", "test"],
// Contains.
["slug", "in", ["home", "blog", "404"]],
["slug", "notIn", ["test", "temp"]],
["slug", "has", "admin"],
["slug", "hasNot", "-test"],
// Regular expression.
["slug", "matches", "^foobar"], // same as "starts with"
["slug", "matches", "foobar$"], // same as "ends with"
// Greater than or equal to.
["rating", "lt", 10],
["rating", "lte", 9],
["rating", "gt", 4],
["rating", "gte", 5],
["rating", "between", [3, 6]],
// Dates (any valid date string format can be used).
["publishedAt", "after", "2022-12-31"],
["publishedAt", "before", "2020-01-01T00:00:00.000Z"],
["publishedAt", "day", "Wed, 01 Jan 2020 00:00:00 GMT"],
["publishedAt", "month", "January 2020"],
["publishedAt", "year", "2023"],
]
}
}
π User Guide
Attempting to delete a protected entry
When attempting to delete a protected entry, a validation error will display at the top of the screen that reads:
This entry is protected and cannot be deleted.
Deleting an entry that is currently protected
If you find yourself in a scenario where a protected entry actually does need to be deleted, you must first update the pluginOptions
and restart Strapi to remove the protection rule that applies to that entry.
π© Troubleshooting
In general
Remember to rebuild your app after making changes to some config or other code.
yarn build
# OR
yarn develop
π Migration
Follow the migration guides to keep your "do not delete" plugin up-to-date.
β€οΈ Support or Donate
If you are enjoying this plugin and feel extra appreciative, you can buy me a beer or 3 πΊπΊπΊ.
π§ Roadmap
- Custom validation error messages.
- RBAC features.