1use serde::{Deserialize, Serialize};
4use serde_repr::{Deserialize_repr, Serialize_repr};
5#[cfg(feature = "wasm")]
6use tsify::Tsify;
7#[cfg(feature = "wasm")]
8use wasm_bindgen::prelude::wasm_bindgen;
9
10use crate::{MasterPasswordPolicyResponse, policies::*, policy::ErasedPolicy};
11
12#[derive(PartialEq, Eq, Hash, Serialize_repr, Deserialize_repr, Debug, Copy, Clone)]
16#[cfg_attr(feature = "uniffi", derive(uniffi::Enum))]
17#[cfg_attr(feature = "wasm", wasm_bindgen)]
18#[repr(u8)]
19pub enum PolicyType {
20 TwoFactorAuthentication = 0,
22 MasterPassword = 1,
24 PasswordGenerator = 2,
26 SingleOrg = 3,
28 RequireSso = 4,
30 OrganizationDataOwnership = 5,
33 DisableSend = 6,
38 SendOptions = 7,
43 ResetPassword = 8,
45 MaximumVaultTimeout = 9,
47 DisablePersonalVaultExport = 10,
49 ActivateAutofill = 11,
51 AutomaticAppLogIn = 12,
53 FreeFamiliesSponsorship = 13,
55 RemoveUnlockWithPin = 14,
57 RestrictedItemTypes = 15,
59 UriMatchDefaults = 16,
61 AutotypeDefaultSetting = 17,
63 AutomaticUserConfirmation = 18,
65 BlockClaimedDomainAccountCreation = 19,
67 OrganizationUserNotification = 20,
69 SendControls = 21,
75 FillAssist = 22,
79}
80
81impl PolicyType {
82 pub(crate) fn resolve_policy(self) -> Box<dyn ErasedPolicy> {
86 match self {
87 PolicyType::TwoFactorAuthentication => Box::new(TwoFactorAuthenticationPolicy),
88 PolicyType::MasterPassword => Box::new(MasterPasswordPolicy),
89 PolicyType::PasswordGenerator => Box::new(PasswordGeneratorPolicy),
90 PolicyType::SingleOrg => Box::new(SingleOrgPolicy),
91 PolicyType::RequireSso => Box::new(RequireSsoPolicy),
92 PolicyType::OrganizationDataOwnership => Box::new(OrganizationDataOwnershipPolicy),
93 PolicyType::DisableSend => Box::new(DisableSendPolicy),
94 PolicyType::SendOptions => Box::new(SendOptionsPolicy),
95 PolicyType::ResetPassword => Box::new(ResetPasswordPolicy),
96 PolicyType::MaximumVaultTimeout => Box::new(MaximumVaultTimeoutPolicy),
97 PolicyType::DisablePersonalVaultExport => Box::new(DisablePersonalVaultExportPolicy),
98 PolicyType::ActivateAutofill => Box::new(ActivateAutofillPolicy),
99 PolicyType::AutomaticAppLogIn => Box::new(AutomaticAppLogInPolicy),
100 PolicyType::FreeFamiliesSponsorship => Box::new(FreeFamiliesSponsorshipPolicy),
101 PolicyType::RemoveUnlockWithPin => Box::new(RemoveUnlockWithPinPolicy),
102 PolicyType::RestrictedItemTypes => Box::new(RestrictedItemTypesPolicy),
103 PolicyType::UriMatchDefaults => Box::new(UriMatchDefaultsPolicy),
104 PolicyType::AutotypeDefaultSetting => Box::new(AutotypeDefaultSettingPolicy),
105 PolicyType::AutomaticUserConfirmation => Box::new(AutomaticUserConfirmationPolicy),
106 PolicyType::BlockClaimedDomainAccountCreation => {
107 Box::new(BlockClaimedDomainAccountCreationPolicy)
108 }
109 PolicyType::OrganizationUserNotification => {
110 Box::new(OrganizationUserNotificationPolicy)
111 }
112 PolicyType::SendControls => Box::new(SendControlsPolicy),
113 PolicyType::FillAssist => Box::new(FillAssistPolicy),
114 }
115 }
116}
117
118#[allow(missing_docs)]
128#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
129#[serde(rename_all = "camelCase", tag = "type")]
130#[cfg_attr(feature = "uniffi", derive(uniffi::Enum))]
131#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
132pub enum PolicyDataType {
133 TwoFactorAuthentication,
134 MasterPassword(MasterPasswordPolicyResponse),
135 PasswordGenerator,
136 SingleOrg,
137 RequireSso,
138 OrganizationDataOwnership,
139 DisableSend,
140 SendOptions,
141 ResetPassword,
142 MaximumVaultTimeout,
143 DisablePersonalVaultExport,
144 ActivateAutofill,
145 AutomaticAppLogIn,
146 FreeFamiliesSponsorship,
147 RemoveUnlockWithPin,
148 RestrictedItemTypes,
149 UriMatchDefaults,
150 AutotypeDefaultSetting,
151 AutomaticUserConfirmation,
152 BlockClaimedDomainAccountCreation,
153 OrganizationUserNotification,
154 SendControls,
155 FillAssist,
156}