Stack Overflow: Plone: Froze state changing for an object (conditioned)

How to do something similar with Dexterity content types in Plone 5.2? I want the state of a published object (of a specific content type) to stay published; only admin would have the right to retract the object.

You need to put a guard on your transition. You can use a permission, role, group, or expression.