use serde::{Deserialize, Serialize}; use crate::{config::Config, session}; #[derive(Clone)] pub struct AppState { pub appflowy_cloud_url: String, pub gotrue_client: gotrue::api::Client, pub session_store: session::SessionStorage, pub config: Config, } #[derive(Serialize, Deserialize)] pub struct WebApiLoginRequest { pub email: String, pub password: String, pub redirect_to: Option, } #[derive(Deserialize)] pub struct WebApiPutUserRequest { pub password: String, } #[derive(Deserialize)] pub struct WebApiChangePasswordRequest { pub new_password: String, pub confirm_password: String, } #[derive(Deserialize)] pub struct WebApiAdminCreateUserRequest { pub email: String, pub password: String, pub require_email_verification: bool, } #[derive(Deserialize)] pub struct WebApiInviteUserRequest { pub email: String, } #[derive(Deserialize)] pub struct WebApiCreateSSOProviderRequest { #[serde(rename = "type")] pub type_: String, pub metadata_url: String, } #[derive(Deserialize)] pub struct WebAppOAuthLoginRequest { // Use for Login pub refresh_token: Option, // Use actions (with params) after login pub action: Option, // Workspace Invitation pub workspace_invitation_id: Option, pub workspace_name: Option, pub workspace_icon: Option, pub user_name: Option, pub user_icon: Option, pub workspace_member_count: Option, // Redirect pub redirect_to: Option, // Errors pub error: Option, pub error_code: Option, pub error_description: Option, } #[derive(Deserialize)] #[serde(rename_all = "snake_case")] pub enum OAuthLoginAction { AcceptWorkspaceInvite, } #[derive(Debug, Serialize, Deserialize)] pub struct OAuthRedirect { pub client_id: String, pub state: String, pub redirect_uri: String, pub response_type: String, // pub scope: Option, pub code_challenge: Option, pub code_challenge_method: Option, } #[derive(Debug, Serialize, Deserialize, Default)] pub struct OAuthRedirectToken { pub code: String, pub client_id: Option, pub client_secret: Option, pub grant_type: String, pub redirect_uri: Option, pub code_verifier: Option, } #[derive(Debug, Deserialize)] pub struct LoginParams { pub redirect_to: Option, }