@realm/react
Version:
React specific hooks and implementation helpers for Realm
86 lines • 3.35 kB
TypeScript
import Realm from "realm";
import { AuthResult } from "./types";
interface UseAuth {
/**
* Log in with a {@link Realm.Credentials} instance. This allows login with any
* authentication mechanism supported by Realm.
* If this is called when a user is currently logged in, it will switch the user.
*/
logIn(credentials: Realm.Credentials): void;
/**
* Log in with the Anonymous authentication provider.
* @returns A `Realm.User` instance for the logged in user.
* @see https://www.mongodb.com/docs/atlas/app-services/authentication/anonymous/
*/
logInWithAnonymous(): void;
/**
* Log in with an API key.
* @see https://www.mongodb.com/docs/atlas/app-services/authentication/api-key/
*/
logInWithApiKey(key: string): void;
/**
* Log in with Email / Password.
* @see https://www.mongodb.com/docs/atlas/app-services/authentication/email-password/
*/
logInWithEmailPassword(credentials: {
email: string;
password: string;
}): void;
/**
* Log in with a JSON Web Token (JWT).
* @see https://www.mongodb.com/docs/atlas/app-services/authentication/custom-jwt/
*/
logInWithJWT(token: string): void;
/**
* Log in with Google.
* @see https://www.mongodb.com/docs/atlas/app-services/authentication/google/
*/
logInWithGoogle(credentials: {
idToken: string;
} | {
authCode: string;
}): void;
/**
* Log in with Apple.
* @see https://www.mongodb.com/docs/atlas/app-services/authentication/apple/
*/
logInWithApple(idToken: string): void;
/**
* Log in with Facebook.
* @see https://www.mongodb.com/docs/atlas/app-services/authentication/facebook/
*/
logInWithFacebook(accessToken: string): void;
/**
* Log in with a custom function.
* @see https://www.mongodb.com/docs/atlas/app-services/authentication/custom-function/
*/
logInWithFunction<PayloadType extends Record<string, unknown>>(payload: PayloadType): void;
/**
* Log out the current user.
*/
logOut(): void;
/**
* The {@link AuthResult} of the current (or last) login operation performed
* for this hook. There is one {@link AuthResult} for all `login`
* operations within a given `AppProvider` context, as only one login can
* be in progress at a time (e.g. the {@link AuthResult} of `loginUser` from
* `useEmailPasswordAuth` is also represented by this).
*/
result: AuthResult;
}
/**
* Hook providing operations and corresponding state for authenticating with an
* Atlas App.
*
* The {@link AuthResult} values returned from this hook (e.g. `state`, `pending`, etc.) are
* shared across all components under a given `AppProvider`, as only one operation can be in
* progress at a given time (i.e. we will store the values on the context). This means that,
* for example, multiple components can use the `useAuth` hook to access
* `loginResult.pending` to render a spinner when login is in progress, without
* needing to pass that state around or store it somewhere global in their app
* code.
* @returns An object containing operations and state for authenticating with an Atlas App.
*/
export declare function useAuth(): UseAuth;
export {};
//# sourceMappingURL=useAuth.d.ts.map