pub struct InstanceAdmin<'a> { /* private fields */ }Expand description
Instance-admin capability view over a User session.
Obtain via User::admin. See the
module docs for the rationale behind the separate type.
Implementations§
Source§impl<'a> InstanceAdmin<'a>
impl<'a> InstanceAdmin<'a>
Sourcepub async fn create_user(&self, new_user: NewUser) -> Result<String>
pub async fn create_user(&self, new_user: NewUser) -> Result<String>
Create a new user account.
Signs the _users write with this admin’s session key and authors the
new user’s database via the regular Database::create wire path. The
user-tree first-login bootstrap (root UserKey row, device-key Read
grant) is deferred to first login, where the new user is themselves
the connection session and can author both writes directly. The result
is the same one code path on local and remote instances — no
daemon-side RPC and no plaintext password on the wire.
Returns the new user’s UUID (stable internal identifier). Use
Instance::login_user to obtain a User session for the new
account; materialising it directly here would require the admin’s
connection to read the new user’s own tree over the wire, where the
session gate (correctly) rejects the admin as a non-member.
§Arguments
new_user- Username and optional password for the user to create. SeeNewUser.
Sourcepub async fn list_users(&self) -> Result<Vec<String>>
pub async fn list_users(&self) -> Result<Vec<String>>
List all user IDs.
Reads _users via the admin’s session key, so it works on both local
and remote instances.
Sourcepub async fn grant_instance_admin(&self, new_admin: &PublicKey) -> Result<()>
pub async fn grant_instance_admin(&self, new_admin: &PublicKey) -> Result<()>
Grant instance-admin to another key.
Adds new_admin as Admin(0) on the system databases that gate
instance-level admin operations (_users and _databases), with the
write signed by this admin’s own key. The first instance admin is
created automatically during instance bootstrap; this is how every
subsequent admin is promoted.
Idempotent: re-granting an existing admin re-asserts the same
Admin(0) entry.
Trait Implementations§
Auto Trait Implementations§
impl<'a> Freeze for InstanceAdmin<'a>
impl<'a> !RefUnwindSafe for InstanceAdmin<'a>
impl<'a> Send for InstanceAdmin<'a>
impl<'a> Sync for InstanceAdmin<'a>
impl<'a> Unpin for InstanceAdmin<'a>
impl<'a> UnsafeUnpin for InstanceAdmin<'a>
impl<'a> !UnwindSafe for InstanceAdmin<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CompatExt for T
impl<T> CompatExt for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more