mirror of
https://github.com/logto-io/logto.git
synced 2025-04-14 23:11:31 -05:00
feat(schemas): add captcha policy field (#7106)
This commit is contained in:
parent
45b58d369a
commit
b0b21cc047
7 changed files with 36 additions and 1 deletions
|
@ -103,4 +103,5 @@ export const mockSignInExperience: SignInExperience = {
|
|||
supportEmail: null,
|
||||
supportWebsiteUrl: null,
|
||||
unknownSessionRedirectUrl: null,
|
||||
captchaPolicy: {},
|
||||
};
|
||||
|
|
|
@ -36,12 +36,13 @@ describe('sign-in-experience query', () => {
|
|||
passwordPolicy: JSON.stringify(mockSignInExperience.passwordPolicy),
|
||||
mfa: JSON.stringify(mockSignInExperience.mfa),
|
||||
socialSignIn: JSON.stringify(mockSignInExperience.socialSignIn),
|
||||
captchaPolicy: JSON.stringify(mockSignInExperience.captchaPolicy),
|
||||
};
|
||||
|
||||
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", "agree_to_terms_policy", "sign_in", "sign_up", "social_sign_in", "social_sign_in_connector_targets", "sign_in_mode", "custom_css", "custom_content", "custom_ui_assets", "password_policy", "mfa", "single_sign_on_enabled", "support_email", "support_website_url", "unknown_session_redirect_url"
|
||||
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", "custom_ui_assets", "password_policy", "mfa", "single_sign_on_enabled", "support_email", "support_website_url", "unknown_session_redirect_url", "captcha_policy"
|
||||
from "sign_in_experiences"
|
||||
where "id"=$1
|
||||
`;
|
||||
|
|
|
@ -117,6 +117,7 @@ export const mockSignInExperience: SignInExperience = {
|
|||
supportEmail: null,
|
||||
supportWebsiteUrl: null,
|
||||
unknownSessionRedirectUrl: null,
|
||||
captchaPolicy: {},
|
||||
};
|
||||
|
||||
export const mockSignInExperienceSettings: SignInExperienceResponse = {
|
||||
|
@ -155,6 +156,7 @@ export const mockSignInExperienceSettings: SignInExperienceResponse = {
|
|||
supportEmail: null,
|
||||
supportWebsiteUrl: null,
|
||||
unknownSessionRedirectUrl: null,
|
||||
captchaPolicy: {},
|
||||
};
|
||||
|
||||
const usernameSettings = {
|
||||
|
|
|
@ -117,6 +117,7 @@ export const mockSignInExperience: SignInExperience = {
|
|||
supportEmail: null,
|
||||
supportWebsiteUrl: null,
|
||||
unknownSessionRedirectUrl: null,
|
||||
captchaPolicy: {},
|
||||
};
|
||||
|
||||
export const mockSignInExperienceSettings: SignInExperienceResponse = {
|
||||
|
@ -155,6 +156,7 @@ export const mockSignInExperienceSettings: SignInExperienceResponse = {
|
|||
supportEmail: null,
|
||||
supportWebsiteUrl: null,
|
||||
unknownSessionRedirectUrl: null,
|
||||
captchaPolicy: {},
|
||||
};
|
||||
|
||||
const usernameSettings = {
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
import { sql } from '@silverhand/slonik';
|
||||
|
||||
import type { AlterationScript } from '../lib/types/alteration.js';
|
||||
|
||||
const alteration: AlterationScript = {
|
||||
up: async (pool) => {
|
||||
await pool.query(sql`
|
||||
alter table sign_in_experiences
|
||||
add column captcha_policy jsonb not null default '{}'::jsonb;
|
||||
`);
|
||||
},
|
||||
down: async (pool) => {
|
||||
await pool.query(sql`
|
||||
alter table sign_in_experiences
|
||||
drop column captcha_policy;
|
||||
`);
|
||||
},
|
||||
};
|
||||
|
||||
export default alteration;
|
|
@ -160,3 +160,11 @@ export const customUiAssetsGuard = z.object({
|
|||
});
|
||||
|
||||
export type CustomUiAssets = z.infer<typeof customUiAssetsGuard>;
|
||||
|
||||
export const captchaPolicyGuard = z.object({
|
||||
signIn: z.boolean().optional(),
|
||||
signUp: z.boolean().optional(),
|
||||
forgotPassword: z.boolean().optional(),
|
||||
});
|
||||
|
||||
export type CaptchaPolicy = z.infer<typeof captchaPolicyGuard>;
|
||||
|
|
|
@ -26,5 +26,6 @@ create table sign_in_experiences (
|
|||
support_email text,
|
||||
support_website_url text,
|
||||
unknown_session_redirect_url text,
|
||||
captcha_policy jsonb /* @use CaptchaPolicy */ not null default '{}'::jsonb,
|
||||
primary key (tenant_id, id)
|
||||
);
|
||||
|
|
Loading…
Add table
Reference in a new issue