/// <summary> /// Logs the user in to the Realm Object Server. /// </summary> /// <param name="credentials">The credentials to use for authentication.</param> /// <param name="serverUri">The URI of the server that the user is authenticated against.</param> /// <returns>An awaitable Task, that, upon completion, contains the logged in user.</returns> public static async Task <User> LoginAsync(Credentials credentials, Uri serverUri) { Argument.NotNull(credentials, nameof(credentials)); Argument.NotNull(serverUri, nameof(serverUri)); Argument.Ensure(serverUri.Scheme.StartsWith("http"), "Unexpected protocol for login url. Expected http:// or https://.", nameof(serverUri)); SharedRealmHandleExtensions.DoInitialMetadataConfiguration(); if (credentials.IdentityProvider == Credentials.Provider.AdminToken) { return(new User(SyncUserHandle.GetAdminTokenUser(serverUri.AbsoluteUri, credentials.Token))); } if (credentials.IdentityProvider == Credentials.Provider.CustomRefreshToken) { var userId = (string)credentials.UserInfo[Credentials.Keys.Identity]; var isAdmin = (bool)credentials.UserInfo[Credentials.Keys.IsAdmin]; return(new User(SyncUserHandle.GetSyncUser(userId, serverUri.AbsoluteUri, credentials.Token, isAdmin))); } var result = await AuthenticationHelper.LoginAsync(credentials, serverUri); var handle = SyncUserHandle.GetSyncUser(result.UserId, serverUri.AbsoluteUri, result.RefreshToken, result.IsAdmin); return(new User(handle)); }
public static User GetLoggedInUser(string identity, Uri serverUri) { Argument.NotNull(identity, nameof(identity)); Argument.NotNull(serverUri, nameof(serverUri)); SharedRealmHandleExtensions.DoInitialMetadataConfiguration(); if (SyncUserHandle.TryGetLoggedInUser(identity, serverUri.AbsoluteUri, out var userHandle)) { return(new User(userHandle)); } return(null); }