
主要变更: 1. 从 Podfile 中移除 GoogleSignIn 及相关依赖,减少项目依赖。 2. 从 AppDelegate 和相关文件中删除 Google 登录初始化及相关逻辑,清理未使用的代码。 3. 移除与 Google 登录相关的 Presenter 和 ViewController 中的代码,简化登录流程。 此更新旨在提升项目的可维护性,减少冗余依赖,确保代码结构更加清晰。
309 lines
13 KiB
Objective-C
309 lines
13 KiB
Objective-C
//
|
|
// LoginPresenter.m
|
|
// YUMI
|
|
//
|
|
// Created by zu on 2021/9/1.
|
|
//
|
|
|
|
#import "LoginPresenter.h"
|
|
///Third
|
|
#import <ReactiveObjC/ReactiveObjC.h>
|
|
///APi
|
|
#import "Api+Login.h"
|
|
///Tool
|
|
#import "AccountInfoStorage.h"
|
|
#import "XNDJTDDLoadingTool.h"
|
|
#import "YUMIMacroUitls.h"
|
|
///P
|
|
#import "LoginProtocol.h"
|
|
///Model
|
|
#import "ThirdUserInfo.h"
|
|
#import "AccountModel.h"
|
|
#import "DESEncrypt.h"
|
|
|
|
#import "YuMi-swift.h"
|
|
#import "FeedBackConfigModel.h"
|
|
|
|
static NSString *clinet_s = @"uyzjdhds";
|
|
|
|
@implementation LoginPresenter
|
|
- (void)dealloc{
|
|
[[NSNotificationCenter defaultCenter]removeObserver:self];
|
|
}
|
|
- (instancetype)init{
|
|
self = [super init];
|
|
if(self){
|
|
|
|
}
|
|
return self;
|
|
}
|
|
- (id<LoginProtocol>)getView {
|
|
return ((id<LoginProtocol>) [super getView]);
|
|
}
|
|
|
|
- (void)phoneQuickLogin:(NSString *)accessToken
|
|
token:(NSString *)token {
|
|
@kWeakify(self);
|
|
[Api phoneQuickLogin:[self createHttpCompletion:^(BaseModel *data) {
|
|
@kStrongify(self);
|
|
[[AccountInfoStorage instance] saveAccountInfo:[AccountModel modelWithDictionary:data.data]];
|
|
[[self getView] loginSuccess];
|
|
} showLoading:YES] accessToken:accessToken token:token];
|
|
}
|
|
|
|
|
|
/// 第三方登录
|
|
/// @param type 登录的类型
|
|
- (void)thirdLoginWithType:(ThirdLoginType)type{
|
|
// TODO: 后续补充 Apple Login
|
|
}
|
|
-(void)loginWithThirdPartWithType:(ThirdLoginType)type{
|
|
[XNDJTDDLoadingTool showOnlyView:kWindow];
|
|
NSString * openid = [AccountInfoStorage instance].thirdUserInfo.openid;
|
|
NSString * access_token = [AccountInfoStorage instance].thirdUserInfo.access_token;
|
|
NSString * unionid = [AccountInfoStorage instance].thirdUserInfo.unionid;
|
|
@kWeakify(self);
|
|
[Api loginWithThirdPart:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
|
@kStrongify(self);
|
|
AccountModel * model = [AccountModel modelWithDictionary:data.data];
|
|
if (model != nil) {
|
|
[[AccountInfoStorage instance] saveAccountInfo:model];
|
|
[XNDJTDDLoadingTool hideOnlyView:kWindow];
|
|
[[self getView] loginThirdPartSuccess];
|
|
}
|
|
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
|
@kStrongify(self);
|
|
[XNDJTDDLoadingTool hideOnlyView:kWindow];
|
|
if (msg.length == 0) {
|
|
[[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter1")];
|
|
}
|
|
} showLoading:YES errorToast:YES]
|
|
openid:openid
|
|
unionid:unionid
|
|
access_token:access_token
|
|
type:[NSString stringWithFormat:@"%lu", (unsigned long)type]];
|
|
|
|
|
|
}
|
|
/// 获取手机的验证码
|
|
/// @param phone 手机号
|
|
/// @param type 类型
|
|
- (void)phoneSmsCode:(NSString *)phone type:(GetSmsType)type phoneAreaCode:(NSString *)phoneAreaCode {
|
|
NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)];
|
|
@kWeakify(self);
|
|
[Api phoneSmsCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
|
@kStrongify(self);
|
|
if ([[self getView] respondsToSelector:@selector(phoneSmsCodeSuccess:type:)]) {
|
|
NSString *message = data.message;
|
|
[[self getView] phoneSmsCodeSuccess:message type:type];
|
|
}
|
|
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
|
@kStrongify(self);
|
|
if ([[self getView] respondsToSelector:@selector(phoneSmsCodeFailure)]) {
|
|
[[self getView] phoneSmsCodeFailure];
|
|
}
|
|
} showLoading:YES errorToast:YES] mobile:desPhone type:[NSString stringWithFormat:@"%lu", (unsigned long)type] phoneAreaCode:phoneAreaCode];
|
|
}
|
|
|
|
/// 使用手机号和验证码登录
|
|
/// @param phone 手机号
|
|
/// @param code 验证码
|
|
- (void)loginWithPhone:(NSString *)phone code:(NSString *)code phoneAreaCode:(NSString *)phoneAreaCode{
|
|
NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)];
|
|
@kWeakify(self);
|
|
[Api loginWithCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
|
@kStrongify(self);
|
|
AccountModel * accountModel = [AccountModel modelWithDictionary:data.data];
|
|
if (accountModel && accountModel.access_token.length > 0) {
|
|
[[AccountInfoStorage instance] saveAccountInfo:accountModel];
|
|
}
|
|
[[self getView] loginWithPhoenSuccess];
|
|
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
|
@kStrongify(self);
|
|
[[self getView] loginFailWithMsg:msg];
|
|
} errorToast:NO] phone:desPhone code:code client_secret:clinet_s version:@"1" client_id:@"erban-client" grant_type:@"password" phoneAreaCode:phoneAreaCode];
|
|
}
|
|
/// 使用手机号和密码登录
|
|
/// @param phone 手机号
|
|
/// @param password 验证码
|
|
- (void)loginWithPhone:(NSString *)phone password:(NSString *)password {
|
|
NSString * desPassword = [DESEncrypt encryptUseDES:password key:KeyWithType(KeyType_PasswordEncode)];
|
|
NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)];
|
|
@kWeakify(self);
|
|
[Api loginWithPassword:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
|
@kStrongify(self);
|
|
AccountModel * accountModel = [AccountModel modelWithDictionary:data.data];
|
|
if (accountModel && accountModel.access_token.length > 0) {
|
|
[[AccountInfoStorage instance] saveAccountInfo:accountModel];
|
|
}
|
|
[[self getView] loginSuccess];
|
|
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
|
@kStrongify(self);
|
|
[[self getView] loginFailWithMsg:msg];
|
|
} showLoading:YES errorToast:YES] phone:desPhone password:desPassword client_secret:clinet_s version:@"1" client_id:@"erban-client" grant_type:@"password"];
|
|
}
|
|
|
|
///反馈
|
|
- (void)loadFeedbackConfig:(void(^)(FeedBackConfigModel *model))success
|
|
failure:(void(^)(NSString *errorMessage))failure {
|
|
[Api loadFeedbackConfig:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
|
if (code == 200) {
|
|
FeedBackConfigModel *model =[FeedBackConfigModel modelWithDictionary:data.data];
|
|
if (success) {
|
|
success(model);
|
|
}
|
|
} else {
|
|
if (failure) {
|
|
failure(msg);
|
|
}
|
|
}
|
|
}];
|
|
}
|
|
|
|
- (void)submitFeedback:(void(^)(void))success
|
|
failure:(void(^)(NSString *errorMessage))failure
|
|
type:(NSString *)type
|
|
desc:(NSString *)desc
|
|
photoURLString:(nullable NSString *)photoURLString
|
|
contact:(nullable NSString *)contact {
|
|
[Api commitFeedback:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
|
if (code == 200) {
|
|
if (success) {
|
|
success();
|
|
}
|
|
} else {
|
|
if (failure) {
|
|
failure(msg);
|
|
}
|
|
}
|
|
}
|
|
type:type
|
|
desc:desc
|
|
screenUrl:photoURLString ? photoURLString : @""
|
|
contact:contact ? contact : @""];
|
|
|
|
}
|
|
|
|
- (void)sendMailVerificationCode:(NSString *)emailAddress type:(NSInteger)type {
|
|
NSString * desEmail = [DESEncrypt encryptUseDES:emailAddress key:KeyWithType(KeyType_PasswordEncode)];
|
|
@kWeakify(self);
|
|
[Api emailGetCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
|
@kStrongify(self);
|
|
if ([[self getView] respondsToSelector:@selector(emailCodeSucess:type:)]) {
|
|
[[self getView] emailCodeSucess:@"" type:type];
|
|
}
|
|
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
|
@kStrongify(self);
|
|
if ([[self getView] respondsToSelector:@selector(emailCodeFailure)]) {
|
|
[[self getView] emailCodeFailure];
|
|
}
|
|
} showLoading:YES errorToast:YES]
|
|
emailAddress:desEmail type:@(type)];
|
|
}
|
|
|
|
- (void)loginWithEmail:(NSString *)email code:(NSString *)code {
|
|
NSString * desMail = [DESEncrypt encryptUseDES:email key:KeyWithType(KeyType_PasswordEncode)];
|
|
@kWeakify(self);
|
|
[Api loginWithCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
|
@kStrongify(self);
|
|
AccountModel * accountModel = [AccountModel modelWithDictionary:data.data];
|
|
if (accountModel && accountModel.access_token.length > 0) {
|
|
[[AccountInfoStorage instance] saveAccountInfo:accountModel];
|
|
}
|
|
if ([[self getView] respondsToSelector:@selector(loginSuccess)]) {
|
|
[[self getView] loginSuccess];
|
|
}
|
|
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
|
@kStrongify(self);
|
|
[[self getView] loginFailWithMsg:msg];
|
|
} errorToast:NO]
|
|
email:desMail
|
|
code:code
|
|
client_secret:clinet_s
|
|
version:@"1"
|
|
client_id:@"erban-client"
|
|
grant_type:@"email"];
|
|
}
|
|
|
|
- (void)bindingNewEmail:(NSString *)email code:(NSString *)code {
|
|
NSString *desMail = [DESEncrypt encryptUseDES:email key:KeyWithType(KeyType_PasswordEncode)];
|
|
@kWeakify(self);
|
|
[Api userBoundEmail:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
|
@kStrongify(self);
|
|
if ([[self getView] respondsToSelector:@selector(bindingNewEmailSuccess:)]) {
|
|
[[self getView] bindingNewEmailSuccess:@""];
|
|
}
|
|
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
|
@kStrongify(self);
|
|
if ([[self getView] respondsToSelector:@selector(bindingNewEmailFailure:)]) {
|
|
[[self getView] bindingNewEmailFailure:msg];
|
|
}
|
|
} showLoading:YES errorToast:NO] email:desMail code:code];
|
|
}
|
|
|
|
- (void)bindingNewPhone:(NSString *)phone code:(NSString *)code areaCode:(NSString *)areaCode {
|
|
NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)];
|
|
@kWeakify(self);
|
|
[Api userBoundPhone:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
|
@kStrongify(self);
|
|
if ([[self getView] respondsToSelector:@selector(bindingNewPhoneSuccess:)]) {
|
|
[[self getView] bindingNewPhoneSuccess:@""];
|
|
}
|
|
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
|
@kStrongify(self);
|
|
if ([[self getView] respondsToSelector:@selector(bindingNewPhoneFailure:)]) {
|
|
[[self getView] bindingNewPhoneFailure:msg];
|
|
}
|
|
} showLoading:YES errorToast:YES] phone:desPhone code:code phoneAreaCode:areaCode];
|
|
}
|
|
|
|
- (void)resetEmailPassword:(NSString *)email code:(NSString *)code newPassword:(NSString *)newPwd {
|
|
NSString *desMail = [DESEncrypt encryptUseDES:email key:KeyWithType(KeyType_PasswordEncode)];
|
|
NSString *desPassword = [DESEncrypt encryptUseDES:newPwd key:KeyWithType(KeyType_PasswordEncode)];
|
|
@kWeakify(self);
|
|
[Api resetPasswordWithEmail:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
|
@kStrongify(self);
|
|
if ([[self getView] respondsToSelector:@selector(resetEmailPasswordSuccess)]) {
|
|
[[self getView] resetEmailPasswordSuccess];
|
|
}
|
|
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
|
|
|
} showLoading:YES errorToast:YES] email:desMail newPwd:desPassword code:code];
|
|
}
|
|
|
|
- (void)resetPhonePassword:(NSString *)phone code:(NSString *)code newPassword:(NSString *)newPwd areaCode:(NSString *)areaCode {
|
|
NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)];
|
|
NSString *desPassword = [DESEncrypt encryptUseDES:newPwd key:KeyWithType(KeyType_PasswordEncode)];
|
|
@kWeakify(self);
|
|
[Api resetPasswordWithPhone:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
|
@kStrongify(self);
|
|
if ([[self getView] respondsToSelector:@selector(resetPhonePasswordSuccess)]) {
|
|
[[self getView] resetPhonePasswordSuccess];
|
|
}
|
|
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
|
|
|
} showLoading:YES errorToast:YES] phone:desPhone newPwd:desPassword smsCode:code phoneAreaCode:areaCode];
|
|
}
|
|
|
|
- (void)checkEmailCode:(NSString *)email code:(NSString *)code {
|
|
NSString *desMail = [DESEncrypt encryptUseDES:email key:KeyWithType(KeyType_PasswordEncode)];
|
|
[Api emailVerify:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
|
[[self getView] checkEmailSuccess];
|
|
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
|
|
|
} showLoading:YES errorToast:YES] emailAddress:desMail code:code];
|
|
}
|
|
|
|
- (void)checkPhoneCode:(NSString *)phone code:(NSString *)code areaCode:(NSString *)areaCode {
|
|
NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)];
|
|
NSString * uid = [[AccountInfoStorage instance] getUid];
|
|
NSString * ticket = [[AccountInfoStorage instance] getTicket];
|
|
[Api checkMoblieCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
|
[[self getView] checkPhoneSuccess];
|
|
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
|
|
|
} showLoading:YES errorToast:YES] mobile:desPhone code:desPhone uid:uid ticket:ticket phoneAreaCode:areaCode];
|
|
}
|
|
|
|
@end
|