/// <summary> /// Logs in a user with a username and password. On success, this saves the session to disk so you /// can retrieve the currently logged in user using <see cref="GetCurrentUser()"/>. /// </summary> /// <param name="sessionToken">The session token to authorize with</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>The user if authorization was successful</returns> public static Task <ParseUser> BecomeAsync(this IServiceHub serviceHub, string sessionToken, CancellationToken cancellationToken = default) => serviceHub.UserController.GetUserAsync(sessionToken, serviceHub, cancellationToken).OnSuccess(t => { ParseUser user = serviceHub.GenerateObjectFromState <ParseUser>(t.Result, "_User"); return(SaveCurrentUserAsync(serviceHub, user).OnSuccess(_ => user)); }).Unwrap();
/// <summary> /// Logs in a user with a username and password. On success, this saves the session to disk or to memory so you can retrieve the currently logged in user using <see cref="GetCurrentUser(IServiceHub)"/>. /// </summary> /// <param name="serviceHub">The <see cref="IServiceHub"/> instance to target when logging in.</param> /// <param name="username">The username to log in with.</param> /// <param name="password">The password to log in with.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>The newly logged-in user.</returns> public static Task <ParseUser> LogInAsync(this IServiceHub serviceHub, string username, string password, CancellationToken cancellationToken = default) => serviceHub.UserController.LogInAsync(username, password, serviceHub, cancellationToken).OnSuccess(task => { ParseUser user = serviceHub.GenerateObjectFromState <ParseUser>(task.Result, "_User"); return(SaveCurrentUserAsync(serviceHub, user).OnSuccess(_ => user)); }).Unwrap();