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
Collaborator

@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 "resolvers" 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.

@skydudie
Copy link

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

Same here! Is there anything you need help with?

@breart
Copy link
Collaborator Author

breart commented Sep 13, 2024

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.

Good point. My intention was to support slightly older versions since I'm aware this project is also used on bigger projects with older versions of Laravel & PHP. I like the idea of deprecating further, starting from L9 & PHP 8.0.

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.

6 participants