// // MBIMAuthenticateOperation.m // MBIMAuthenticateOperation // // Created by James Magahern on 7/6/21. // Copyright © 2021 James Magahern. All rights reserved. // #import "MBIMAuthenticateOperation.h" #import "MBIMBridge.h" #import "MBIMAuthToken.h" @implementation MBIMAuthenticateOperation + (void)load { [super load]; } + (NSString *)endpointName { return @"authenticate"; } + (BOOL)requiresAuthentication { return NO; } - (void)main { NSObject *response = nil; if (self.requestBodyData.length == 0) { self.serverCompletionBlock([[HTTPErrorResponse alloc] initWithErrorCode:400]); return; } NSError *error = nil; NSDictionary *args = [NSJSONSerialization JSONObjectWithData:self.requestBodyData options:0 error:&error]; if (error || args.count == 0) { response = [[HTTPErrorResponse alloc] initWithErrorCode:400]; } else { do { NSString *username = [args objectForKey:@"username"]; NSString *password = [args objectForKey:@"password"]; if (!username || !password) { response = [[HTTPErrorResponse alloc] initWithErrorCode:400]; break; } if (![MBIMBridge.sharedInstance.authUsername isEqualToString:username]) { response = [[HTTPErrorResponse alloc] initWithErrorCode:401]; break; } if (![MBIMBridge.sharedInstance.authPassword isEqualToString:password]) { response = [[HTTPErrorResponse alloc] initWithErrorCode:401]; break; } MBIMAuthToken *token = [[MBIMAuthToken alloc] initWithUsername:username]; // All systems go response = [MBIMJSONDataResponse responseWithJSONObject:@{ @"jwt" : token.jwtToken }]; } while (NO); } self.serverCompletionBlock(response); } @end