internal static async Task ListAllUsersAsync()
        {
            // [START list_all_users]
            // Start listing users from the beginning, 1000 at a time.
            var pagedEnumerable = FirebaseAuth.DefaultInstance.ListUsersAsync(null);
            var responses       = pagedEnumerable.AsRawResponses().GetEnumerator();

            while (await responses.MoveNext())
            {
                ExportedUserRecords response = responses.Current;
                foreach (ExportedUserRecord user in response.Users)
                {
                    Console.WriteLine($"User: {user.Uid}");
                }
            }

            // Iterate through all users. This will still retrieve users in batches,
            // buffering no more than 1000 users in memory at a time.
            var enumerator = FirebaseAuth.DefaultInstance.ListUsersAsync(null).GetEnumerator();

            while (await enumerator.MoveNext())
            {
                ExportedUserRecord user = enumerator.Current;
                Console.WriteLine($"User: {user.Uid}");
            }

            // [END list_all_users]
        }
        public void RedactedPasswordCleared()
        {
            var user = new ExportedUserRecord(new GetAccountInfoResponse.User()
            {
                UserId       = "user1",
                PasswordHash = Convert.ToBase64String(Encoding.UTF8.GetBytes("REDACTED")),
            });

            Assert.Null(user.PasswordHash);
        }
Example #3
0
        public async Task <IEnumerable <Users> > GetAllUsers()
        {
            var          users       = FirebaseAuth.DefaultInstance.ListUsersAsync(null).GetEnumerator();
            List <Users> listOfUsers = new List <Users>();

            while (await users.MoveNext())
            {
                ExportedUserRecord userRecord = users.Current;
                listOfUsers.Add(new Users
                {
                    Email       = userRecord.Email,
                    DisplayName = userRecord.DisplayName,
                    PhotoUrl    = userRecord.PhotoUrl,
                    PhoneNumber = userRecord.PhoneNumber,
                    UserId      = userRecord.Uid,
                });
            }
            return(listOfUsers);
        }
        public void UidOnly()
        {
            var user = new ExportedUserRecord(new GetAccountInfoResponse.User()
            {
                UserId = "user1",
            });

            Assert.Equal("user1", user.Uid);
            Assert.Null(user.DisplayName);
            Assert.Null(user.Email);
            Assert.Null(user.PhoneNumber);
            Assert.Null(user.PhotoUrl);
            Assert.Equal("firebase", user.ProviderId);
            Assert.False(user.Disabled);
            Assert.False(user.EmailVerified);
            Assert.Equal(UserRecord.UnixEpoch, user.TokensValidAfterTimestamp);
            Assert.Empty(user.CustomClaims);
            Assert.Empty(user.ProviderData);
            Assert.NotNull(user.UserMetaData);
            Assert.Null(user.UserMetaData.CreationTimestamp);
            Assert.Null(user.UserMetaData.LastSignInTimestamp);
            Assert.Null(user.PasswordHash);
            Assert.Null(user.PasswordSalt);
        }
        public void AllProperties()
        {
            var response = new GetAccountInfoResponse.User()
            {
                UserId        = "user1",
                DisplayName   = "Test User",
                Email         = "*****@*****.**",
                PhoneNumber   = "+11234567890",
                PhotoUrl      = "https://domain.com/user.png",
                Disabled      = true,
                EmailVerified = true,
                ValidSince    = 3600,
                CreatedAt     = 100,
                LastLoginAt   = 150,
                CustomClaims  = @"{""admin"": true, ""level"": 10}",
                PasswordHash  = "secret",
                PasswordSalt  = "nacl",
                Providers     = new List <GetAccountInfoResponse.Provider>()
                {
                    new GetAccountInfoResponse.Provider()
                    {
                        ProviderID = "google.com",
                        UserId     = "googleuid",
                    },
                    new GetAccountInfoResponse.Provider()
                    {
                        ProviderID  = "other.com",
                        UserId      = "otheruid",
                        DisplayName = "Other Name",
                        Email       = "*****@*****.**",
                        PhotoUrl    = "https://other.com/user.png",
                        PhoneNumber = "+10987654321",
                    },
                },
            };
            var user = new ExportedUserRecord(response);

            Assert.Equal("user1", user.Uid);
            Assert.Equal("Test User", user.DisplayName);
            Assert.Equal("*****@*****.**", user.Email);
            Assert.Equal("+11234567890", user.PhoneNumber);
            Assert.Equal("https://domain.com/user.png", user.PhotoUrl);
            Assert.Equal("firebase", user.ProviderId);
            Assert.True(user.Disabled);
            Assert.True(user.EmailVerified);
            Assert.Equal(UserRecord.UnixEpoch.AddSeconds(3600), user.TokensValidAfterTimestamp);
            Assert.Equal("secret", user.PasswordHash);
            Assert.Equal("nacl", user.PasswordSalt);

            var claims = new Dictionary <string, object>()
            {
                { "admin", true },
                { "level", 10L },
            };

            Assert.Equal(claims, user.CustomClaims);

            Assert.Equal(2, user.ProviderData.Length);
            var provider = user.ProviderData[0];

            Assert.Equal("google.com", provider.ProviderId);
            Assert.Equal("googleuid", provider.Uid);
            Assert.Null(provider.DisplayName);
            Assert.Null(provider.Email);
            Assert.Null(provider.PhoneNumber);
            Assert.Null(provider.PhotoUrl);

            provider = user.ProviderData[1];
            Assert.Equal("other.com", provider.ProviderId);
            Assert.Equal("otheruid", provider.Uid);
            Assert.Equal("Other Name", provider.DisplayName);
            Assert.Equal("*****@*****.**", provider.Email);
            Assert.Equal("+10987654321", provider.PhoneNumber);
            Assert.Equal("https://other.com/user.png", provider.PhotoUrl);

            var metadata = user.UserMetaData;

            Assert.NotNull(metadata);
            Assert.Equal(UserRecord.UnixEpoch.AddMilliseconds(100), metadata.CreationTimestamp);
            Assert.Equal(UserRecord.UnixEpoch.AddMilliseconds(150), metadata.LastSignInTimestamp);
        }