mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-18 13:35:42 +09:00
fix(guild): treat very high as high without phone verification (#3095)
This commit is contained in:
1 parent
d691047884
commit
2df82b2b5e
28 files changed
+289
-18
No files matched your search
@@ -1,12 +1,14 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createUserID} from '@app/api/BrandedTypes';
|
||||
import {Config} from '@app/api/Config';
|
||||
import {User} from '@app/api/models/User';
|
||||
import {checkGuildVerificationWithResponse} from '@app/api/utils/GuildVerificationUtils';
|
||||
import {GuildFeatures, GuildVerificationLevel} from '@fluxer/constants/src/GuildConstants';
|
||||
import {ProfileFieldPrivacyFlags} from '@fluxer/constants/src/UserConstants';
|
||||
import {GuildEmailVerificationRequiredError} from '@fluxer/errors/src/domains/auth/EmailVerificationRequiredError';
|
||||
import {GuildPhoneVerificationRequiredError} from '@fluxer/errors/src/domains/auth/GuildPhoneVerificationRequiredError';
|
||||
import {GuildVerificationRequiredError} from '@fluxer/errors/src/domains/guild/GuildVerificationRequiredError';
|
||||
import type {GuildMemberResponse} from '@fluxer/schema/src/domains/guild/GuildMemberSchemas';
|
||||
import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import {describe, expect, it} from 'vitest';
|
||||
@@ -178,4 +180,28 @@ describe('GuildVerificationUtils', () => {
|
||||
}),
|
||||
).toThrow(GuildPhoneVerificationRequiredError);
|
||||
});
|
||||
it('treats very high as high when phone verification is unavailable', () => {
|
||||
const saved = Config.instance.phoneVerificationEnabled;
|
||||
Config.instance.phoneVerificationEnabled = false;
|
||||
try {
|
||||
const guild = createGuildResponse([]);
|
||||
guild.verification_level = GuildVerificationLevel.VERY_HIGH;
|
||||
expect(() =>
|
||||
checkGuildVerificationWithResponse({
|
||||
user: createUser({emailVerified: true, hasVerifiedPhone: false}),
|
||||
guild,
|
||||
member,
|
||||
}),
|
||||
).not.toThrow();
|
||||
expect(() =>
|
||||
checkGuildVerificationWithResponse({
|
||||
user: createUser({emailVerified: true, hasVerifiedPhone: false}),
|
||||
guild,
|
||||
member: createMemberResponse(new Date().toISOString()),
|
||||
}),
|
||||
).toThrow(GuildVerificationRequiredError);
|
||||
} finally {
|
||||
Config.instance.phoneVerificationEnabled = saved;
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -1,6 +1,7 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createRoleIDSet, createUserID, type RoleID, type UserID} from '@app/api/BrandedTypes';
|
||||
import {Config} from '@app/api/Config';
|
||||
import type {Guild} from '@app/api/models/Guild';
|
||||
import type {GuildMember} from '@app/api/models/GuildMember';
|
||||
import type {User} from '@app/api/models/User';
|
||||
@@ -90,6 +91,7 @@ export function checkGuildVerificationWithGuildModel({
|
||||
verificationLevel: getEffectiveGuildVerificationLevel(
|
||||
guild.verificationLevel ?? GuildVerificationLevel.NONE,
|
||||
guild.features.has(GuildFeatures.DISCOVERABLE),
|
||||
Config.instance.phoneVerificationEnabled,
|
||||
),
|
||||
memberJoinedAt: member.joinedAt,
|
||||
memberRoles: member.roleIds,
|
||||
@@ -115,6 +117,7 @@ export function checkGuildVerificationWithResponse({
|
||||
verificationLevel: getEffectiveGuildVerificationLevel(
|
||||
guild.verification_level ?? GuildVerificationLevel.NONE,
|
||||
(guild.features ?? []).includes(GuildFeatures.DISCOVERABLE),
|
||||
Config.instance.phoneVerificationEnabled,
|
||||
),
|
||||
memberJoinedAt: member.joined_at,
|
||||
memberRoles: createRoleIDSet(new Set(member.roles.map((roleId) => BigInt(roleId)))),
|
||||
|
||||
Reference in new issue
Block a user