Who this is for. Whoever sets up registration, imports accounts or takes over an existing site. Afterwards you can tell a member from a backend user at a glance, and prove that no member can reach the admin.
The five user types
Every user has a type, shown in the admin under Users › Users and stored as the code in brackets:
| Type | Signs in to | Record permissions on the site | Unpublished records on the site |
|---|---|---|---|
Frontend user (frontend) | The website only | Apply | Never |
Backend user (backend) | The admin, limited to the permissions it is given, and the website | Apply | Shown by default |
Administrator (admin) | The admin, with full rights, and the website | Skipped | Shown by default |
Super admin (superadmin) | |||
Developer (developer) |
A member is a frontend user. Every other type is a backend user, including the plain backend type, which is for staff with limited rights. Backend users see unpublished records on the site while the setting Show unpublished is on, which it is by default (Two gates).
A user also has a status: Active, Inactive or Disabled. Only an active user can sign in with a password; what an inactive member sees is covered with registration (The states a member can be in).
The rule: a member never reaches the admin
A frontend user must never be given access to the admin or to the content API, and the platform enforces both:
- The admin, at
/cdna-admin, checks every request. A frontend user is redirected to the admin's sign-in page with "You are not authorized to access this page". A backend user signed in on the website is also sent to that page: the admin accepts only a session started on its own sign-in page. - The API, at
/cdna-api, refuses a frontend user on every route that does not say otherwise. The refusal looks like a missing route: a 404,{"result": "error", "message": "Page or record not found"}, or a 403 where the security setting Access Denied (Authenticated) is set to show it. The routes that admit members are the few built for visitors and members, such asGET /cdna-api/users/accountfor the member's own profile (A site member and a backend user).
What matters most is the type itself: a member given a backend type is no longer a member. Two places set it. The registration settings choose the type of everyone who registers, and offer Backend beside Frontend; keep it set to Frontend, so a visitor who registers never receives an admin login. And an import or integration that creates users sets the type it is told to.