Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[3.x] New major release #88

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from
Draft

[3.x] New major release #88

wants to merge 5 commits into from

Conversation

breart
Copy link
Member

@breart breart commented Apr 13, 2024

This is a draft PR for the next major release. The goal is to improve the design of the solution, giving developers more control and flexibility, as well as providing more basic functionality "out-of-the-box".

Plans

  • Add custom resolves for more control over identity provider resolution, config resolution, etc.
  • Add optional solution for logging in users
  • Add a morph relation to associate IdP with related application entities (successor of "key")
  • Add a new table for tracking SAML logins
  • Rewrite tests so they actually test stuff
  • Add support for multiple certificates
  • Improve console commands
  • Improve README
  • Describe upgrade guide

Key changes

  • Minimum PHP version — 7.3
  • Minimum Laravel version — 8

Database changes

  • Table saml2_tenants has been renamed to saml2_identity_providers
  • Table saml2_identity_providers now has an optional morph relation called "tenant" that can be associated with an application entity upon IdP creation
  • Table saml2_sessions has been added to track all logins (see Login & Tracking below)

Custom resolvers

  • Added "resolves" that can be easily customised:
    • IdentityProviderResolver implements logic for resolving identity provider based on the request route
    • ConfigResolver implements logic for resolving IdP/SP config based on the resolved IdP model

Login & Tracking

To provide basic functionality out of the box for smaller application, authorization logic has been implemented, specifically:

  1. User metadata resolution
  2. Login/signup functionality

This is not designed for production needs, just an example on how login/signup can be implemented. For larger apps having custom logic is inevitable.

@fedeisas
Copy link

fedeisas commented May 6, 2024

@breart I'm interested in this PR. Is there anything I can do to help? Thanks!

@kasperhartwich
Copy link

Nice PR.
But why not abandon all non-supported Laravel versions?
Laravel 8 is from 2020 and php 7.3 from 2018. Both unsupported and not getting security fixes.
At the moment Laravel 10 and php 8.1 is the minimum versions still being maintained.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants