pub struct LoginClient {
pub(crate) client: Client,
}Expand description
Client for authenticating Bitwarden users.
Handles unauthenticated operations to obtain access tokens from the Identity API. After successful authentication, use the returned tokens to create an authenticated core client.
§Lifecycle
- Create
LoginClientviaAuthClient - Call login method
- Use returned tokens with authenticated core client
§Password Login Example
// Create auth client
let client = Client::new(None);
let auth_client = AuthClient::new(client);
// Configure client settings and create login client
let settings = ClientSettings {
identity_url: "https://identity.bitwarden.com".to_string(),
api_url: "https://api.bitwarden.com".to_string(),
user_agent: "MyApp/1.0".to_string(),
device_type: DeviceType::SDK,
device_identifier: None,
bitwarden_client_version: None,
bitwarden_package_type: None,
};
let login_client = auth_client.login(settings);
// Get user's KDF config
let prelogin = login_client.get_password_prelogin(email.clone()).await?;
// Login with credentials
let response = login_client.login_via_password(PasswordLoginRequest {
login_request: LoginRequest {
client_id: "connector".to_string(),
device: LoginDeviceRequest {
device_type: DeviceType::SDK,
device_identifier: "device-id".to_string(),
device_name: "My Device".to_string(),
device_push_token: None,
},
},
email,
password,
prelogin_response: prelogin,
}).await?;
// Use tokens from response for authenticated requests
match response {
LoginResponse::Authenticated(success) => {
let access_token = success.access_token;
// Use access_token for authenticated requests
}
}Fields§
§client: ClientImplementations§
Source§impl LoginClient
impl LoginClient
Sourcepub(crate) fn new(settings: ClientSettings) -> Self
pub(crate) fn new(settings: ClientSettings) -> Self
Creates a new LoginClient with the given client settings.
§Note
This method is pub(crate) because LoginClient instances should be obtained through
the AuthClient. Direct instantiation is internal to the crate.
Source§impl LoginClient
impl LoginClient
Sourcepub async fn login_via_password(
&self,
request: PasswordLoginRequest,
) -> Result<LoginResponse, PasswordLoginError>
pub async fn login_via_password( &self, request: PasswordLoginRequest, ) -> Result<LoginResponse, PasswordLoginError>
Authenticates a user via email and master password.
Derives the master password hash using KDF settings from prelogin, then sends the authentication request to obtain access tokens and vault keys.
Source§impl LoginClient
impl LoginClient
Sourcepub async fn get_password_prelogin(
&self,
email: String,
) -> Result<PasswordPreloginResponse, PasswordPreloginError>
pub async fn get_password_prelogin( &self, email: String, ) -> Result<PasswordPreloginResponse, PasswordPreloginError>
Retrieves the data required before authenticating with a password. This includes the user’s KDF configuration needed to properly derive the master key.
Trait Implementations§
Source§impl From<LoginClient> for JsValue
impl From<LoginClient> for JsValue
Source§fn from(value: LoginClient) -> Self
fn from(value: LoginClient) -> Self
Source§impl FromWasmAbi for LoginClient
impl FromWasmAbi for LoginClient
Source§impl IntoWasmAbi for LoginClient
impl IntoWasmAbi for LoginClient
Source§impl LongRefFromWasmAbi for LoginClient
impl LongRefFromWasmAbi for LoginClient
Source§impl OptionFromWasmAbi for LoginClient
impl OptionFromWasmAbi for LoginClient
Source§impl OptionIntoWasmAbi for LoginClient
impl OptionIntoWasmAbi for LoginClient
Source§impl RefFromWasmAbi for LoginClient
impl RefFromWasmAbi for LoginClient
Source§type Anchor = RcRef<LoginClient>
type Anchor = RcRef<LoginClient>
Self for the duration of the
invocation of the function that has an &Self parameter. This is
required to ensure that the lifetimes don’t persist beyond one function
call, and so that they remain anonymous.Source§impl RefMutFromWasmAbi for LoginClient
impl RefMutFromWasmAbi for LoginClient
Source§impl TryFromJsValue for LoginClient
impl TryFromJsValue for LoginClient
Source§impl VectorFromWasmAbi for LoginClient
impl VectorFromWasmAbi for LoginClient
type Abi = <Box<[JsValue]> as FromWasmAbi>::Abi
unsafe fn vector_from_abi(js: Self::Abi) -> Box<[LoginClient]>
Source§impl VectorIntoWasmAbi for LoginClient
impl VectorIntoWasmAbi for LoginClient
type Abi = <Box<[JsValue]> as IntoWasmAbi>::Abi
fn vector_into_abi(vector: Box<[LoginClient]>) -> Self::Abi
Source§impl WasmDescribe for LoginClient
impl WasmDescribe for LoginClient
Source§impl WasmDescribeVector for LoginClient
impl WasmDescribeVector for LoginClient
impl SupportsConstructor for LoginClient
impl SupportsInstanceProperty for LoginClient
impl SupportsStaticProperty for LoginClient
Auto Trait Implementations§
impl Freeze for LoginClient
impl !RefUnwindSafe for LoginClient
impl Send for LoginClient
impl Sync for LoginClient
impl Unpin for LoginClient
impl UnsafeUnpin for LoginClient
impl !UnwindSafe for LoginClient
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
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, UT> HandleAlloc<UT> for T
impl<T, UT> HandleAlloc<UT> for T
§fn new_handle(value: Arc<T>) -> Handle
fn new_handle(value: Arc<T>) -> Handle
§unsafe fn clone_handle(handle: Handle) -> Handle
unsafe fn clone_handle(handle: Handle) -> Handle
§unsafe fn consume_handle(handle: Handle) -> Arc<T>
unsafe fn consume_handle(handle: Handle) -> Arc<T>
Arc<> Read more§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§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
Source§type Abi = <T as IntoWasmAbi>::Abi
type Abi = <T as IntoWasmAbi>::Abi
IntoWasmAbi::AbiSource§fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
IntoWasmAbi::into_abi, except that it may throw and never
return in the case of Err.