
T3ppy Gives TYPO3 a Friendly Face
TYPO3 is powerful—but it doesn’t have to feel impersonal. Meet T3ppy, our friendly companion for the backend.
Read more: T3ppy Gives TYPO3 a Friendly Face
Never hear this question from your content editors again, “Why can she do that, but I can’t?” Solid planning early in your project can save you chaos and extra work later.
There is a very close connection between the long-term success of your TYPO3-projects and the happiness of the editors working in the installations day in and day out. Well-thought-out backend usergroups and a clear, well-structured backend experience are fundamental to your clients‘ job satisfaction (and appreciation of your work!).
Sensible backend usergroup-logic is essential for keeping your TYPO3 system usable, comprehensible, extensible, and maintainable in the long term. Nobody wants to have to go in and clean up a messy backend and backend user configuration in a running project. Build it right the first time!
In this blog post, I’ll show you some principles on how to organize well-designed backend usergroups that will make your job easier and that your editors will love.
When designing your backend usergroup logic, start with the most general case, moving to more and more specific ones.
Later in the project, you might need a backend usergroup with precise, minimal access (e.g., backend users who only work with one TYPO3 module or specific content types).
You should lay the right foundation, upon which you can build limited-access and specialized backend usergroups (see usergroup “Basic Page Access” below).
If you have an installation with a large number of backend users, never change a single user’s backend configuration to limit or extend their access (e.g., an editor of one specific team who needs specific access). Instead, create a backend usergroup with the access rights required for your user’s team or job function. Any changes needed can be made once, covering all the relevant users, and you won’t have to remember each and every editor affected.
Let’s say you add another editor of the same team with the same access rights and then another and then another. You will need to remember every backend user with the same set of access rights every time something affecting their access needs changing. And let’s be honest: There are more critical things for our brains to remember.
Make your life easier. Create new backend usergroups instead.
Make your life (or someone else’s) easier when you need to come back months or years later to update your configuration. Write a description of precisely what a given usergroup is for (and what it’s not for!) in the notes field.
It will be a huge help for others, too, and might stop them from unintentionally “destroying” the system with unwise access configuration choices.

Your editors will want to be able to upload files to the site. Create the required filemounts and add them to your backend usergroup. Don’t just give this access to individual users. See point 2.
Keep the configuration of your backend usergroups as simple as possible. Remove all unused database fields by modifying the backend TCA configuration or using PageTSconfig when finishing the integration of a content type or plugin. That’s when you know best which fields are actually needed.
Doing it this way will spare you manually checking whether a given backend usergroup needs access to a particular field.
Side note: There are two strategies for configuring database fields: “explicitlyAllow“ and ”explicitlyDeny“.
If you want to build an extensible setup within a complex scenario, always use the “explicitlyAllow“ option. In this scenario, once a ”parent“ usergroup inherits an allowed field, it cannot be removed in ”child“ usergroups.
Don’t show or hide specific fields for different backend usergroups unless you have a use case for it. One valid use case would be if some editors explicitly should not be able to access or use specific fields within pages, content types, records, or plugins.
For example, there is a “Restrict editing to admin users” checkbox within content elements that regular editors should not be allowed to see or edit. If checked by a non-admin user, they won’t be able to edit that content element anymore. Don’t give them an option to lock themselves out :-)
To keep things clear and straightforward, in the default TCA, name your database fields in a way other stakeholders can understand—not just developers, but also project managers, for example.
Your editors might prefer to use the TYPO3 backend in their native language, rather than English.
Make sure to install the required languages within your installation so editors can choose their preferred language.
The access module lets you configure page-based access rules. There is a separate definition for “Everybody” and one for “Group.”
To configure the rights for “Everybody” correctly, you will need to figure out the lowest common denominator within all backend usergroups.
Example: All of the editors are supposed to see pages and edit content. Only some of them are allowed to edit page properties.
The lowest common denominator would be “Show Page” and “Edit content” (since not everybody is allowed to change page properties), which will, therefore, be the configuration for “Everybody.” Then use the “Group”-configuration to make sure the appropriate editors are allowed to change page properties, and so on.
Especially when it comes to very complex backend user designs, we recommend documenting the backend usergroup logic, so others can find and understand it.
Even a simple chart can get the job done. All stakeholders should have access to the logic at any time in an online document where they can make adjustments and comparisons as needed.

Using this house to illustrate the concept, each backend usergroup inherits the access rights of the usergroups it’s built on top of. The “higher” you get in this illustration, the more specific your backend usergroup will be.

This design is a suggestion based on our experience with typical installations and their access patterns. More complex business cases and TYPO3 installations can call for exceptions and different access-solution-logic.
TCEMAIN.permissions).

