pub struct QueryServerWriteTransaction<'a> { /* private fields */ }

Implementations§

source§

impl<'a> QueryServerWriteTransaction<'a>

source

pub fn consumer_apply_changes(&mut self) -> Result<(), OperationError>

source

pub fn consumer_apply_refresh( &mut self, ctx: &ReplRefreshContext ) -> Result<(), OperationError>

source§

impl<'a> QueryServerWriteTransaction<'a>

source

pub fn batch_modify( &mut self, me: &BatchModifyEvent ) -> Result<(), OperationError>

This function behaves different to modify. Modify applies the same modification operation en-mass to 1 -> N entries. This takes a set of modifications that define a precise entry to apply a change to and only modifies that.

modify is for all entries matching this condition, do this change.

batch_modify is for entry X apply mod A, for entry Y apply mod B etc. It allows you to do per-entry mods.

The drawback is you need to know ahead of time what uuids you are affecting. This has parallels to scim, so it’s not a significant issue.

Otherwise, we follow the same pattern here as modify, and inside the transform the same modlists are used.

source

pub fn internal_batch_modify( &mut self, mods_iter: impl Iterator<Item = (Uuid, ModifyList<ModifyInvalid>)> ) -> Result<(), OperationError>

source§

impl<'a> QueryServerWriteTransaction<'a>

source

pub fn create(&mut self, ce: &CreateEvent) -> Result<(), OperationError>

source

pub fn internal_create( &mut self, entries: Vec<Entry<EntryInit, EntryNew>> ) -> Result<(), OperationError>

source§

impl<'a> QueryServerWriteTransaction<'a>

source

pub fn delete(&mut self, de: &DeleteEvent) -> Result<(), OperationError>

source

pub fn internal_delete( &mut self, filter: &Filter<FilterInvalid> ) -> Result<(), OperationError>

source

pub fn internal_delete_uuid( &mut self, target_uuid: Uuid ) -> Result<(), OperationError>

source

pub fn internal_delete_uuid_if_exists( &mut self, target_uuid: Uuid ) -> Result<(), OperationError>

source§

impl<'a> QueryServerWriteTransaction<'a>

source

pub fn internal_migrate_or_create_str( &mut self, e_str: &str ) -> Result<(), OperationError>

source

pub fn internal_migrate_or_create( &mut self, e: Entry<EntryInit, EntryNew> ) -> Result<(), OperationError>

source

pub fn migrate_8_to_9(&mut self) -> Result<(), OperationError>

Migrate 8 to 9

This migration updates properties of oauth2 relying server properties. First, it changes the former basic value to a secret utf8string.

The second change improves the current scope system to remove the implicit scope type.

source

pub fn migrate_9_to_10(&mut self) -> Result<(), OperationError>

Migrate 9 to 10

This forces a load and rewrite of all credentials stored on all accounts so that they are updated to new on-disk formats. This will allow us to purge some older on disk formats in a future version.

An extended feature of this is the ability to store multiple TOTP’s per entry.

source

pub fn migrate_10_to_11(&mut self) -> Result<(), OperationError>

Migrate 10 to 11

This forces a load of all credentials, and then examines if any are “passkey” capable. If they are, they are migrated to the passkey type, allowing us to deprecate and remove the older credential behaviour.

source

pub fn migrate_11_to_12(&mut self) -> Result<(), OperationError>

Migrate 11 to 12

Rewrite api-tokens from session to a dedicated api token type.

source

pub fn initialise_schema_core(&mut self) -> Result<(), OperationError>

source

pub fn initialise_schema_idm(&mut self) -> Result<(), OperationError>

source

pub fn initialise_idm(&mut self) -> Result<(), OperationError>

source§

impl<'a> QueryServerWriteTransaction<'a>

source

pub fn modify(&mut self, me: &ModifyEvent) -> Result<(), OperationError>

source§

impl<'a> QueryServerWriteTransaction<'a>

source

pub fn internal_modify( &mut self, filter: &Filter<FilterInvalid>, modlist: &ModifyList<ModifyInvalid> ) -> Result<(), OperationError>

source

pub fn internal_modify_uuid( &mut self, target_uuid: Uuid, modlist: &ModifyList<ModifyInvalid> ) -> Result<(), OperationError>

source

pub fn impersonate_modify_valid( &mut self, f_valid: Filter<FilterValid>, f_intent_valid: Filter<FilterValid>, m_valid: ModifyList<ModifyValid>, event: &Identity ) -> Result<(), OperationError>

source

pub fn impersonate_modify( &mut self, filter: &Filter<FilterInvalid>, filter_intent: &Filter<FilterInvalid>, modlist: &ModifyList<ModifyInvalid>, event: &Identity ) -> Result<(), OperationError>

source

pub fn impersonate_modify_gen_event( &mut self, filter: &Filter<FilterInvalid>, filter_intent: &Filter<FilterInvalid>, modlist: &ModifyList<ModifyInvalid>, event: &Identity ) -> Result<ModifyEvent, OperationError>

source§

impl<'a> QueryServerWriteTransaction<'a>

source§

impl<'a> QueryServerWriteTransaction<'a>

source

pub fn set_domain_display_name( &mut self, new_domain_name: &str ) -> Result<(), OperationError>

Initiate a domain display name change process. This isn’t particularly scary because it’s just a wibbly human-facing thing, not used for secure activities (yet)

source

pub fn domain_rename( &mut self, new_domain_name: &str ) -> Result<(), OperationError>

Initiate a domain rename process. This is generally an internal function but it’s exposed to the cli for admins to be able to initiate the process.

source

pub fn reindex(&mut self) -> Result<(), OperationError>

source

pub fn get_changed_uuids(&self) -> &HashSet<Uuid>

source

pub fn get_changed_ouath2(&self) -> bool

source

pub fn get_changed_domain(&self) -> bool

source

pub fn commit(self) -> Result<(), OperationError>

Trait Implementations§

source§

impl<'a> QueryServerTransaction<'a> for QueryServerWriteTransaction<'a>

source§

fn get_domain_name(&self) -> &str

Gets the in-memory domain_name element

§

type AccessControlsTransactionType = AccessControlsWriteTransaction<'a>

§

type BackendTransactionType = BackendWriteTransaction<'a>

§

type SchemaTransactionType = SchemaWriteTransaction<'a>

source§

fn get_be_txn(&mut self) -> &mut BackendWriteTransaction<'a>

source§

fn get_schema<'b>(&self) -> &'b SchemaWriteTransaction<'a>

source§

fn get_accesscontrols(&self) -> &AccessControlsWriteTransaction<'a>

source§

fn get_resolve_filter_cache( &mut self ) -> &mut ARCacheReadTxn<'a, (IdentityId, Filter<FilterValid>), Filter<FilterValidResolved>, ()>

source§

fn get_resolve_filter_cache_and_be_txn( &mut self ) -> (&mut BackendWriteTransaction<'a>, &mut ARCacheReadTxn<'a, (IdentityId, Filter<FilterValid>), Filter<FilterValidResolved>, ()>)

source§

fn get_domain_uuid(&self) -> Uuid

source§

fn get_domain_display_name(&self) -> &str

source§

fn search_ext( &mut self, se: &SearchEvent ) -> Result<Vec<Entry<EntryReduced, EntryCommitted>>, OperationError>

Conduct a search and apply access controls to yield a set of entries that have been reduced to the set of user visible avas. Note that if you provide a SearchEvent for the internal user, this query will fail. It is invalid for the access module to attempt to reduce avas for internal searches, and you should use fn search instead.
source§

fn search( &mut self, se: &SearchEvent ) -> Result<Vec<Arc<EntrySealedCommitted>>, OperationError>

source§

fn exists(&mut self, ee: &ExistsEvent) -> Result<bool, OperationError>

source§

fn name_to_uuid(&mut self, name: &str) -> Result<Uuid, OperationError>

source§

fn sync_external_id_to_uuid( &mut self, external_id: &str ) -> Result<Option<Uuid>, OperationError>

source§

fn uuid_to_spn(&mut self, uuid: Uuid) -> Result<Option<Value>, OperationError>

source§

fn uuid_to_rdn(&mut self, uuid: Uuid) -> Result<String, OperationError>

source§

fn internal_exists( &mut self, filter: Filter<FilterInvalid> ) -> Result<bool, OperationError>

From internal, generate an “exists” event and dispatch
source§

fn impersonate_search_valid( &mut self, f_valid: Filter<FilterValid>, f_intent_valid: Filter<FilterValid>, event: &Identity ) -> Result<Vec<Arc<EntrySealedCommitted>>, OperationError>

source§

fn impersonate_search_ext_valid( &mut self, f_valid: Filter<FilterValid>, f_intent_valid: Filter<FilterValid>, event: &Identity ) -> Result<Vec<Entry<EntryReduced, EntryCommitted>>, OperationError>

Applies ACP to filter result entries.
source§

fn impersonate_search_ext( &mut self, filter: Filter<FilterInvalid>, filter_intent: Filter<FilterInvalid>, event: &Identity ) -> Result<Vec<Entry<EntryReduced, EntryCommitted>>, OperationError>

source§

fn internal_search_uuid( &mut self, uuid: Uuid ) -> Result<Arc<EntrySealedCommitted>, OperationError>

Get a single entry by its UUID. This is used heavily for internal server operations, especially in login and ACP checks.
source§

fn impersonate_search_ext_uuid( &mut self, uuid: Uuid, event: &Identity ) -> Result<Entry<EntryReduced, EntryCommitted>, OperationError>

source§

fn impersonate_search_uuid( &mut self, uuid: Uuid, event: &Identity ) -> Result<Arc<EntrySealedCommitted>, OperationError>

source§

fn clone_value( &mut self, attr: &str, value: &str ) -> Result<Value, OperationError>

Do a schema aware conversion from a String:String to String:Value for modification present.
source§

fn clone_partialvalue( &mut self, attr: &str, value: &str ) -> Result<PartialValue, OperationError>

source§

fn resolve_valueset( &mut self, value: &ValueSet ) -> Result<Vec<String>, OperationError>

source§

fn resolve_valueset_ldap( &mut self, value: &ValueSet, basedn: &str ) -> Result<Vec<Vec<u8>>, OperationError>

source§

fn get_db_domain_name(&mut self) -> Result<String, OperationError>

Pull the domain name from the database
source§

fn get_domain_fernet_private_key(&mut self) -> Result<String, OperationError>

source§

fn get_domain_es256_private_key(&mut self) -> Result<Vec<u8>, OperationError>

source§

fn get_password_badlist(&mut self) -> Result<HashSet<String>, OperationError>

source§

fn get_oauth2rs_set( &mut self ) -> Result<Vec<Arc<EntrySealedCommitted>>, OperationError>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T> AsTaggedExplicit<'a> for Twhere T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self>

§

impl<'a, T> AsTaggedImplicit<'a> for Twhere T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32 ) -> TaggedParser<'a, Implicit, Self>

source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more