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:
parent
3300e4fb09
commit
1bdfb4374c
5 changed files with 49 additions and 2 deletions
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
`;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue