0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2024-12-16 20:26:19 -05:00

feat(schemas): add agree_to_terms_policy for sie table (#6036)

This commit is contained in:
Xiao Yijun 2024-06-18 21:47:21 +08:00 committed by GitHub
parent 3300e4fb09
commit 1bdfb4374c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 49 additions and 2 deletions

View file

@ -6,7 +6,7 @@ import type {
SignUp,
SignIn,
} from '@logto/schemas';
import { SignInMode, SignInIdentifier, MfaPolicy } from '@logto/schemas';
import { SignInMode, SignInIdentifier, MfaPolicy, AgreeToTermsPolicy } from '@logto/schemas';
export const mockColor: Color = {
primaryColor: '#000',
@ -91,6 +91,7 @@ export const mockSignInExperience: SignInExperience = {
signInMode: SignInMode.SignInAndRegister,
customCss: null,
customContent: {},
agreeToTermsPolicy: AgreeToTermsPolicy.Automatic,
passwordPolicy: {},
mfa: {
policy: MfaPolicy.UserControlled,

View file

@ -40,7 +40,7 @@ describe('sign-in-experience query', () => {
it('findDefaultSignInExperience', async () => {
/* eslint-disable sql/no-unsafe-query */
const expectSql = `
select "tenant_id", "id", "color", "branding", "language_info", "terms_of_use_url", "privacy_policy_url", "sign_in", "sign_up", "social_sign_in", "social_sign_in_connector_targets", "sign_in_mode", "custom_css", "custom_content", "password_policy", "mfa", "single_sign_on_enabled"
select "tenant_id", "id", "color", "branding", "language_info", "terms_of_use_url", "privacy_policy_url", "agree_to_terms_policy", "sign_in", "sign_up", "social_sign_in", "social_sign_in_connector_targets", "sign_in_mode", "custom_css", "custom_content", "password_policy", "mfa", "single_sign_on_enabled"
from "sign_in_experiences"
where "id"=$1
`;

View file

@ -1,5 +1,6 @@
import type { SignInExperience, SignIn, SsoConnectorMetadata } from '@logto/schemas';
import {
AgreeToTermsPolicy,
ConnectorPlatform,
ConnectorType,
MfaPolicy,
@ -104,6 +105,7 @@ export const mockSignInExperience: SignInExperience = {
signInMode: SignInMode.SignInAndRegister,
customCss: null,
customContent: {},
agreeToTermsPolicy: AgreeToTermsPolicy.Automatic,
passwordPolicy: {},
mfa: {
policy: MfaPolicy.UserControlled,
@ -136,6 +138,7 @@ export const mockSignInExperienceSettings: SignInExperienceResponse = {
},
customCss: null,
customContent: {},
agreeToTermsPolicy: AgreeToTermsPolicy.Automatic,
passwordPolicy: {},
mfa: {
policy: MfaPolicy.UserControlled,

View file

@ -0,0 +1,40 @@
import { yes } from '@silverhand/essentials';
import { sql } from '@silverhand/slonik';
import type { AlterationScript } from '../lib/types/alteration.js';
const isCi = yes(process.env.CI);
const alteration: AlterationScript = {
up: async (pool) => {
// Create type
await pool.query(sql`
create type agree_to_terms_policy as enum ('Automatic', 'ManualRegistrationOnly', 'Manual');
`);
if (isCi) {
// Direct set default to 'Automatic' to align with the sql table definition when running CI
await pool.query(sql`
alter table sign_in_experiences add column agree_to_terms_policy agree_to_terms_policy not null default 'Automatic';
`);
} else {
// For compatibility with existing data, default to 'ManualRegistrationOnly'
await pool.query(sql`
alter table sign_in_experiences add column agree_to_terms_policy agree_to_terms_policy not null default 'ManualRegistrationOnly';
`);
// For new data, default to 'Automatic'
await pool.query(sql`
alter table sign_in_experiences alter column agree_to_terms_policy set default 'Automatic';
`);
}
},
down: async (pool) => {
await pool.query(sql`
alter table sign_in_experiences drop column agree_to_terms_policy;
drop type agree_to_terms_policy;
`);
},
};
export default alteration;

View file

@ -1,4 +1,5 @@
create type sign_in_mode as enum ('SignIn', 'Register', 'SignInAndRegister');
create type agree_to_terms_policy as enum ('Automatic', 'ManualRegistrationOnly', 'Manual');
create table sign_in_experiences (
tenant_id varchar(21) not null
@ -9,6 +10,8 @@ create table sign_in_experiences (
language_info jsonb /* @use LanguageInfo */ not null,
terms_of_use_url varchar(2048),
privacy_policy_url varchar(2048),
/** The policy that determines how users agree to the terms of use and privacy policy. */
agree_to_terms_policy agree_to_terms_policy not null default 'Automatic',
sign_in jsonb /* @use SignIn */ not null,
sign_up jsonb /* @use SignUp */ not null,
social_sign_in jsonb /* @use SocialSignIn */ not null default '{}'::jsonb,