|
58 | 58 | static NSString *METHOD_USER_LOGIN_WITH_GOOGLEPLUS_SDK = @"loginWithGooglePlus";
|
59 | 59 | static NSString *METHOD_USER_LOGIN_WITH_TWITTER_SDK = @"loginWithTwitter";
|
60 | 60 | static NSString *METHOD_RESEND_EMAIL_CONFIRMATION = @"resendEmailConfirmation";
|
| 61 | +static NSString *METHOD_GUEST_LOGIN = @"loginAsGuest"; |
61 | 62 |
|
62 | 63 | @interface UserService ()
|
63 | 64 |
|
@@ -109,6 +110,14 @@ -(BOOL)setStayLoggedIn:(BOOL)value {
|
109 | 110 | return (_isStayLoggedIn = value) ? [self setPersistentUser] : [self resetPersistentUser];
|
110 | 111 | }
|
111 | 112 |
|
| 113 | +-(void)setUserToken:(NSString *)userToken { |
| 114 | + [backendless.headers setValue:userToken forKey:BACKENDLESS_USER_TOKEN]; |
| 115 | +} |
| 116 | + |
| 117 | +-(NSString *)getUserToken { |
| 118 | + return self.currentUser.getUserToken; |
| 119 | +} |
| 120 | + |
112 | 121 | // sync methods with fault return (as exception)
|
113 | 122 |
|
114 | 123 | -(BackendlessUser *)registerUser:(BackendlessUser *)user {
|
@@ -274,6 +283,31 @@ -(void)resendEmailConfirmation:(NSString *)email {
|
274 | 283 | [self onLogin:result];
|
275 | 284 | }
|
276 | 285 |
|
| 286 | +-(BackendlessUser *)loginAsGuest { |
| 287 | + return [self loginAsGuestWithStayLoggedIn:NO]; |
| 288 | +} |
| 289 | + |
| 290 | +-(BackendlessUser *)loginAsGuestWithStayLoggedIn:(BOOL)stayLoggedIn { |
| 291 | + [self setStayLoggedIn:stayLoggedIn]; |
| 292 | + id result = [invoker invokeSync:SERVER_USER_SERVICE_PATH method:METHOD_GUEST_LOGIN args:nil responseAdapter:[BackendlessUserAdapter new]]; |
| 293 | + if ([result isKindOfClass:[Fault class]]) { |
| 294 | + return [backendless throwFault:result]; |
| 295 | + } |
| 296 | + BackendlessUser *guest = [BackendlessUser new]; |
| 297 | + guest.objectId = [result objectForKey:@"objectId"]; |
| 298 | + [guest setUserToken:[result objectForKey:@"user-token"]]; |
| 299 | + |
| 300 | + self.currentUser = guest; |
| 301 | + if (self.currentUser.getUserToken) { |
| 302 | + [backendless.headers setValue:self.currentUser.getUserToken forKey:BACKENDLESS_USER_TOKEN]; |
| 303 | + } |
| 304 | + else { |
| 305 | + [backendless.headers removeObjectForKey:BACKENDLESS_USER_TOKEN]; |
| 306 | + } |
| 307 | + [self setPersistentUser]; |
| 308 | + return self.currentUser; |
| 309 | +} |
| 310 | + |
277 | 311 | // async methods with block-based callbacks
|
278 | 312 |
|
279 | 313 | -(void)registerUser:(BackendlessUser *)user response:(void(^)(BackendlessUser *))responseBlock error:(void(^)(Fault *))errorBlock {
|
@@ -401,6 +435,17 @@ -(void)resendEmailConfirmation:(NSString *)email response:(void(^)(void))respons
|
401 | 435 | [invoker invokeAsync:SERVER_USER_SERVICE_PATH method:METHOD_RESEND_EMAIL_CONFIRMATION args:args responder:responder];
|
402 | 436 | }
|
403 | 437 |
|
| 438 | +-(void)loginAsGuest:(void (^)(BackendlessUser *))responseBlock error:(void (^)(Fault *))errorBlock { |
| 439 | + [self loginAsGuestWithStayLoggedIn:NO response:responseBlock error:errorBlock]; |
| 440 | +} |
| 441 | + |
| 442 | +-(void)loginAsGuestWithStayLoggedIn:(BOOL)stayLoggedIn response:(void (^)(BackendlessUser *))responseBlock error:(void (^)(Fault *))errorBlock { |
| 443 | + Responder *responder = [ResponderBlocksContext responderBlocksContext:responseBlock error:errorBlock]; |
| 444 | + Responder *_responder = [Responder responder:self selResponseHandler:@selector(onLogin:) selErrorHandler:nil]; |
| 445 | + _responder.chained = responder; |
| 446 | + [invoker invokeAsync:SERVER_USER_SERVICE_PATH method:METHOD_GUEST_LOGIN args:nil responder:_responder responseAdapter:[BackendlessUserAdapter new]]; |
| 447 | +} |
| 448 | + |
404 | 449 | // persistent user
|
405 | 450 |
|
406 | 451 | -(BOOL)getPersistentUser {
|
@@ -513,5 +558,4 @@ -(void)onLogoutError:(Fault *)fault {
|
513 | 558 | }
|
514 | 559 | }
|
515 | 560 |
|
516 |
| - |
517 | 561 | @end
|
0 commit comments