44748b7846
来自今早群友反映 before:  and failed after:    * https://developers.weixin.qq.com/miniprogram/dev/server/API/user-info/phone-number/api_getphonenumber.html#Res-phone-info-Object-Payload 参考微信这个文档修改了微信返回的struct 手机号 区域码字段不应是Optional * 登录注册改密码改绑定等 api 把单一 phone字段改成 country_code(可选,缺省为86) + pure_phone_number 分别进行了前后端校验 Reviewed-on: https://git.genarrative.world/git/GenarrativeAI/Genarrative/pulls/104 Co-authored-by: 王德宇 <kvtodev@outlook.com> Co-committed-by: 王德宇 <kvtodev@outlook.com>
120 lines
3.1 KiB
Rust
120 lines
3.1 KiB
Rust
//! 认证写入命令。
|
|
//!
|
|
//! 用于表达密码入口、手机号验证码、微信登录、刷新会话签发和吊销等用例输入。
|
|
|
|
use crate::domain::{
|
|
AuthLoginMethod, PhoneAuthScene, RefreshSessionClientInfo, WechatAuthScene,
|
|
WechatIdentityProfile,
|
|
};
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct PasswordEntryInput {
|
|
pub country_code: Option<String>,
|
|
pub pure_phone_number: String,
|
|
pub password: String,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct ChangePasswordInput {
|
|
pub user_id: String,
|
|
pub current_password: Option<String>,
|
|
pub new_password: String,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct ResetPasswordInput {
|
|
pub country_code: Option<String>,
|
|
pub pure_phone_number: String,
|
|
pub verify_code: String,
|
|
pub new_password: String,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct UpdateProfileInput {
|
|
pub user_id: String,
|
|
pub display_name: Option<String>,
|
|
pub avatar_url: Option<String>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct SendPhoneCodeInput {
|
|
pub country_code: Option<String>,
|
|
pub pure_phone_number: String,
|
|
pub scene: PhoneAuthScene,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct PhoneLoginInput {
|
|
pub country_code: Option<String>,
|
|
pub pure_phone_number: String,
|
|
pub verify_code: String,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct ResolveWechatLoginInput {
|
|
pub profile: WechatIdentityProfile,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct BindWechatIdentityInput {
|
|
pub user_id: String,
|
|
pub profile: WechatIdentityProfile,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct CreateWechatAuthStateInput {
|
|
pub redirect_path: String,
|
|
pub scene: WechatAuthScene,
|
|
pub request_user_agent: Option<String>,
|
|
pub bind_user_id: Option<String>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct BindWechatPhoneInput {
|
|
pub user_id: String,
|
|
pub country_code: Option<String>,
|
|
pub pure_phone_number: String,
|
|
pub verify_code: String,
|
|
pub wechat_display_name: Option<String>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct BindWechatVerifiedPhoneInput {
|
|
pub user_id: String,
|
|
pub country_code: String,
|
|
pub pure_phone_number: String,
|
|
pub wechat_display_name: Option<String>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct CreateRefreshSessionInput {
|
|
pub user_id: String,
|
|
pub refresh_token_hash: String,
|
|
pub issued_by_provider: AuthLoginMethod,
|
|
pub client_info: RefreshSessionClientInfo,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct RotateRefreshSessionInput {
|
|
pub refresh_token_hash: String,
|
|
pub next_refresh_token_hash: String,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct RevokeRefreshSessionByUserInput {
|
|
pub user_id: String,
|
|
pub session_id: String,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct LogoutCurrentSessionInput {
|
|
pub user_id: String,
|
|
pub refresh_token_hash: Option<String>,
|
|
pub session_id: Option<String>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct LogoutAllSessionsInput {
|
|
pub user_id: String,
|
|
}
|