Advertisement
Guest User

Untitled

a guest
Oct 30th, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.37 KB | None | 0 0
  1. //
  2. // LoginVC.m
  3. //
  4. // Created by Adam Chin on 7/14/16.
  5. // The following is an example of Auth0
  6. // Logging into Email/Social services with a custom UI
  7. // Interface Builder requirements are:
  8. // 2 Social buttons
  9. // Email/Password UITextFields
  10. // button to fire didTapEmailLogin
  11. //
  12. #import "LoginVC.h"
  13. #import "MBProgressHUD.h"
  14. #import "TwitterAPIBundle.h"
  15.  
  16. #define USERPW_AUTHENTICATION_TYPE @"Username-Password-Authentication"
  17.  
  18. @interface LoginVC () <UITextFieldDelegate>
  19.  
  20. @property (weak, nonatomic) IBOutlet UIButton *signInButton;
  21. @property (weak, nonatomic) IBOutlet UIButton *cancelButton;
  22.  
  23. @property(weak, nonatomic) IBOutlet UITextField *emailField;
  24. @property(weak, nonatomic) IBOutlet UITextField *passwordField;
  25. @property (nonatomic, weak) IBOutlet UIButton *facebookButton;
  26. @property (nonatomic, weak) IBOutlet UIButton *twitterButton;
  27. @property (weak, nonatomic) IBOutlet UIActivityIndicatorView *ActivityIndicator;
  28.  
  29. @property (nonatomic, weak) NSString *connectionType;
  30.  
  31. @end
  32.  
  33. @implementation LoginVC
  34.  
  35. - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
  36. [self.view endEditing:YES];
  37. }
  38.  
  39. - (void)viewDidLoad {
  40. [super viewDidLoad];
  41. // Do any additional setup after loading the view.
  42. self.ActivityIndicator.hidesWhenStopped = YES;
  43.  
  44. [self.emailField.layer addSublayer:[GlobalUI bottomBorderFor:self.emailField]];
  45. [self.passwordField.layer addSublayer:[GlobalUI bottomBorderFor:self.passwordField]];
  46.  
  47.  
  48. }
  49.  
  50.  
  51. - (IBAction)cancel:(id)sender
  52. {
  53. [self dismissViewControllerAnimated:YES completion:nil];
  54.  
  55. }
  56. -(void)viewWillAppear:(BOOL)animated
  57. {
  58. [super viewWillAppear:animated];
  59.  
  60. self.emailField.delegate = self;
  61. self.passwordField.delegate = self;
  62.  
  63. self.signInButton.layer.cornerRadius = 5;
  64. self.signInButton.clipsToBounds = YES;
  65. self.cancelButton.layer.cornerRadius = 5;
  66. self.cancelButton.clipsToBounds = YES;
  67.  
  68. self.facebookButton.layer.cornerRadius = 5;
  69. self.facebookButton.clipsToBounds = YES;
  70.  
  71. self.twitterButton.layer.cornerRadius = 5;
  72. self.twitterButton.clipsToBounds = YES;
  73.  
  74.  
  75. }
  76.  
  77. - (BOOL)textFieldShouldReturn:(UITextField *)textField {
  78. if (textField == self.emailField)
  79. {
  80. [textField resignFirstResponder];
  81. [self.passwordField becomeFirstResponder];
  82.  
  83. } else if (textField == self.passwordField) {
  84. // here you can define what happens
  85. // when user presses return on the email field
  86.  
  87. [self didTapEmailLogin:self];
  88.  
  89. }
  90. return YES;
  91. }
  92.  
  93. - (IBAction)socialLogin:(id)sender {
  94.  
  95.  
  96. [self.ActivityIndicator startAnimating];
  97.  
  98. if (sender == self.facebookButton)
  99. {
  100. self.connectionType = @"facebook";
  101. A0Lock *lock = [[Auth0Instance sharedInstance] lock];
  102. A0FacebookAuthenticator *facebook = [A0FacebookAuthenticator newAuthenticatorWithDefaultPermissions];
  103. [lock registerAuthenticators:@[facebook]];
  104. A0AuthParameters *params = [A0AuthParameters newDefaultParams];
  105.  
  106. [[lock identityProviderAuthenticator] authenticateWithConnectionName:self.connectionType
  107. parameters:params
  108. success:^(A0UserProfile * _Nonnull profile, A0Token * _Nonnull token) {
  109. #ifdef DEBUG
  110. NSLog(@"----------------------------------------------->");
  111. NSLog(@" Auth0 Lock: Facebook Login success");
  112. NSLog(@"Profile: %@",profile);
  113. NSLog(@"Token: %@",token);
  114. NSLog(@"----------------------------------------------->");
  115. #endif
  116.  
  117. [self.ActivityIndicator stopAnimating];
  118.  
  119. MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
  120. hud.mode = MBProgressHUDModeCustomView;
  121. UIImage *image = [[UIImage imageNamed:@"Checkmark"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
  122. hud.customView = [[UIImageView alloc] initWithImage:image];
  123.  
  124. hud.square = YES;
  125. hud.label.text = NSLocalizedString(@"Success!", @"HUD done title");
  126. [hud hideAnimated:YES afterDelay:2.f];
  127.  
  128. [self performSelector:@selector(dismissView) withObject:self afterDelay:2.0];
  129.  
  130.  
  131. } failure:^(NSError * _Nonnull error) {
  132. [self.ActivityIndicator stopAnimating];
  133.  
  134. NSLog(@"Facebook Login Failure");
  135. }];
  136.  
  137. }
  138. else if (sender == self.twitterButton)
  139. {
  140. self.connectionType = @"twitter";
  141.  
  142. NSString *twitterApiKey = [TwitterAPIBundle twitterAPIKey];
  143. NSString *twitterApiSecret = [TwitterAPIBundle twitterSec];
  144.  
  145. A0TwitterAuthenticator *twitter = [A0TwitterAuthenticator
  146. newAuthenticatorWithKey:twitterApiKey
  147. andSecret:twitterApiSecret];
  148.  
  149. A0Lock *lock = [[Auth0Instance sharedInstance] lock];
  150.  
  151. [lock registerAuthenticators:@[twitter]];
  152.  
  153. A0AuthParameters *params = [A0AuthParameters newDefaultParams];
  154.  
  155.  
  156. [[lock identityProviderAuthenticator] authenticateWithConnectionName:self.connectionType
  157. parameters:params
  158. success:^(A0UserProfile * _Nonnull profile, A0Token * _Nonnull token) {
  159. #ifdef DEBUG
  160. NSLog(@"----------------------------------------------->");
  161. NSLog(@" Auth0 Lock: Twitter Login success");
  162. NSLog(@"----------------------------------------------->");
  163. #endif
  164.  
  165. [self.ActivityIndicator stopAnimating];
  166.  
  167. MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
  168. hud.mode = MBProgressHUDModeCustomView;
  169. UIImage *image = [[UIImage imageNamed:@"Checkmark"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
  170. hud.customView = [[UIImageView alloc] initWithImage:image];
  171.  
  172. hud.square = YES;
  173. hud.label.text = NSLocalizedString(@"Success!", @"HUD done title");
  174. [hud hideAnimated:YES afterDelay:2.f];
  175.  
  176. [self performSelector:@selector(dismissView) withObject:self afterDelay:2.0];
  177.  
  178. } failure:^(NSError * _Nonnull error) {
  179. [self.ActivityIndicator stopAnimating];
  180. NSLog(@"Twitter login Failure");
  181. }];
  182. }
  183.  
  184. }
  185. - (IBAction)didTapEmailLogin:(id)sender {
  186.  
  187. [self.ActivityIndicator startAnimating];
  188. NSString *email = self.emailField.text;
  189. NSString *password = self.passwordField.text;
  190.  
  191. A0Lock *lock = [[Auth0Instance sharedInstance] lock];
  192. A0AuthParameters *params = [A0AuthParameters newDefaultParams];
  193. params[A0ParameterConnection] = USERPW_AUTHENTICATION_TYPE;
  194.  
  195. A0APIClient *client = [lock apiClient];
  196.  
  197. [client loginWithEmail:email
  198. passcode:password
  199. parameters:params
  200. success:^(A0UserProfile * _Nonnull profile, A0Token * _Nonnull tokenInfo) {
  201.  
  202.  
  203. [self.ActivityIndicator stopAnimating];
  204.  
  205. MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
  206. hud.mode = MBProgressHUDModeCustomView;
  207. UIImage *image = [[UIImage imageNamed:@"Checkmark"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
  208. hud.customView = [[UIImageView alloc] initWithImage:image];
  209.  
  210. hud.square = YES;
  211. hud.label.text = NSLocalizedString(@"Success!", @"HUD done title");
  212. [hud hideAnimated:YES afterDelay:2.f];
  213.  
  214. [self performSelector:@selector(dismissView) withObject:self afterDelay:2.0];
  215.  
  216.  
  217. } failure:^(NSError * _Nonnull error) {
  218. NSLog(@"Oops something went wrong: %@", error);
  219. [self.ActivityIndicator stopAnimating];
  220. // [self.spinner stopAnimating];
  221. }];
  222.  
  223. }
  224.  
  225.  
  226. - (IBAction)didRequestPasswordReset:(id)sender {
  227.  
  228. [self.ActivityIndicator startAnimating];
  229. NSString *email = self.emailField.text;
  230. A0Lock *lock = [[Auth0Instance sharedInstance] lock];
  231. A0APIClient *client = [lock apiClient];
  232. A0AuthParameters *params = [A0AuthParameters newDefaultParams];
  233. params[A0ParameterConnection] = USERPW_AUTHENTICATION_TYPE;
  234.  
  235. [client requestChangePasswordForUsername:email
  236. parameters:params
  237. success:^{
  238.  
  239. [self.ActivityIndicator stopAnimating];
  240.  
  241. MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
  242. hud.mode = MBProgressHUDModeCustomView;
  243. UIImage *image = [[UIImage imageNamed:@"Checkmark"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
  244. hud.customView = [[UIImageView alloc] initWithImage:image];
  245.  
  246. hud.square = YES;
  247. hud.label.text = NSLocalizedString(@"Check your email for instructions...", @"HUD done title");
  248. [hud hideAnimated:YES afterDelay:4.5f];
  249.  
  250. // [self performSelector:@selector(dismissView) withObject:self afterDelay:2.0];
  251.  
  252. } failure:^(NSError * _Nonnull error) {
  253. [self.ActivityIndicator stopAnimating];
  254. NSLog(@"Oops something went wrong: %@", error);
  255. }];
  256. }
  257.  
  258. -(void)dismissView
  259. {
  260. [self dismissViewControllerAnimated:YES completion:nil];
  261. }
  262.  
  263. - (void)didReceiveMemoryWarning
  264. {
  265. [super didReceiveMemoryWarning];
  266. // Dispose of any resources that can be recreated.
  267. }
  268.  
  269.  
  270. @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement