feat(sso): allow to use OIDC and SAML (#7246)
## What it does ### Backend - [x] Add a mutation to create OIDC and SAML configuration - [x] Add a mutation to delete an SSO config - [x] Add a feature flag to toggle SSO - [x] Add a mutation to activate/deactivate an SSO config - [x] Add a mutation to delete an SSO config - [x] Add strategy to use OIDC or SAML - [ ] Improve error management ### Frontend - [x] Add section "security" in settings - [x] Add page to list SSO configurations - [x] Add page and forms to create OIDC or SAML configuration - [x] Add field to "connect with SSO" in the signin/signup process - [x] Trigger auth when a user switch to a workspace with SSO enable - [x] Add an option on the security page to activate/deactivate the global invitation link - [ ] Add new Icons for SSO Identity Providers (okta, Auth0, Azure, Microsoft) --------- Co-authored-by: Félix Malfait <felix@twenty.com> Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@ -2,12 +2,15 @@ import { ValidationPipe } from '@nestjs/common';
|
||||
import { NestFactory } from '@nestjs/core';
|
||||
import { NestExpressApplication } from '@nestjs/platform-express';
|
||||
|
||||
import session from 'express-session';
|
||||
import bytes from 'bytes';
|
||||
import { useContainer } from 'class-validator';
|
||||
import { graphqlUploadExpress } from 'graphql-upload';
|
||||
|
||||
import { LoggerService } from 'src/engine/core-modules/logger/logger.service';
|
||||
import { ApplyCorsToExceptions } from 'src/utils/apply-cors-to-exceptions';
|
||||
import { getSessionStorageOptions } from 'src/engine/core-modules/session-storage/session-storage.module-factory';
|
||||
import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
|
||||
|
||||
import { AppModule } from './app.module';
|
||||
import './instrument';
|
||||
@ -23,6 +26,7 @@ const bootstrap = async () => {
|
||||
snapshot: process.env.DEBUG_MODE === 'true',
|
||||
});
|
||||
const logger = app.get(LoggerService);
|
||||
const environmentService = app.get(EnvironmentService);
|
||||
|
||||
// TODO: Double check this as it's not working for now, it's going to be heplful for durable trees in twenty "orm"
|
||||
// // Apply context id strategy for durable trees
|
||||
@ -59,6 +63,11 @@ const bootstrap = async () => {
|
||||
// Create the env-config.js of the front at runtime
|
||||
generateFrontConfig();
|
||||
|
||||
// Enable session - Today it's used only for SSO
|
||||
if (environmentService.get('AUTH_SSO_ENABLED')) {
|
||||
app.use(session(getSessionStorageOptions(environmentService)));
|
||||
}
|
||||
|
||||
await app.listen(process.env.PORT ?? 3000);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user