PHPackages                             sokratisvidros/simplesamlphp-module-material - 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. sokratisvidros/simplesamlphp-module-material

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

sokratisvidros/simplesamlphp-module-material
============================================

Material Design theme for IdP Hub based on SimpleSAMLphp

7.4.0(6y ago)00MITPHPPHP &gt;=7.0

Since Feb 21Pushed 6y agoCompare

[ Source](https://github.com/SokratisVidros/simplesamlphp-module-material)[ Packagist](https://packagist.org/packages/sokratisvidros/simplesamlphp-module-material)[ RSS](/packages/sokratisvidros-simplesamlphp-module-material/feed)WikiDiscussions master Synced 1w ago

READMEChangelogDependencies (3)Versions (40)Used By (0)

Material Design theme for use with SimpleSAMLphp

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

[](#installation)

```
composer.phar require sokratisvidros/simplesamlphp-module-material:dev-master

```

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

[](#configuration)

Update `/simplesamlphp/config/config.php`:

```
'theme.use' => 'material:material'

```

*[ssp-base](https://github.com/silinternational/ssp-base) provides a convenience by loading this config with whatever is in the environment variable `THEME_USE`.*

### Google reCAPTCHA

[](#google-recaptcha)

If a site key has been provided in `$this->data['recaptcha.siteKey']`, the username/password page may require the user prove his/her humanity.

### Branding

[](#branding)

Update `/simplesamlphp/config/config.php`:

```
'theme.color-scheme' => ['indigo-purple'|'blue_grey-teal'|'red-teal'|'orange-light_blue'|'brown-orange'|'teal-blue']

```

The login page looks for `/simplesamlphp/www/logo.png` which is **NOT** provided by default.

### Analytics

[](#analytics)

Update `/simplesamlphp/config/config.php`:

```
'analytics.trackingId' => 'UA-some-unique-id-for-your-site'

```

*[ssp-base](https://github.com/silinternational/ssp-base) provides a convenience by loading this config with whatever is in the environment variable `ANALYTICS_ID`.*

### Announcements

[](#announcements)

Update `/simplesamlphp/announcement/announcement.php`:

```
 return 'Some important announcement';

```

*[ssp-utilities](https://github.com/silinternational/ssp-utilities) provides whatever is returned by `/simplesamlphp/announcement/announcement.php`.*

If provided, an alert will be shown to the user filled with the content of that announcement. HTML is supported.

Testing theme
-------------

[](#testing-theme)

[Make](https://www.gnu.org/software/make/), [Docker](https://www.docker.com/products/overview) and [Docker Compose](https://docs.docker.com/compose/install/) are required.

### Setup

[](#setup)

1. Setup `localhost` (or `192.168.62.54`, if using Vagrant) aliases for `ssp-hub1.local`, `ssp-hub2.local`, `ssp-idp1.local`, `ssp-idp2.local`, `ssp-idp3.local`, `ssp-idp4.local`, `ssp-sp1.local` and `ssp-sp2.local`. This is typically done in `/etc/hosts`. *Example line: `0.0.0.0  ssp-hub1.local ssp-idp1.local ssp-idp2.local ssp-idp4.local ssp-hub2.local ssp-idp3.local ssp-sp1.local ssp-sp2.local`*
2. Start test environment, i.e., `make` from the command line.

### Hub page

[](#hub-page)

1. Goto [Hub 1](http://ssp-hub1.local/module.php/core/authenticate.php?as=hub-discovery)

### Error page

[](#error-page)

1. Goto [Hub 1](http://ssp-hub1.local)
2. Click **Federation** tab
3. Click either **Show metadata** link
4. Login as hub administrator: `username=`**admin** `password=`**abc123**

### Logout page

[](#logout-page)

1. Goto [Hub 1](http://ssp-hub1.local)
2. Click **Authentication** tab
3. Click **Test configured authentication sources**
4. Click **admin**
5. Login as hub administrator: `username=`**admin** `password=`**abc123**
6. Click **Logout**

### Login page

[](#login-page)

#### Without theme in place

[](#without-theme-in-place)

1. Goto [SP 1](http://ssp-sp1.local:8082/module.php/core/authenticate.php?as=hub-discovery)
2. Click **idp1** (first one)
3. login page should **NOT** have material design

#### With theme in place

[](#with-theme-in-place)

1. Goto [SP 1](http://ssp-sp1.local:8082/module.php/core/authenticate.php?as=hub-discovery)
2. Click **idp2** (second one)
3. login page **SHOULD** have material design

### Forgot password functionality

[](#forgot-password-functionality)

1. Goto [SP 1](http://ssp-sp1.local:8082/module.php/core/authenticate.php?as=hub-discovery)
2. Click **idp2** (second one)
3. Forgot password link should be visible

### Helpful links functionality

[](#helpful-links-functionality)

1. Goto [SP 1](http://ssp-sp1.local:8082/module.php/core/authenticate.php?as=hub-discovery)
2. Click **idp4** (third one)
3. Help link should be visible under login form
4. Profile link should be visible under login form

### Expiry functionality

[](#expiry-functionality)

#### About to expire page

[](#about-to-expire-page)

*Note: This nag only works once since choosing later will simply set the nag date into the future a little.*

1. Goto [SP 1](http://ssp-sp1.local:8082/module.php/core/authenticate.php?as=hub-discovery)
2. Click **idp2** (second one)
3. Login as an "about to expire" user: `username=`**near\_future** `password=`**a**
4. Click **Later**
5. Click **Logout**

#### Expired page

[](#expired-page)

1. Goto [SP 1](http://ssp-sp1.local:8082/module.php/core/authenticate.php?as=hub-discovery)
2. Click **idp2** (second one)
3. Login as an "expired" user: `username=`**already\_past** `password=`**a**

### Multi-factor authentication (MFA) functionality

[](#multi-factor-authentication-mfa-functionality)

#### Nag about missing MFA setup

[](#nag-about-missing-mfa-setup)

1. Goto [SP 1](http://ssp-sp1.local:8082/module.php/core/authenticate.php?as=hub-discovery)
2. Click **idp4** (third one)
3. Login as an "unprotected" user: `username=`**nag\_for\_mfa** `password=`**a**
4. The "learn more" link should be visible
5. Click **Enable**
6. Click your browser's back button
7. Click **Remind me later**
8. Click **Logout**

#### Nag about missing password recovery methods

[](#nag-about-missing-password-recovery-methods)

1. Goto [SP 1](http://ssp-sp1.local:8082/module.php/core/authenticate.php?as=hub-discovery)
2. Click **idp4** (third one)
3. Login as a user without any methods: `username=`**nag\_for\_method** `password=`**a**
4. Enter one of the following codes to verify (`94923279, 82743523, 77802769, 01970541, 37771076`)
5. Click **Add**
6. Click your browser's back button
7. Click **Remind me later**
8. Click **Logout**

#### Force MFA setup

[](#force-mfa-setup)

1. Goto [SP 1](http://ssp-sp1.local:8082/module.php/core/authenticate.php?as=hub-discovery)
2. Click **idp4** (third one)
3. Login as an "unsafe" user: `username=`**must\_set\_up\_mfa** `password=`**a**

#### Backup code

[](#backup-code)

1. Goto [SP 1](http://ssp-sp1.local:8082/module.php/core/authenticate.php?as=hub-discovery)
2. Click **idp4** (third one)
3. Login as a "backup code" user: `username=`**has\_backupcode** `password=`**a**
4. Enter one of the following codes to verify (`94923279, 82743523, 77802769, 01970541, 37771076`)
5. Click **Logout**
6. In order to see the "running low on codes" page, simply log back in and use another code.
7. In order to see the "out of codes" page, simply log back in and out repeatedly until there are no more codes.

#### TOTP code

[](#totp-code)

1. Goto [SP 1](http://ssp-sp1.local:8082/module.php/core/authenticate.php?as=hub-discovery)
2. Click **idp4** (third one)
3. Login as a "totp" user: `username=`**has\_totp** `password=`**a**
4. Set up an app using this secret, `JVRXKYTMPBEVKXLS`
5. Enter code from app to verify
6. Click **Logout**

#### Key (U2F)

[](#key-u2f)

1. Goto [SP 1](http://ssp-sp1.local:8082/module.php/core/authenticate.php?as=hub-discovery)
2. Click **idp4** (third one)
3. Login as a "u2f" user: `username=`**has\_u2f** `password=`**a**
4. Insert key and press
5. Click **Logout**

#### Multiple options

[](#multiple-options)

1. Goto [SP 1](http://ssp-sp1.local:8082/module.php/core/authenticate.php?as=hub-discovery)
2. Click **idp4** (third one)
3. Login as a "multiple option" user: `username=`**has\_all** `password=`**a**
4. Click **MORE OPTIONS**

#### Manager rescue

[](#manager-rescue)

1. Goto [SP 1](http://ssp-sp1.local:8082/module.php/core/authenticate.php?as=hub-discovery)
2. Click **idp4** (third one)
3. Login as a "multiple option" user: `username=`**has\_all** `password=`**a**
4. Click **MORE OPTIONS**
5. Click the help option
6. Choose **Send**

*NOTE: At this time, the correct code is not known and can't be tested locally (it's only available in an email to the manager)*

### Announcements functionality

[](#announcements-functionality)

1. Goto [SP 2](http://ssp-sp2.local:8083/module.php/core/authenticate.php?as=hub-discovery)
2. The announcement should be displayed on the hub
3. Click **idp3** (first one)
4. The announcement should be displayed at the login screen

### SP name functionality

[](#sp-name-functionality)

1. Goto [SP 1](http://ssp-sp1.local:8082/module.php/core/authenticate.php?as=hub-discovery)
2. The sp name should appear in the banner

### Profile review functionality

[](#profile-review-functionality)

1. Goto [SP 1](http://ssp-sp1.local:8082/module.php/core/authenticate.php?as=hub-discovery)
2. Click **idp4** (third one)
3. Login as a "Review needed" user: `username=`**needs\_review** `password=`**a**
4. Enter one of the following printable codes to verify (`94923279, 82743523, 77802769, 01970541, 37771076`)
5. Click the button to update the profile
6. Click the button to continue
7. Click **Logout**

i18n support
------------

[](#i18n-support)

Translations are categorized by page in definition files located in the `dictionaries` directory.

Localization is affected by the configuration setting `language.available`. Only language codes found in this property will be utilized. For example, if a translation is provided in Afrikaans for this module, the configuration must be adjusted to make 'af' an available language. If that's not done, the translation function will not utilize the translations even if provided.

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity0

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

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 ~29 days

Recently: every ~47 days

Total

39

Last Release

2266d ago

Major Versions

2.3.1 → 3.0.02017-07-19

3.1.1 → 4.0.02017-11-28

4.0.6 → 5.0.02018-01-12

5.2.2 → 6.0.02018-03-05

6.1.0 → 7.0.02019-04-10

PHP version history (2 changes)1.0.0PHP &gt;=5.4

7.3.0PHP &gt;=7.0

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1367545?v=4)[sokratis](/maintainers/sokratis)[@sokratis](https://github.com/sokratis)

---

Top Contributors

[![longrunningprocess](https://avatars.githubusercontent.com/u/4412848?v=4)](https://github.com/longrunningprocess "longrunningprocess (48 commits)")[![forevermatt](https://avatars.githubusercontent.com/u/6233204?v=4)](https://github.com/forevermatt "forevermatt (20 commits)")[![Baggerone](https://avatars.githubusercontent.com/u/8058522?v=4)](https://github.com/Baggerone "Baggerone (17 commits)")[![fillup](https://avatars.githubusercontent.com/u/556105?v=4)](https://github.com/fillup "fillup (10 commits)")[![briskt](https://avatars.githubusercontent.com/u/3172830?v=4)](https://github.com/briskt "briskt (6 commits)")[![SokratisVidros](https://avatars.githubusercontent.com/u/1352422?v=4)](https://github.com/SokratisVidros "SokratisVidros (2 commits)")

### Embed Badge

![Health badge](/badges/sokratisvidros-simplesamlphp-module-material/health.svg)

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

###  Alternatives

[simplesamlphp/simplesamlphp

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

1.1k12.4M193](/packages/simplesamlphp-simplesamlphp)[drupalauth/simplesamlphp-module-drupalauth

A SimpleSAMLphp module adding support for Drupal as the authentication source.

25305.4k1](/packages/drupalauth-simplesamlphp-module-drupalauth)[simplesamlphp/simplesamlphp-module-oidc

A SimpleSAMLphp module adding support for the OpenID Connect protocol

5016.9k1](/packages/simplesamlphp-simplesamlphp-module-oidc)[simplesamlphp/simplesamlphp-module-webauthn

A PHP implementation of a FIDO2 / WebAuthn authentication agent

181.4k](/packages/simplesamlphp-simplesamlphp-module-webauthn)

PHPackages © 2026

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