settings: Add function to check permission for anonymous setting group.

This commit is contained in:
Sahil Batra
2024-08-28 19:52:27 +05:30
committed by Tim Abbott
parent ffeb542b22
commit f3fafc719f
3 changed files with 51 additions and 1 deletions

View File

@@ -7,7 +7,7 @@ import * as group_permission_settings from "./group_permission_settings";
import {$t} from "./i18n";
import {page_params} from "./page_params";
import * as settings_config from "./settings_config";
import type {StateData, user_group_schema} from "./state_data";
import type {GroupSettingType, StateData, user_group_schema} from "./state_data";
import {current_user} from "./state_data";
import type {UserOrMention} from "./typeahead_helper";
import type {UserGroupUpdateEvent} from "./types";
@@ -286,6 +286,28 @@ export function is_user_in_group(user_group_id: number, user_id: number): boolea
return false;
}
export function is_user_in_setting_group(
setting_group: GroupSettingType,
user_id: number,
): boolean {
if (typeof setting_group === "number") {
return is_user_in_group(setting_group, user_id);
}
const direct_members = setting_group.direct_members;
if (direct_members.includes(user_id)) {
return true;
}
const direct_subgroups = setting_group.direct_subgroups;
for (const direct_subgroup_id of direct_subgroups) {
if (is_user_in_group(direct_subgroup_id, user_id)) {
return true;
}
}
return false;
}
function get_display_name_for_system_group_option(setting_name: string, name: string): string {
// We use a special label for the "Nobody" system group for clarity.
if (setting_name === "direct_message_permission_group" && name === "Nobody") {