Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
ed58b94
Added new ability to override resource query builder (#32)
dmyers Nov 25, 2022
a49bcc9
Update ResourceType.php (#35)
jon-harald Jan 4, 2023
d235efb
Make defining the schema optional in the mapping (#37)
arietimmerman Feb 8, 2023
a4d1bcf
Add Laravel x PHP matrix to Github Action (#38)
besanek Mar 2, 2023
00f8da4
Add support for Laravel 10 (#39)
besanek Mar 14, 2023
fdcb139
Changes the ID attribute to always be a string, as per spec. (#42)
uberbrady Apr 26, 2023
3519375
Add support for model factories (#49)
besanek Jul 24, 2023
df437e3
fix: set default schema on sub node in AttributeMapping (#50)
atymic Sep 30, 2023
ff01a45
introduced test for custom schema (#52)
arietimmerman Oct 3, 2023
590e3a8
Fix Azure AD SCIM emails/phoneNumbers replace operation with setRepla…
tovijaeschke Oct 17, 2023
65b46a5
updated docs
arietimmerman Nov 4, 2023
f9f48c8
Allow extending RouteProvider to customize route prefix (#54)
Nov 10, 2023
397ee69
Support for Bulk Operations (#55)
arietimmerman Nov 18, 2023
6ee3e16
fixes bulkid support (#56)
arietimmerman Nov 18, 2023
cc954cb
Enriched events (#58)
arietimmerman Dec 20, 2023
b3d7feb
Fix compatibility with PhpUnit 10 and newer (#64)
besanek Mar 22, 2024
3bf03eb
Add support for Laravel 11 (#62)
besanek Mar 22, 2024
403b1b2
Fixes endpoint /scim/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0…
juanf Jun 6, 2024
6a2b207
Fix exception not accepting code on the constructor. Fix 409 error to…
juanf Jun 6, 2024
f72963d
Simplified validation (#71)
arietimmerman Jun 26, 2024
38d4eec
Improved Schema setup and handling (#72)
arietimmerman Jul 5, 2024
18ba66b
etag by default (#73)
arietimmerman Jul 8, 2024
725b94d
Removed attribute name for groups (#77)
arietimmerman Jul 25, 2024
4f96ed5
Support for cursor pagination (#78)
arietimmerman Jul 25, 2024
084b3b0
Allow omitting null values (and enable by default) (#79)
arietimmerman Aug 16, 2024
ca08d43
get default schema fix (#80)
arietimmerman Aug 19, 2024
55a3291
fix no schema attributes in return (#81)
arietimmerman Aug 19, 2024
b813b5e
improved null check (#82)
arietimmerman Aug 22, 2024
b111b9a
Allow defaults (#83)
arietimmerman Aug 22, 2024
95eae91
Update Parser.php (#84)
SebastiaanKloos Aug 26, 2024
51ebce2
Update ListResponse.php (#85)
SebastiaanKloos Aug 26, 2024
23a2eed
filter out null values (#86)
arietimmerman Aug 27, 2024
9fefb3f
Support for add/replace of multiple attributes (#89)
arietimmerman Sep 5, 2024
2f219c4
Support for JSONCollection columns (#91)
arietimmerman Sep 16, 2024
fa60195
Ensure resource types are presented correctly in list response (#93)
arietimmerman Sep 30, 2024
47d8379
Allow not returning certain attributes (#94)
arietimmerman Oct 3, 2024
fd2dbac
ignore non existing attributes (#95)
arietimmerman Oct 10, 2024
d634f0f
Support for Querying Resources Using HTTP POST (#97)
arietimmerman Oct 30, 2024
f913bbf
Support for saving members attribute upon group create (and similar c…
arietimmerman Dec 11, 2024
a5f9fa7
Use static instead of self when calling static functions to allow eas…
miguelwicht Dec 11, 2024
376c612
Fixes error code #74 (#101)
arietimmerman Dec 12, 2024
2b77122
New version for #90 (#102)
arietimmerman Dec 12, 2024
cbc6fad
fix type of name attribute #103 (#104)
arietimmerman Dec 16, 2024
44cfc5f
Added invalidCursor error (#105)
arietimmerman Jan 10, 2025
3fd46be
Improved pagesize and max size support, especially for cusor paginati…
arietimmerman Jan 11, 2025
2054442
fixes incorrect schemaExtensions format #107 (#108)
arietimmerman Feb 6, 2025
6c31ac7
Add support for Laravel 12 (#112)
besanek Mar 19, 2025
7ece4d7
Support remove operations by specifying path with a filter (#113)
arietimmerman Mar 26, 2025
3423930
Set attribute type based on validations used, or fallback to default …
arietimmerman Apr 9, 2025
6f48690
Fix for resource types endpoint (#116)
arietimmerman Apr 22, 2025
c6d848d
Development flow improvements (#117)
arietimmerman May 20, 2025
b2f41b8
Fix for replace for extension schemas (#120)
arietimmerman Aug 23, 2025
f6f94a4
Docker image improvements (#122)
arietimmerman Aug 27, 2025
d2f3337
Workflow fix (#123)
arietimmerman Aug 27, 2025
6137477
Laravel SCIM Server logo update (#124)
arietimmerman Aug 27, 2025
f48efe7
Fix separator variable name (#121)
arietimmerman Aug 27, 2025
79056ac
Docker image updates (#125)
arietimmerman Aug 28, 2025
043f5a3
Add Docker instructions for spinning up SCIM test server
arietimmerman Aug 28, 2025
da40db7
Merge pull request #126 from limosa-io:readme-update
arietimmerman Aug 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
FROM mcr.microsoft.com/devcontainers/php:8.2

# Create Laravel test project directory in vscode user home
USER vscode
RUN mkdir -p /home/vscode/laravel-test

# Expose port 8000 for Laravel
EXPOSE 8000

# Create setup script for Laravel test environment
COPY ./setup-laravel-test.sh /usr/local/bin/setup-laravel-test.sh
USER root
RUN chmod +x /usr/local/bin/setup-laravel-test.sh
USER vscode
37 changes: 37 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/php
{
"name": "Laravel SCIM Server Dev",
// Use the Dockerfile in the .devcontainer folder
"build": {
"dockerfile": "Dockerfile",
"context": "."
},

// Configure tool-specific properties
"customizations": {
"vscode": {
"extensions": [
"bmewburn.vscode-intelephense-client",
"xdebug.php-debug",
"mikestead.dotenv",
"mehedidracula.php-namespace-resolver",
"recca0120.vscode-phpunit",
"formulahendry.terminal",
"junstyle.php-cs-fixer"
],
"settings": {
"php.validate.executablePath": "/usr/local/bin/php"
}
}
},

// Use 'forwardPorts' to make a list of ports inside the container available locally
"forwardPorts": [8000],

// Use 'postCreateCommand' to run commands after the container is created
"postCreateCommand": "composer install",

// Add a non-root user to run the server
"remoteUser": "vscode"
}
33 changes: 33 additions & 0 deletions .devcontainer/setup-laravel-test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/bash
set -e

# Create Laravel project if it doesn't exist
if [ ! -d "/home/vscode/laravel-test/vendor" ]; then
echo "Creating new Laravel project..."
cd /home/vscode
composer create-project --prefer-dist laravel/laravel laravel-test

cd laravel-test

# Add the local package as a repository
jq '.repositories=[{"type": "path","url": "/workspaces/laravel-scim-server"}]' ./composer.json > composer.json.tmp && mv composer.json.tmp composer.json

# Require the package and laravel/tinker
composer require arietimmerman/laravel-scim-server @dev
composer require laravel/tinker

# Set up SQLite database
touch ./.database.sqlite
echo "DB_CONNECTION=sqlite" >> ./.env
echo "DB_DATABASE=/home/vscode/laravel-test/.database.sqlite" >> ./.env

# Run migrations
php artisan migrate

# Create test users
echo "User::factory()->count(100)->create();" | php artisan tinker

echo "Laravel test environment setup complete!"
else
echo "Laravel test environment already exists!"
fi
72 changes: 64 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,72 @@
name: CI

on: [push]
on: ['push', 'pull_request']

permissions:
contents: read
packages: write

jobs:
build-test:
tests:
runs-on: ubuntu-latest
continue-on-error: true
strategy:
matrix:
php: [8.0, 8.1, 8.2]
laravel: [10.*, 11.*, 12.*]
exclude:
- laravel: 10.*
php: 8.0
- laravel: 11.*
php: 7.3
- laravel: 11.*
php: 7.4
- laravel: 11.*
php: 8.0
- laravel: 11.*
php: 8.1
- laravel: 12.*
php: 7.3
- laravel: 12.*
php: 7.4
- laravel: 12.*
php: 8.0
- laravel: 12.*
php: 8.1

name: PHP ${{ matrix.php }} on Laravel ${{ matrix.laravel }}

steps:
- uses: actions/checkout@v2
- uses: php-actions/composer@v6
with:
php_version: 8
- uses: php-actions/phpunit@v3
- name: Checkout code
uses: actions/checkout@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php_version: 8
php-version: ${{ matrix.php }}
- name: Install dependencies
run: |
composer require "illuminate/console:${{ matrix.laravel }}" "illuminate/database:${{ matrix.laravel }}" "illuminate/support:${{ matrix.laravel }}" --no-interaction --no-update
composer update
- name: Run tests
run: vendor/bin/phpunit

docker:
# Only push Docker image for direct pushes to master branch
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
runs-on: ubuntu-latest
needs: tests
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ghcr.io/${{ github.repository }}:latest
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
vendor
.phpunit.result.cache
49 changes: 49 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [

{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9000
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 0,
"runtimeArgs": [
"-dxdebug.start_with_request=yes"
],
"env": {
"XDEBUG_MODE": "debug,develop",
"XDEBUG_CONFIG": "client_port=${port}"
}
},
{
"name": "Launch Built-in web server",
"type": "php",
"request": "launch",
"runtimeArgs": [
"-dxdebug.mode=debug",
"-dxdebug.start_with_request=yes",
"-S",
"localhost:0"
],
"program": "",
"cwd": "${workspaceRoot}",
"port": 9003,
"serverReadyAction": {
"pattern": "Development Server \\(http://localhost:([0-9]+)\\) started",
"uriFormat": "http://localhost:%s",
"action": "openExternally"
}
}
]
}
12 changes: 12 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"php.validate.enable": true,
"php.validate.run": "onType",
"php.validate.executablePath": "/usr/local/bin/php",
"php-cs-fixer.executablePath": "/workspaces/laravel-scim-server/vendor/bin/php-cs-fixer",
"files.associations": {
"*.php": "php"
},
"[php]": {
"editor.formatOnSave": true
}
}
35 changes: 35 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Setup Laravel SCIM Test Server",
"type": "shell",
"command": "setup-laravel-test.sh",
"problemMatcher": [],
"presentation": {
"reveal": "always",
"panel": "new"
},
"group": "test"
},
{
"label": "Start Laravel SCIM Test Server",
"type": "shell",
"command": "export XDEBUG_MODE=debug,develop && cd /home/vscode/laravel-test && COMPOSER_AUTOLOAD_DEV=1 composer dump-autoload && php artisan serve --host=0.0.0.0 --port=8000",
"dependsOn": "Setup Laravel SCIM Test Server",
"problemMatcher": [],
"presentation": {
"reveal": "always",
"panel": "dedicated"
},
"group": "test"
},
{
"label": "Open SCIM Server in Browser",
"type": "shell",
"command": "$BROWSER http://localhost:8000/scim/v2/Users",
"problemMatcher": [],
"group": "test"
}
]
}
Loading