Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • perun/perun-proxyidp/simplesamlphp-module-privacyidea
1 result
Show changes
Commits on Source (12)
Showing
with 1463 additions and 6217 deletions
version: "1"
rules:
- base: main
upstream: privacyidea:master
mergeMethod: squash
assignees:
- melanger
name: Check and release
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
commitlint:
name: Commitlint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 16
- name: Install npm modules
run: npm ci
- name: Lint commit messages
run: >
for commit in $(git rev-list ${{ github.base_ref }}..${{
github.head_ref }}); do
npx commitlint --from HEAD~${{ github.event.pull_request.commits }} --to HEAD --verbose
done
composer:
name: Composer
runs-on: ubuntu-latest
strategy:
matrix:
php-version: [7.4, 8.0]
composer-version: [1, 2]
steps:
- uses: actions/checkout@v3
- name: Cache Composer dependencies
uses: actions/cache@v3
with:
path: /tmp/composer-cache
key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }}
- name: Install dependencies
uses: php-actions/composer@v6
with:
php_version: ${{ matrix.php-version }}
version: ${{ matrix.composer-version }}
php_extensions: curl iconv intl json ldap
ecs:
name: Easy coding standard
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Cache Composer dependencies
uses: actions/cache@v3
with:
path: /tmp/composer-cache
key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }}
- name: Install dependencies
uses: php-actions/composer@v6
with:
php_version: 8
version: 2
php_extensions: curl json
- name: Run easy coding standard
run: vendor/bin/ecs check
prettier:
name: prettier
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 16
- name: Install npm modules
run: npm ci
- name: Check with prettier
run: npx prettier --check .
release:
name: Semantic release
needs:
- commitlint
- composer
- ecs
- prettier
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 16
- name: Install npm modules
run: npm ci
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: npx semantic-release
# Composer
## Ansible
*.retry
## composer
composer.phar
/vendor/
# PHPUnit
/.phpunit.cache
.phpunit.result.cache
## Java
# Gradle
.gradle
/build/
gradle-app.setting
!gradle-wrapper.jar
.gradletasknamecache
# Java
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
......@@ -25,9 +29,108 @@ gradle-app.setting
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
# Maven
## JetBrains
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
.idea/modules.xml
.idea/*.iml
.idea/modules
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
## macOS
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
## maven
target/
pom.xml.tag
pom.xml.releaseBackup
......@@ -39,57 +142,99 @@ buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
# Node
## node
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
# next.js build output
.next
# nuxt.js build output
.nuxt
dist
.cache/
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
.dynamodb/
.tern-port
# Python
#DynamoDB Local files
.dynamodb/
## Python
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
*.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
......@@ -97,22 +242,27 @@ dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
......@@ -122,26 +272,44 @@ htmlcov/
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
__pypackages__/
# celery beat schedule file
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
......@@ -149,18 +317,398 @@ venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# IntelliJ project files
.idea
*.iml
out
gen
modules
## vim
# Swap
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]
# Session
Session.vim
# Temporary
.netrwhist
*~
# Auto-generated tag files
tags
# Persistent undo
[._]*.un~
## Visual Studio
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
bower_components/
# ASP.NET Core default setup: bower directory is configured as wwwroot/lib/ and bower restore is true
**/wwwroot/lib/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
## Windows
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
include:
- project: perun-proxy-aai/common
file: /templates/.gitlab-ci-template.yml
## Ansible
*.retry
## composer
composer.phar
/vendor/
## Java
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
## JetBrains
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
.idea/modules.xml
.idea/*.iml
.idea/modules
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
## macOS
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
## maven
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
## node
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
node_modules
web-build
.expo
.expo-shared
.git
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
# parcel-bundler cache (https://parceljs.org/)
.cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
#DynamoDB Local files
.dynamodb/
## Python
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib64/
parts/
sdist/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
## vim
# Swap
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]
# Session
Session.vim
# Temporary
.netrwhist
*~
# Auto-generated tag files
tags
# Persistent undo
[._]*.un~
## Visual Studio
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
bower_components/
# ASP.NET Core default setup: bower directory is configured as wwwroot/lib/ and bower restore is true
**/wwwroot/lib/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
## Windows
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
package-lock.json
app.json
*.svg
faviconData.json
CHANGELOG.md
renovate.json
composer.lock
vendor
CHANGELOG.md
.git
*.min.css
*.min.js
{
"branches": [
"+([0-9])?(.{+([0-9]),x}).x",
"main",
"next",
"next-major",
{ "name": "beta", "prerelease": true },
{ "name": "alpha", "prerelease": true }
],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"@semantic-release/github",
[
"@semantic-release/git",
{
"assets": ["CHANGELOG.md"],
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
}
]
]
}
{ "extends": ["@perun-proxy-aai/semantic-release-proxy-config"] }
## [5.4.2](https://gitlab.ics.muni.cz/perun-proxy-aai/simplesamlphp/simplesamlphp-module-privacyidea/compare/v5.4.1...v5.4.2) (2022-10-19)
### Bug Fixes
* improve wording of TOTP and WebAuthn ([ce96f25](https://gitlab.ics.muni.cz/perun-proxy-aai/simplesamlphp/simplesamlphp-module-privacyidea/commit/ce96f25c95b7860ade45aff8810663819a08f816))
## [5.4.1](https://github.com/CESNET/simplesamlphp-module-privacyidea/compare/v5.4.0...v5.4.1) (2022-08-19)
......
......@@ -16,7 +16,7 @@ It is recommended to install this package using [composer](https://getcomposer.o
## Configuration
Please check the [documentation](https://github.com/cesnet/simplesamlphp-module-privacyidea/blob/master/docs/privacyidea.md)
Please check the [documentation](https://gitlab.ics.muni.cz/perun-proxy-aai/simplesamlphp/simplesamlphp-module-privacyidea/-/blob/main/docs/privacyidea.md)
## Disclaimer
......
module.exports = {
extends: ["@commitlint/config-conventional"],
};
......@@ -7,7 +7,7 @@
"privacyIDEA",
"MFA"
],
"license": "AGPL-3.0",
"license": "AGPL-3.0-or-later",
"require": {
"php": "^7.4 || ^8.0",
"simplesamlphp/composer-module-installer": "~1.0",
......@@ -15,15 +15,12 @@
"cesnet/privacyidea-php-client": "^1.2.0",
"ext-json": "*"
},
"require-dev": {
"symplify/easy-coding-standard": "^11.1"
},
"config": {
"allow-plugins": {
"simplesamlphp/composer-module-installer": true
},
"platform": {
"php": "7.4"
},
"allow-plugins": {
"simplesamlphp/composer-module-installer": true
}
},
"replace": {
......@@ -33,5 +30,11 @@
"psr-4": {
"SimpleSAML\\Module\\privacyidea\\": "lib/"
}
}
},
"authors": [
{
"name": "Perun proxy AAI team",
"email": "proxyidp@cesnet.cz"
}
]
}
......@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "a39b38757e10b0fb7fd22902b1f7c5c8",
"content-hash": "23d8db8716bb10bb63a2b03a2741ac74",
"packages": [
{
"name": "cesnet/privacyidea-php-client",
......@@ -288,16 +288,16 @@
},
{
"name": "phpmailer/phpmailer",
"version": "v6.6.3",
"version": "v6.6.4",
"source": {
"type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git",
"reference": "9400f305a898f194caff5521f64e5dfa926626f3"
"reference": "a94fdebaea6bd17f51be0c2373ab80d3d681269b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/9400f305a898f194caff5521f64e5dfa926626f3",
"reference": "9400f305a898f194caff5521f64e5dfa926626f3",
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/a94fdebaea6bd17f51be0c2373ab80d3d681269b",
"reference": "a94fdebaea6bd17f51be0c2373ab80d3d681269b",
"shasum": ""
},
"require": {
......@@ -354,7 +354,7 @@
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
"support": {
"issues": "https://github.com/PHPMailer/PHPMailer/issues",
"source": "https://github.com/PHPMailer/PHPMailer/tree/v6.6.3"
"source": "https://github.com/PHPMailer/PHPMailer/tree/v6.6.4"
},
"funding": [
{
......@@ -362,7 +362,7 @@
"type": "github"
}
],
"time": "2022-06-20T09:21:02+00:00"
"time": "2022-08-22T09:22:00+00:00"
},
{
"name": "psr/cache",
......@@ -663,29 +663,30 @@
},
{
"name": "simplesamlphp/composer-module-installer",
"version": "v1.1.8",
"version": "v1.2.0",
"source": {
"type": "git",
"url": "https://github.com/simplesamlphp/composer-module-installer.git",
"reference": "45161b5406f3e9c82459d0f9a5a1dba064953cfa"
"reference": "27b4fe96198ffaff3ab49c87b40f4cb24de77b01"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/simplesamlphp/composer-module-installer/zipball/45161b5406f3e9c82459d0f9a5a1dba064953cfa",
"reference": "45161b5406f3e9c82459d0f9a5a1dba064953cfa",
"url": "https://api.github.com/repos/simplesamlphp/composer-module-installer/zipball/27b4fe96198ffaff3ab49c87b40f4cb24de77b01",
"reference": "27b4fe96198ffaff3ab49c87b40f4cb24de77b01",
"shasum": ""
},
"require": {
"composer-plugin-api": "^1.1|^2.0",
"composer-plugin-api": "^1.1 || ^2.0",
"php": "^7.4 || ^8.0",
"simplesamlphp/simplesamlphp": "*"
},
"type": "composer-plugin",
"extra": {
"class": "SimpleSamlPhp\\Composer\\ModuleInstallerPlugin"
"class": "SimpleSAML\\Composer\\ModuleInstallerPlugin"
},
"autoload": {
"psr-0": {
"SimpleSamlPhp\\Composer": "src/"
"psr-4": {
"SimpleSAML\\Composer\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
......@@ -695,9 +696,9 @@
"description": "A Composer plugin that allows installing SimpleSAMLphp modules through Composer.",
"support": {
"issues": "https://github.com/simplesamlphp/composer-module-installer/issues",
"source": "https://github.com/simplesamlphp/composer-module-installer/tree/v1.1.8"
"source": "https://github.com/simplesamlphp/composer-module-installer/tree/v1.2.0"
},
"time": "2020-08-25T19:04:33+00:00"
"time": "2022-08-31T17:20:27+00:00"
},
{
"name": "simplesamlphp/saml2",
......@@ -2653,16 +2654,16 @@
},
{
"name": "symfony/console",
"version": "v5.4.11",
"version": "v5.4.12",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "535846c7ee6bc4dd027ca0d93220601456734b10"
"reference": "c072aa8f724c3af64e2c7a96b796a4863d24dba1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/535846c7ee6bc4dd027ca0d93220601456734b10",
"reference": "535846c7ee6bc4dd027ca0d93220601456734b10",
"url": "https://api.github.com/repos/symfony/console/zipball/c072aa8f724c3af64e2c7a96b796a4863d24dba1",
"reference": "c072aa8f724c3af64e2c7a96b796a4863d24dba1",
"shasum": ""
},
"require": {
......@@ -2732,7 +2733,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v5.4.11"
"source": "https://github.com/symfony/console/tree/v5.4.12"
},
"funding": [
{
......@@ -2748,7 +2749,7 @@
"type": "tidelift"
}
],
"time": "2022-07-22T10:42:43+00:00"
"time": "2022-08-17T13:18:05+00:00"
},
{
"name": "symfony/dependency-injection",
......@@ -3143,16 +3144,16 @@
},
{
"name": "symfony/filesystem",
"version": "v5.4.11",
"version": "v5.4.12",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "6699fb0228d1bc35b12aed6dd5e7455457609ddd"
"reference": "2d67c1f9a1937406a9be3171b4b22250c0a11447"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/6699fb0228d1bc35b12aed6dd5e7455457609ddd",
"reference": "6699fb0228d1bc35b12aed6dd5e7455457609ddd",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/2d67c1f9a1937406a9be3171b4b22250c0a11447",
"reference": "2d67c1f9a1937406a9be3171b4b22250c0a11447",
"shasum": ""
},
"require": {
......@@ -3187,7 +3188,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/filesystem/tree/v5.4.11"
"source": "https://github.com/symfony/filesystem/tree/v5.4.12"
},
"funding": [
{
......@@ -3203,7 +3204,7 @@
"type": "tidelift"
}
],
"time": "2022-07-20T13:00:38+00:00"
"time": "2022-08-02T13:48:16+00:00"
},
{
"name": "symfony/finder",
......@@ -3270,16 +3271,16 @@
},
{
"name": "symfony/framework-bundle",
"version": "v5.4.11",
"version": "v5.4.12",
"source": {
"type": "git",
"url": "https://github.com/symfony/framework-bundle.git",
"reference": "a0660b602357d5c2ceaac1c9f80c5820bbff803d"
"reference": "49f8fe5d39b7513a3f26898788885dbe66b0d910"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/framework-bundle/zipball/a0660b602357d5c2ceaac1c9f80c5820bbff803d",
"reference": "a0660b602357d5c2ceaac1c9f80c5820bbff803d",
"url": "https://api.github.com/repos/symfony/framework-bundle/zipball/49f8fe5d39b7513a3f26898788885dbe66b0d910",
"reference": "49f8fe5d39b7513a3f26898788885dbe66b0d910",
"shasum": ""
},
"require": {
......@@ -3401,7 +3402,7 @@
"description": "Provides a tight integration between Symfony components and the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/framework-bundle/tree/v5.4.11"
"source": "https://github.com/symfony/framework-bundle/tree/v5.4.12"
},
"funding": [
{
......@@ -3417,20 +3418,20 @@
"type": "tidelift"
}
],
"time": "2022-07-20T13:00:38+00:00"
"time": "2022-08-26T10:32:10+00:00"
},
{
"name": "symfony/http-foundation",
"version": "v5.4.11",
"version": "v5.4.12",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "0a5868e0999e9d47859ba3d918548ff6943e6389"
"reference": "f4bfe9611b113b15d98a43da68ec9b5a00d56791"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/0a5868e0999e9d47859ba3d918548ff6943e6389",
"reference": "0a5868e0999e9d47859ba3d918548ff6943e6389",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/f4bfe9611b113b15d98a43da68ec9b5a00d56791",
"reference": "f4bfe9611b113b15d98a43da68ec9b5a00d56791",
"shasum": ""
},
"require": {
......@@ -3442,8 +3443,11 @@
"require-dev": {
"predis/predis": "~1.0",
"symfony/cache": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^5.4|^6.0",
"symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/mime": "^4.4|^5.0|^6.0"
"symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4",
"symfony/mime": "^4.4|^5.0|^6.0",
"symfony/rate-limiter": "^5.2|^6.0"
},
"suggest": {
"symfony/mime": "To use the file extension guesser"
......@@ -3474,7 +3478,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-foundation/tree/v5.4.11"
"source": "https://github.com/symfony/http-foundation/tree/v5.4.12"
},
"funding": [
{
......@@ -3490,20 +3494,20 @@
"type": "tidelift"
}
],
"time": "2022-07-20T13:00:38+00:00"
"time": "2022-08-19T07:33:17+00:00"
},
{
"name": "symfony/http-kernel",
"version": "v5.4.11",
"version": "v5.4.12",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "4fd590a2ef3f62560dbbf6cea511995dd77321ee"
"reference": "37f660fa3bcd78fe4893ce23ebe934618ec099be"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/4fd590a2ef3f62560dbbf6cea511995dd77321ee",
"reference": "4fd590a2ef3f62560dbbf6cea511995dd77321ee",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/37f660fa3bcd78fe4893ce23ebe934618ec099be",
"reference": "37f660fa3bcd78fe4893ce23ebe934618ec099be",
"shasum": ""
},
"require": {
......@@ -3586,7 +3590,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-kernel/tree/v5.4.11"
"source": "https://github.com/symfony/http-kernel/tree/v5.4.12"
},
"funding": [
{
......@@ -3602,7 +3606,7 @@
"type": "tidelift"
}
],
"time": "2022-07-29T12:30:22+00:00"
"time": "2022-08-26T14:40:40+00:00"
},
{
"name": "symfony/polyfill-ctype",
......@@ -4426,16 +4430,16 @@
},
{
"name": "symfony/string",
"version": "v5.4.11",
"version": "v5.4.12",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
"reference": "5eb661e49ad389e4ae2b6e4df8d783a8a6548322"
"reference": "2fc515e512d721bf31ea76bd02fe23ada4640058"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/5eb661e49ad389e4ae2b6e4df8d783a8a6548322",
"reference": "5eb661e49ad389e4ae2b6e4df8d783a8a6548322",
"url": "https://api.github.com/repos/symfony/string/zipball/2fc515e512d721bf31ea76bd02fe23ada4640058",
"reference": "2fc515e512d721bf31ea76bd02fe23ada4640058",
"shasum": ""
},
"require": {
......@@ -4492,7 +4496,7 @@
"utf8"
],
"support": {
"source": "https://github.com/symfony/string/tree/v5.4.11"
"source": "https://github.com/symfony/string/tree/v5.4.12"
},
"funding": [
{
......@@ -4508,7 +4512,7 @@
"type": "tidelift"
}
],
"time": "2022-07-24T16:15:25+00:00"
"time": "2022-08-12T17:03:11+00:00"
},
{
"name": "symfony/var-dumper",
......@@ -4674,16 +4678,16 @@
},
{
"name": "symfony/yaml",
"version": "v5.4.11",
"version": "v5.4.12",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "05d4ea560f3402c6c116afd99fdc66e60eda227e"
"reference": "7a3aa21ac8ab1a96cc6de5bbcab4bc9fc943b18c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/05d4ea560f3402c6c116afd99fdc66e60eda227e",
"reference": "05d4ea560f3402c6c116afd99fdc66e60eda227e",
"url": "https://api.github.com/repos/symfony/yaml/zipball/7a3aa21ac8ab1a96cc6de5bbcab4bc9fc943b18c",
"reference": "7a3aa21ac8ab1a96cc6de5bbcab4bc9fc943b18c",
"shasum": ""
},
"require": {
......@@ -4729,7 +4733,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/yaml/tree/v5.4.11"
"source": "https://github.com/symfony/yaml/tree/v5.4.12"
},
"funding": [
{
......@@ -4745,7 +4749,7 @@
"type": "tidelift"
}
],
"time": "2022-06-27T16:58:25+00:00"
"time": "2022-08-02T15:52:22+00:00"
},
{
"name": "twig/extensions",
......@@ -4994,63 +4998,7 @@
"time": "2015-02-11T11:06:42+00:00"
}
],
"packages-dev": [
{
"name": "symplify/easy-coding-standard",
"version": "11.1.5",
"source": {
"type": "git",
"url": "https://github.com/symplify/easy-coding-standard.git",
"reference": "0cdd7d2e7868fa2776c8a32cdfe1a8d5055dee05"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symplify/easy-coding-standard/zipball/0cdd7d2e7868fa2776c8a32cdfe1a8d5055dee05",
"reference": "0cdd7d2e7868fa2776c8a32cdfe1a8d5055dee05",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"conflict": {
"friendsofphp/php-cs-fixer": "<3.0",
"squizlabs/php_codesniffer": "<3.6"
},
"bin": [
"bin/ecs"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "10.3-dev"
}
},
"autoload": {
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Prefixed scoped version of ECS package",
"support": {
"source": "https://github.com/symplify/easy-coding-standard/tree/11.1.5"
},
"funding": [
{
"url": "https://www.paypal.me/rectorphp",
"type": "custom"
},
{
"url": "https://github.com/tomasvotruba",
"type": "github"
}
],
"time": "2022-08-16T08:53:49+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
......
......@@ -15,10 +15,10 @@
"en": "Password"
},
"otp": {
"en": "OTP"
"en": "One time code"
},
"webauthn": {
"en": "WebAuthn"
"en": "Security key"
},
"push": {
"en": "Push"
......@@ -48,19 +48,19 @@
"en": "Alternate login options:"
},
"webauthn_insecure_context": {
"en": "Unable to proceed with Web Authn because the context is insecure!"
"en": "Unable to proceed with the security key because the context is insecure!"
},
"webauthn_library_unavailable": {
"en": "Could not load WebAuthn, your device probably does not support it. Please try again or use another method."
"en": "Could not load WebAuthn, your device probably does not support security keys. Please try again or use another method."
},
"webauthn_AbortError": {
"en": "You have canceled the authentication."
},
"webauthn_InvalidStateError": {
"en": "You have used an unregistered WebAuthn device. Please use a different one."
"en": "You have used an unregistered security key. Please use a different one."
},
"webauthn_NotAllowedError": {
"en": "WebAuthn is disabled for this site."
"en": "Security keys are disabled for this site."
},
"webauthn_NotSupportedError": {
"en": "Your device does not support WebAuthn features that we need."
......@@ -69,13 +69,13 @@
"en": "There is a problem with the WebAuthn parameters that we use."
},
"webauthn_other_error": {
"en": "There was a problem communicating with your device."
"en": "There was a problem communicating with your security key."
},
"webauthn_in_progress": {
"en": "Trying to communicate with your WebAuthn device. Plug it in and press the button or confirm the system dialog."
"en": "Trying to communicate with your security key. Plug it in and press the button or confirm the system dialog."
},
"webauthn_success": {
"en": "We heard back from your WebAuthn device. You have been authenticated."
"en": "We heard back from your security key. You have been authenticated."
},
"u2f_insecure_context": {
"en": "Unable to proceed with U2F because the context is insecure!"
......
......@@ -30,7 +30,7 @@
"tr": "OTP"
},
"webauthn": {
"cs": "WebAuthn",
"cs": "Bezpečnostní klíč",
"de": "WebAuthn",
"nl": "WebAuthn",
"tr": "Lütfen Tek Kullanımlık Parolanızı(OTP) giriniz"
......@@ -86,21 +86,21 @@
"tr": "Alternatif oturum açma seçenekleri:"
},
"webauthn_insecure_context": {
"cs": "Není možné použít autentizaci WebAuthn, protože neodpovídá bezpečnostní kontext.",
"cs": "Není možné použít autentizaci bezpečnostním klíčem, protože neodpovídá bezpečnostní kontext.",
"tr": "Bağlam güvenli olmadığı için Web Authn ile devam edilemiyor!"
},
"webauthn_library_unavailable": {
"cs": "Načtení WebAuthn se nezdařilo, nejspíš ho Vaše zařízení nepodporuje. Zkuste to znovu nebo použijte jinou metodu.",
"cs": "Načtení WebAuthn se nezdařilo, nejspíš Vaše zařízení nepodporuje bezpečnostní klíče. Zkuste to znovu nebo použijte jinou metodu.",
"tr": "WebAuthn kitaplığı yüklenemedi. Lütfen tekrar deneyin veya başka bir belirteç kullanın."
},
"webauthn_AbortError": {
"cs": "Ověření WebAuthn bylo zrušeno."
"cs": "Ověření bezpečnostním klíčem bylo zrušeno."
},
"webauthn_NotAllowedError": {
"cs": "WebAuthn není pro tuto stránku povoleno."
"cs": "Bezpečostní klíče nejsou pro tuto stránku povoleny."
},
"webauthn_InvalidStateError": {
"cs": "Použité WebAuthn zařízení nemáte zaregistrované, prosím použijte jiné."
"cs": "Použitý bezpečnostní klíč nemáte zaregistrovaný, prosím použijte jiný."
},
"webauthn_NotSupportedError": {
"cs": "Vaše zařízení nepodporuje možnosti WebAuthn, které potřebujeme."
......@@ -109,13 +109,13 @@
"cs": "WebAuthn parametry jsou nesprávné."
},
"webauthn_other_error": {
"cs": "Komunikace s Vaším WebAuthn zařízením se nezdařila."
"cs": "Komunikace s Vaším bezpečnostním klíčem zařízením se nezdařila."
},
"webauthn_in_progress": {
"cs": "Probíhá komunikace s Vaším WebAuthn zařízením. Připojte fyzické zařízení a zmáčkněte tlačítko nebo potvrďte systémový dialog."
"cs": "Probíhá komunikace s bezpečnostním klíčem. Připojte fyzickou klíčenku a zmáčkněte tlačítko nebo potvrďte systémový dialog."
},
"webauthn_success": {
"cs": "Obdrželi jsme odpověď z Vašeho WebAuthn zařízení. Autentizace byla úspěšná."
"cs": "Obdrželi jsme odpověď z Vašeho bezpečnostního klíče. Autentizace byla úspěšná."
},
"u2f_insecure_context": {
"cs": "Není možné použít autentizaci U2F, protože neodpovídá bezpečnostní kontext.",
......
<?php
declare(strict_types=1);
use PhpCsFixer\Fixer\FunctionNotation\FunctionTypehintSpaceFixer;
use PhpCsFixer\Fixer\Operator\NotOperatorWithSuccessorSpaceFixer;
use Symplify\EasyCodingStandard\Config\ECSConfig;
use Symplify\EasyCodingStandard\ValueObject\Set\SetList;
return static function (ECSConfig $ecsConfig): void {
$ecsConfig->paths([__DIR__ . '/ecs.php', __DIR__ . '/lib', __DIR__ . '/templates', __DIR__ . '/www']);
$ecsConfig->sets([
SetList::CLEAN_CODE,
SetList::SYMPLIFY,
SetList::ARRAY,
SetList::COMMON,
SetList::COMMENTS,
SetList::CONTROL_STRUCTURES,
SetList::DOCBLOCK,
SetList::NAMESPACES,
SetList::PHPUNIT,
SetList::SPACES,
SetList::STRICT,
SetList::PSR_12,
]);
$ecsConfig->skip([NotOperatorWithSuccessorSpaceFixer::class, FunctionTypehintSpaceFixer::class]);
};
......@@ -61,7 +61,8 @@ class PrivacyideaAuthProc extends ProcessingFilter
$state['privacyidea:privacyidea:ui']['messageOverride'] = $this->authProcConfig['messageOverride'] ?? null;
// If set in config, allow to check the IP of the client and to control the 2FA depending on the client IP.
// It can be used to configure that a user does not need to provide a second factor when logging in from the local network.
// It can be used to configure that a user does not need to provide a second factor
// when logging in from the local network.
if (!empty($this->authProcConfig['excludeClientIPs'])) {
$ip = Utils::getClientIP();
if ($this->matchIP($ip, $this->authProcConfig['excludeClientIPs'])) {
......@@ -70,7 +71,8 @@ class PrivacyideaAuthProc extends ProcessingFilter
}
}
// If set to true in config, selectively disable the privacyIDEA authentication using the entityID and/or SAML attributes.
// If set to true in config, selectively disable the privacyIDEA authentication
// using the entityID and/or SAML attributes.
// The skipping will be done in self::isPrivacyIDEADisabled
if (!empty($this->authProcConfig['checkEntityID']) && $this->authProcConfig['checkEntityID'] === true) {
$stateId = State::saveState($state, 'privacyidea:privacyidea');
......@@ -85,8 +87,10 @@ class PrivacyideaAuthProc extends ProcessingFilter
}
// SSO check if authentication should be skipped
if (array_key_exists('SSO', $this->authProcConfig)
&& $this->authProcConfig['SSO'] === true) {
if (
array_key_exists('SSO', $this->authProcConfig)
&& $this->authProcConfig['SSO'] === true
) {
if (Utils::checkForValidSSO($state)) {
Logger::debug('privacyIDEA: SSO data valid - logging in..');
ProcessingChain::resumeProcessing($state);
......@@ -108,8 +112,12 @@ class PrivacyideaAuthProc extends ProcessingFilter
}
// Check if triggerChallenge or a call with a static pass to /validate/check should be done
if (!empty($this->authProcConfig['doTriggerChallenge']) && $this->authProcConfig['doTriggerChallenge'] === true) {
// Call /validate/triggerchallenge with the service account from the configuration to trigger all token of the user
if (
!empty($this->authProcConfig['doTriggerChallenge'])
&& $this->authProcConfig['doTriggerChallenge'] === true
) {
// Call /validate/triggerchallenge with the service account from the configuration
// to trigger all token of the user
$stateId = State::saveState($state, 'privacyidea:privacyidea');
if (!$this->pi->serviceAccountAvailable()) {
Logger::error(
......@@ -127,7 +135,10 @@ class PrivacyideaAuthProc extends ProcessingFilter
$stateId = Utils::processPIResponse($stateId, $response);
}
}
} elseif (!empty($this->authProcConfig['tryFirstAuthentication']) && $this->authProcConfig['tryFirstAuthentication'] === true) {
} elseif (
!empty($this->authProcConfig['tryFirstAuthentication'])
&& $this->authProcConfig['tryFirstAuthentication'] === true
) {
// Call /validate/check with a static pass from the configuration
// This could already end the authentication with the "passOnNoToken" policy, or it could trigger challenges
$response = Utils::authenticatePI($state, [
......@@ -311,8 +322,8 @@ class PrivacyideaAuthProc extends ProcessingFilter
if (!empty($matchedAttrs)) {
$ret = true;
Logger::debug('privacyidea:checkEntityID: Requesting entityID in ' .
'list, but excluded by at least one attribute regexp "' . $attrKey .
'" = "' . $matchedAttrs[0] . '".');
'list, but excluded by at least one attribute regexp "' . $attrKey .
'" = "' . $matchedAttrs[0] . '".');
break;
}
}
......
......@@ -75,9 +75,11 @@ class PrivacyideaAuthSource extends UserPassBase
Logger::debug('privacyIDEA AuthSource authenticate');
// SSO check if authentication should be skipped
if (array_key_exists('SSO', $this->authSourceConfig) &&
if (
array_key_exists('SSO', $this->authSourceConfig) &&
$this->authSourceConfig['SSO'] === true &&
Utils::checkForValidSSO($state)) {
Utils::checkForValidSSO($state)
) {
$session = Session::getSessionFromRequest();
$attributes = $session->getData('privacyidea:privacyidea', 'attributes');
Logger('privacyIDEA: SSO retrieved attributes from session: ' . print_r($attributes, true));
......@@ -144,8 +146,10 @@ class PrivacyideaAuthSource extends UserPassBase
$state['privacyidea:privacyidea']['username'] = $username;
$stateId = State::saveState($state, 'privacyidea:privacyidea');
if (array_key_exists('doTriggerChallenge', $source->authSourceConfig)
&& $source->authSourceConfig['doTriggerChallenge'] === true) {
if (
array_key_exists('doTriggerChallenge', $source->authSourceConfig)
&& $source->authSourceConfig['doTriggerChallenge'] === true
) {
if (!empty($username) && $source->pi->serviceAccountAvailable()) {
try {
$response = $source->pi->triggerChallenge($username);
......@@ -153,8 +157,10 @@ class PrivacyideaAuthSource extends UserPassBase
Utils::handlePrivacyIDEAException($e, $state);
}
}
} elseif (array_key_exists('doSendPassword', $source->authSourceConfig)
&& $source->authSourceConfig['doSendPassword'] === true) {
} elseif (
array_key_exists('doSendPassword', $source->authSourceConfig)
&& $source->authSourceConfig['doSendPassword'] === true
) {
if (!empty($username)) {
try {
$response = $source->pi->validateCheck($username, $password);
......@@ -219,7 +225,8 @@ class PrivacyideaAuthSource extends UserPassBase
/*
* In order to be able to register a logout handler for the session (mandatory for SSO to work),
* the authority is required in the session's authData.
* The authority can be put there by invoking Session::doLogin, which should be done by the LoginCompletedHandler.
* The authority can be put there by invoking Session::doLogin,
* which should be done by the LoginCompletedHandler.
* To be able to do something after Session::doLogin, the LoginCompletedHandler has to be replaced with
* an implementation that writes the SSO data and attributes in this case (AuthSource) to the session.
*/
......
......@@ -66,7 +66,8 @@ class Utils
if ($formParams['mode'] === 'push') {
try {
if ($pi->pollTransaction($transactionID)) {
// If the authentication has been confirmed on the phone, the authentication has to be finalized with a
// If the authentication has been confirmed on the phone,
// the authentication has to be finalized with a
// call to /validate/check with an empty pass
// https://privacyidea.readthedocs.io/en/latest/tokens/authentication_modes.html#outofband-mode
$response = $pi->validateCheck($username, '', $transactionID);
......@@ -92,7 +93,8 @@ class Utils
if (empty($origin) || empty($webAuthnSignResponse)) {
Logger::error(
'privacyIDEA: Incomplete data for WebAuthn authentication: WebAuthnSignResponse or Origin is missing!'
'privacyIDEA: Incomplete data for WebAuthn authentication: '
. 'WebAuthnSignResponse or Origin is missing!'
);
} else {
try {
......@@ -136,7 +138,8 @@ class Utils
$authorities = $session->getAuthorities();
if (empty($authorities)) {
Logger::error(
'privacyIDEA: Cannot use SSO because there is no authority configured to register the logout handler for!'
'privacyIDEA: Cannot use SSO because there is no authority'
. 'configured to register the logout handler for!'
);
return;
......@@ -300,7 +303,8 @@ class Utils
State::saveState($state, 'privacyidea:privacyidea');
ProcessingChain::resumeProcessing($state);
} elseif ($state['privacyidea:privacyidea']['authenticationMethod'] === 'authsource') {
// For AuthSource, the attributes required by saml need to be present, so check for that before completing
// For AuthSource, the attributes required by saml need to be present,
// so check for that before completing
PrivacyideaAuthSource::checkAuthenticationComplete($state, $response, $config);
}
} elseif (!empty($response->errorCode)) {
......@@ -326,7 +330,8 @@ class Utils
*/
public static function getClientIP()
{
$result = ($_SERVER['HTTP_X_FORWARDED_FOR'] ?? null) ?: ($_SERVER['REMOTE_ADDR'] ?? null) ?: ($_SERVER['HTTP_CLIENT_IP'] ?? null);
$result = ($_SERVER['HTTP_X_FORWARDED_FOR'] ?? null) ?: ($_SERVER['REMOTE_ADDR'] ?? null)
?: ($_SERVER['HTTP_CLIENT_IP'] ?? null);
Logger::debug('privacyIDEA: client ip: ' . $result);
return $result;
......
This diff is collapsed.
{
"name": "simplesamlphp-module-privacyidea",
"description": "Add two factor authentication like OTP to simpleSAMLphp",
"license": "AGPL-3.0",
"private": true,
"engines": {
"node": "^14 || ^16",
"npm": "^5 || ^6"
},
"config": {
"commitizen": {
"path": "./node_modules/cz-conventional-changelog"
}
},
"devDependencies": {
"@commitlint/cli": "17.0.3",
"@commitlint/config-conventional": "17.0.3",
"@semantic-release/changelog": "6.0.1",
"@semantic-release/git": "10.0.1",
"cz-conventional-changelog": "3.3.0",
"prettier": "2.7.1",
"semantic-release": "19.0.3"
}
}
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base",
":automergeBranch",
":automergeLinters",
":automergePatch",
":automergeTesters",
":automergeTypes",
":enableVulnerabilityAlertsWithLabel(security)",
":maintainLockFilesWeekly",
":pinOnlyDevDependencies",
":prNotPending",
":rebaseStalePrs",
":semanticCommits",
":widenPeerDependencies",
"npm:unpublishSafe"
],
"pip_requirements": {
"fileMatch": ["(^|/)([\\w-]*)requirements(-[\\w]+)?\\.(txt|pip)$"]
},
"composerIgnorePlatformReqs": ["curl", "json"],
"ignoreDeps": ["npm"],
"stabilityDays": 3,
"transitiveRemediation": true
"extends": ["local>perun-proxy-aai/renovate-config"]
}