PHPackages                             oliver-hader/session-service - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. oliver-hader/session-service

ActiveTypo3-cms-extension[Authentication &amp; Authorization](/categories/authentication)

oliver-hader/session-service
============================

TYPO3 Extbase session &amp; frontend user service

v1.1.2(6y ago)0111GPL-2.0-or-laterPHPPHP ^7.2

Since Dec 4Pushed 6y ago1 watchersCompare

[ Source](https://github.com/ohader/session-service)[ Packagist](https://packagist.org/packages/oliver-hader/session-service)[ RSS](/packages/oliver-hader-session-service/feed)WikiDiscussions master Synced yesterday

READMEChangelog (4)Dependencies (1)Versions (6)Used By (0)

TYPO3 Session Service Helper
============================

[](#typo3-session-service-helper)

This extension is just a helper tool and currently is **experimental**.

Domain modelling
----------------

[](#domain-modelling)

Extbase domain entities that shall be related to an existing `FrontendUser` entity require a dedicates property of type `\TYPO3\CMS\Extbase\Domain\Model\FrontendUser`(or any sub-class of this model).

In the following example `Customer` is the entity to be resolved base on a website frontend user.

```
class Customer extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
    /**
     * Frontend User
     *
     * @var \TYPO3\CMS\Extbase\Domain\Model\FrontendUser
     */
    protected $user;
```

Resolving entity subject
------------------------

[](#resolving-entity-subject)

In order to resolve subjects of type `Customer` based on the current logged in frontend user the session service helper provides the following API:

```
$currentCustomer = SubjectResolver::get()
    ->forClassName(Customer::class)
    ->forPropertyName('user')
    ->resolve();
```

In case no frontend user is logged in or could not be mapped to a subject an exception of type `InvalidSessionException` is thrown. In case more than one subjects would be resolved, a `SubjectException` is thrown.

Resolving frontend user entity
------------------------------

[](#resolving-frontend-user-entity)

In order to resolve the Extbase entity (or a sub-class) that is related to the currently logged in frontend user, the following API is provided:

```
$frontendUser = FrontendUserResolver::get()
    ->forClassName(\TYPO3\CMS\Extbase\Domain\Model\FrontendUser::class)
    ->resolve();
```

Using session subject collection
--------------------------------

[](#using-session-subject-collection)

`SubjectCollection` inherits from `\ArrayObject` and thus can be used like an array in PHP. In case there are items in the session for the mandatory `scope` (`project/shopping-cart` in the example below), those items are resolved from session storage automatically.

```
/** @var $entity \TYPO3\CMS\Extbase\DomainObject\AbstractEntity */
$entity = $this->entityRepository->findByIdentifier(123);
$collection = SubjectCollection::get('project/shopping-cart');
$collection[] = $entity;
$collection->persist();
```

In case no frontend user is logged in or could not be mapped to a subject an exception of type `InvalidSessionException` is thrown.

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~92 days

Total

5

Last Release

2347d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/402145?v=4)[Oliver Hader](/maintainers/ohader)[@ohader](https://github.com/ohader)

---

Top Contributors

[![ohader](https://avatars.githubusercontent.com/u/402145?v=4)](https://github.com/ohader "ohader (9 commits)")

### Embed Badge

![Health badge](/badges/oliver-hader-session-service/health.svg)

```
[![Health](https://phpackages.com/badges/oliver-hader-session-service/health.svg)](https://phpackages.com/packages/oliver-hader-session-service)
```

###  Alternatives

[in2code/femanager

Modern TYPO3 Frontend User Registration.

49745.4k6](/packages/in2code-femanager)[typo3/cms-felogin

TYPO3 CMS Frontend Login - A template-based plugin to log in website users in the TYPO3 frontend.

116.7M99](/packages/typo3-cms-felogin)[causal/ig_ldap_sso_auth

This extension provides LDAP support for TYPO3 by delegating the authentication of frontend and/or backend users to the centrally-managed directory of your organization. It fully supports OpenLDAP and Active Directory and is capable of connecting securely to the authentication server using either TLS or SSL (ldaps://). In case of use in an intranet environment, this extension is a perfect match since it natively brings Single Sign-On (SSO) capability to TYPO3 without any complex configuration.

33377.4k](/packages/causal-ig-ldap-sso-auth)[friendsoftypo3/openid

OpenID authentication for TYPO3 CMS

1396.0k](/packages/friendsoftypo3-openid)[b13/permission-sets

Allows for deployable and re-usable permission sets for backend users

2964.0k3](/packages/b13-permission-sets)[mfc/oauth2

Generic OAuth2 authentication and authorization for TYPO3 CMS

11290.6k2](/packages/mfc-oauth2)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
