---
title: "Deprecation: #100349 - TypoScript loginUser() and usergroup() conditions"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:deprecation-100349-1680097287"
source: "Changelog/12.4/Deprecation-100349-TypoScriptLoginUserAndUsergroupConditions.rst"
typo3-version: "12.4"
typo3-major: 12
type: "deprecation"
issue: 100349
forge: "https://forge.typo3.org/issues/100349"
tags: ["TSConfig", "TypoScript", "NotScanned", "ext:core"]
rendered: "2026-09-25T23:17:45+00:00"
---

# Deprecation: #100349 - TypoScript loginUser() and usergroup() conditions {#deprecation-100349-1680097287}

See [forge#100349](https://forge.typo3.org/issues/100349)

## Description {#description}

The two TypoScript / TSconfig related condition functions
`[loginUser()]` and `[usergroup()]` have
been marked as deprecated with TYPO3 v12, should not be used anymore
and will be removed in TYPO3 v13. They can be substituted using
conditions based on the variables `frontend.user` and
`backend.user`.

## Impact {#impact}

Using the old conditions in frontend TypoScript or TSconfig triggers a
deprecation level log entry in TYPO3 v12 and will stop working with
TYPO3 v13.

## Affected installations {#affected-installations}

Instances with TypoScript or TSconfig using one of the above functions
may be affected. This is a relatively common use case, but affected
instances can be adapted quite easily.

## Migration {#migration}

There is a rather straightforward migration path. In general, switch to
either `frontend.user` to test for frontend user state
(available in frontend TypoScript), or to `backend.user` (available
in frontend TypoScript and TSconfig).

Note the transition can be done in existing TYPO3 v11 projects already.

Some examples:

```typoscript
[loginUser('*')]
    page = PAGE
    page.20 = TEXT
    page.20.value = User is logged in<br />
[end]
[frontend.user.isLoggedIn]
    page = PAGE
    page.21 = TEXT
    page.21.value = User is logged in<br />
[end]

[loginUser('*') === false]
    page = PAGE
    page.30 = TEXT
    page.30.value = User is not logged in<br />
[end]
[!frontend.user.isLoggedIn]
    page = PAGE
    page.31 = TEXT
    page.31.value = User is not not logged in<br />
[end]

[loginUser(13)]
    page = PAGE
    page.40 = TEXT
    page.40.value = Frontend user has the uid 13<br />
[end]
[frontend.user.userId == 13]
    page = PAGE
    page.41 = TEXT
    page.41.value = Frontend user has the uid 13<br />
[end]

[loginUser('1,13')]
    page = PAGE
    page.50 = TEXT
    page.50.value = Frontend user uid is 1 or 13<br />
[end]
[frontend.user.userId in [1,13]]
    page = PAGE
    page.51 = TEXT
    page.51.value = Frontend user uid is 1 or 13<br />
[end]

[usergroup('*')]
    page = PAGE
    page.60 = TEXT
    page.60.value = A Frontend user is logged in and belongs to some usergroup.<br />
[end]
# Prefer [frontend.user.isLoggedIn] to not rely on magic array values.
[frontend.user.userGroupIds !== [0, -1]]
    page = PAGE
    page.61 = TEXT
    page.61.value = A Frontend user is logged in and belongs to some usergroup.<br />
[end]

[usergroup(11)]
    page = PAGE
    page.70 = TEXT
    page.70.value = Frontend user is member of group with uid 11<br />
[end]
[11 in frontend.user.userGroupIds]
    page = PAGE
    page.71 = TEXT
    page.71.value = Frontend user is member of group with uid 11<br />
[end]

[usergroup('1,11')]
    page = PAGE
    page.80 = TEXT
    page.80.value = Frontend user is member of group 1 or 11<br />
[end]
[1 in frontend.user.userGroupIds || 11 in frontend.user.userGroupIds]
    page = PAGE
    page.81 = TEXT
    page.81.value = Frontend user is member of group 1 or 11<br />
[end]
```
