
主要变更: 1. 新增 EPLoginViewController 和 EPLoginTypesViewController,提供新的登录界面和功能。 2. 引入 EPLoginInputView 和 EPLoginButton 组件,支持输入框和按钮的自定义。 3. 实现 EPLoginService 和 EPLoginManager,封装登录逻辑和 API 请求。 4. 添加 EPLoginConfig 和 EPLoginState,统一配置和状态管理。 5. 更新 Bridging Header,确保 Swift 和 Objective-C 代码的互操作性。 此更新旨在提升用户登录体验,简化登录流程,并提供更好的代码结构和可维护性。
53 lines
1.6 KiB
Swift
53 lines
1.6 KiB
Swift
//
|
||
// EPLoginState.swift
|
||
// YuMi
|
||
//
|
||
// Created by AI on 2025-01-27.
|
||
//
|
||
|
||
import Foundation
|
||
|
||
/// 登录显示类型枚举
|
||
enum EPLoginDisplayType {
|
||
case id // ID + 密码
|
||
case email // 邮箱 + 验证码
|
||
case phone // 手机号 + 验证码
|
||
case emailReset // 邮箱找回密码
|
||
case phoneReset // 手机号找回密码
|
||
}
|
||
|
||
/// 登录状态验证器(Phase 2 实现)
|
||
class EPLoginValidator {
|
||
|
||
/// 密码强度验证:6-16位,必须包含字母+数字
|
||
func validatePassword(_ password: String) -> Bool {
|
||
guard password.count >= 6 && password.count <= 16 else { return false }
|
||
|
||
let hasLetter = password.rangeOfCharacter(from: .letters) != nil
|
||
let hasDigit = password.rangeOfCharacter(from: .decimalDigits) != nil
|
||
|
||
return hasLetter && hasDigit
|
||
}
|
||
|
||
/// 邮箱格式验证
|
||
func validateEmail(_ email: String) -> Bool {
|
||
let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
|
||
let emailPredicate = NSPredicate(format: "SELF MATCHES %@", emailRegex)
|
||
return emailPredicate.evaluate(with: email)
|
||
}
|
||
|
||
/// 验证码格式验证(6位数字)
|
||
func validateCode(_ code: String) -> Bool {
|
||
guard code.count == 6 else { return false }
|
||
return code.allSatisfy { $0.isNumber }
|
||
}
|
||
|
||
/// 手机号格式验证(简单验证)
|
||
func validatePhone(_ phone: String) -> Bool {
|
||
let phoneRegex = "^[0-9]{10,15}$"
|
||
let phonePredicate = NSPredicate(format: "SELF MATCHES %@", phoneRegex)
|
||
return phonePredicate.evaluate(with: phone)
|
||
}
|
||
}
|
||
|