PHPackages                             cicnavi/simplesamlphp-module-profilepage - 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. cicnavi/simplesamlphp-module-profilepage

ActiveSimplesamlphp-module[Authentication &amp; Authorization](/categories/authentication)

cicnavi/simplesamlphp-module-profilepage
========================================

The SimpleSAMLphp Profile Page module

v3.0.2(1y ago)0152LGPL-2.1-or-laterPHPPHP ^8.2CI passing

Since Nov 14Pushed 8mo ago1 watchersCompare

[ Source](https://github.com/cicnavi/simplesamlphp-module-profilepage)[ Packagist](https://packagist.org/packages/cicnavi/simplesamlphp-module-profilepage)[ RSS](/packages/cicnavi-simplesamlphp-module-profilepage/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (4)Dependencies (13)Versions (12)Used By (0)

[![Test](https://github.com/cicnavi/simplesamlphp-module-profilepage/actions/workflows/test.yml/badge.svg)](https://github.com/cicnavi/simplesamlphp-module-profilepage/actions/workflows/test.yml)

simplesamlphp-module-profilepage
================================

[](#simplesamlphp-module-profilepage)

SimpleSAMLphp module providing user "Profile Page" and profilepage functionality using SimpleSAMLphp authentication processing filters feature.

Features
--------

[](#features)

- Enables tracking of authentication events, synchronously (during authentication event) or asynchronously (in a separate process using SimpleSAMLphp Cron feature)
- Provides endpoints for end users to check their personal data, summary on connected Service Providers, and list of authentication events
- Comes with default [DBAL backend storage](https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/index.html), meaning the following database vendors can be used: MySQL, Oracle, Microsoft SQL Server, PostgreSQL, SQLite. Other backend storages can be added by following proper interfaces.
- Comes with setup procedure which sets up backend storage. In case of Doctrine DBAL this means running SQL migrations which create proper tables in configured database.
- Each backend storage connection can have master and slave configuration (master for writing, slave for reading)
- Has tracking functionality available which persist authentication data to backend storage. Currently, module can track connected services and authentication events. Other trackers can be added by following proper interfaces.
- Tracking can run in two ways:
    - synchronously - authentication data persisted during authentication event typically with multiple queries / inserts / updates to backend storage.
    - asynchronously - only authentication event job is persisted during authentication event (one insert to backend storage). With this approach, authentication event jobs can be executed later in a separate process using SimpleSAMLphp cron module

Installation
------------

[](#installation)

Version compatibility:

profilepageTested SimpleSAMLphpPHPNotev2.\*v2.3.\*&gt;=8.1Recommendedv1.\*v2.0.\*&gt;=8.0Module is installable using Composer:

```
composer require cicnavi/simplesamlphp-module-profilepage
```

In config.php, search for the "module.enable" key and set 'profilepage' to true:

```
// ...
'module.enable' => [
    'profilepage' => true,
    // ...
],
// ...
```

Depending on used features, module also requires:

- ext-redis: if PhpRedis is to be used as a store

Configuration
-------------

[](#configuration)

As usual with SimpleSAMLphp modules, copy the module template configuration to the SimpleSAMLphp config directory:

```
cp modules/profilepage/config-templates/module_profilepage.php config/
```

Next step is to configure available options in file config/module\_profilepage.php. Each option has an explanation, however, the description of the overall concept follows.

Module can be configured to only show current user data, with no accounting taking place. However, module can be configured to track the following data:

- Connected organizations - by setting the class ModuleConfiguration::OPTION\_PROVIDER\_FOR\_CONNECTED\_SERVICES option.
- Activity - by setting the class for ModuleConfiguration::OPTION\_PROVIDER\_FOR\_ACTIVITY option.

Module comes with some Doctrine DBAL capable classes which can be used for those purposes. Here is an example config excerpt which will enable storing current (latest) data for connected services and versioned data for authentication events, including versioned Idp and SP metadata, and versioned user attributes:

```
use SimpleSAML\Module\profilepage\ModuleConfiguration;
use SimpleSAML\Module\profilepage\Data\Trackers;
use SimpleSAML\Module\profilepage\Data\Providers;

// ...
ModuleConfiguration::OPTION_PROVIDER_FOR_CONNECTED_SERVICES =>
    Providers\ConnectedServices\DoctrineDbal\CurrentDataProvider::class,
ModuleConfiguration::OPTION_PROVIDER_FOR_ACTIVITY =>
        Providers\Activity\DoctrineDbal\VersionedDataProvider::class,
// ...
```

### Processing type

[](#processing-type)

The deployer can choose if the accounting processing will be performed during authentication event (synchronously), or in a separate process (asynchronously), for example:

```
use SimpleSAML\Module\profilepage\ModuleConfiguration;
use SimpleSAML\Module\profilepage\ModuleConfiguration\AccountingProcessingType;

// ...
ModuleConfiguration::OPTION_ACCOUNTING_PROCESSING_TYPE =>
    ModuleConfiguration\AccountingProcessingType::VALUE_ASYNCHRONOUS,
// ...
```

If the processing type is asynchronous, then the deployer must also configure the job store related options:

- Jobs store class which will be used to store and fetch jobs from the backend store
- Accounting cron tag for job runner
- Cron module configuration (if the used tag is different from the ones available in cron module, which is the case by default)

For each tracker or job store, the "connection key" must be set. Connection key determines which connection parameters will be forwarded for tracker / job store initialization process.

Also review / edit all other configuration options, and set appropriate values.

### Running Setup

[](#running-setup)

After you have configured everything in config/module\_profilepage.php, go to the SimpleSAMLphp Admin &gt; Configuration Page. There you will find a link "Profile Page configuration status", which will take you on the module configuration overview page.

If the configured trackers / jobs store require any setup, you will see a "Run Setup" button, so go ahead and click it. In the case of default Doctrine DBAL tracker / jobs store, the setup will run all migration classes used to create necessary tables in the database.

When the setup is finished, you'll be presented with the "Profile Page" link, which can be used by end users to see their activity.

### Adding Authentication Processing Filter

[](#adding-authentication-processing-filter)

Last step to start tracking user data using the configured tracker classes / jobs store is to add an [authentication processing filter](https://simplesamlphp.org/docs/stable/simplesamlphp-authproc.html) from the profilepage module to the right place in SimpleSAMLphp configuration. Here is an example of setting it globally for all IdPs in config/config.php:

```
// ...
'authproc.idp' => [
        // ...
        1000 => 'profilepage:Accounting',
    ],
// ...
```

Job Runner
----------

[](#job-runner)

If accounting processing is asynchronous, a job runner will have to be used in order to process jobs that have been created during authentication events.

Job runner can be executed using [SimpleSAMLphp Cron module](https://github.com/simplesamlphp/simplesamlphp/blob/master/modules/cron/docs/cron.md). As you can see in Cron documentation, a cron tag can be invoked using HTTP or CLI. When it comes to Job Runner, using CLI is the preferred way, since the job runner can run in a long-running fashion, even indefinitely. However, you are free to test execution using the HTTP version, in which case the maximum job runner execution time will correspond to the 'max\_execution\_time' INI setting.

Only one job runner instance can run at given point in time. By maintaining internal state, job runner can first check if there is another job runner active. If yes, the latter will simply exit and let the active job runner do its work. This way one is free to invoke the cron tag at any time, since only one job runner will ever be active.

OpendID Connect integration
---------------------------

[](#opendid-connect-integration)

This module can also be used as an authentication processing filter for OIDC module , meaning it can also track OIDC authentication events, Also, if connected services option is enabled, a user will be able to revoke any active access / refresh tokens for particular service in the user interface.

Accounting authentication processing filter can be added in the OIDC module configuration, as per OIDC module documentation.

Tests
-----

[](#tests)

To run phpcs, psalm and phpunit:

```
composer pre-commit
```

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance55

Moderate activity, may be stable

Popularity13

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 95.1% 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 ~63 days

Recently: every ~18 days

Total

9

Last Release

412d ago

Major Versions

v1.0.0 → v2.0.02023-11-17

2.x-dev → v3.0.02025-02-07

PHP version history (3 changes)1.x-devPHP ^8.0

v2.0.0PHP ^8.1

v3.0.0PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/26a25e71650f20493572747eabd3c68ab1188536634b6468888296340e2dda14?d=identicon)[cicnavi](/maintainers/cicnavi)

---

Top Contributors

[![cicnavi](https://avatars.githubusercontent.com/u/3176844?v=4)](https://github.com/cicnavi "cicnavi (78 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (4 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm, Rector

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/cicnavi-simplesamlphp-module-profilepage/health.svg)

```
[![Health](https://phpackages.com/badges/cicnavi-simplesamlphp-module-profilepage/health.svg)](https://phpackages.com/packages/cicnavi-simplesamlphp-module-profilepage)
```

###  Alternatives

[symfony/security-bundle

Provides a tight integration of the Security component into the Symfony full-stack framework

2.5k172.9M1.8k](/packages/symfony-security-bundle)[simplesamlphp/simplesamlphp

A PHP implementation of a SAML 2.0 service provider and identity provider.

1.1k12.4M193](/packages/simplesamlphp-simplesamlphp)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[contao/core-bundle

Contao Open Source CMS

1231.6M2.4k](/packages/contao-core-bundle)[flow-php/flow

PHP ETL - Extract Transform Load - Data processing framework

81733.7k](/packages/flow-php-flow)

PHPackages © 2026

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