public DocumentDbIdentityUserBuilder WithNormalizedUserName()
        {
            LookupNormalizer normalizer = new LookupNormalizer();

            identityUser.NormalizedUserName = normalizer.Normalize(identityUser.UserName);
            return(this);
        }
        public DocumentDbIdentityUserBuilder WithNormalizedEmail()
        {
            LookupNormalizer normalizer = new LookupNormalizer();

            identityUser.NormalizedEmail = normalizer.Normalize(identityUser.Email);
            return(this);
        }
        public DocumentDbFixture()
        {
            // TODO: Until DocumentDB SDK exposes it's JSON.NET settings, we need to hijack the global settings to serialize claims
            JsonConvert.DefaultSettings = () =>
            {
                return(new JsonSerializerSettings()
                {
                    Converters = new List <JsonConverter>()
                    {
                        new JsonClaimConverter()
                    }
                });
            };

            Client = new DocumentClient(
                serviceEndpoint: new Uri("https://localhost:8081", UriKind.Absolute),
                authKeyOrResourceToken: "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==",
                connectionPolicy: new ConnectionPolicy()
            {
                EnableEndpointDiscovery = false
            });

            Normalizer = new LookupNormalizer();

            DatabaseLink            = UriFactory.CreateDatabaseUri(this.Database);
            UserStoreCollectionLink = UriFactory.CreateDocumentCollectionUri(this.Database, this.UserStoreDocumentCollection);
            RoleStoreCollectionLink = UriFactory.CreateDocumentCollectionUri(this.Database, this.RoleStoreDocumentCollection);

            CreateTestDatabase();
        }
        public DocumentDbIdentityRoleBuilder WithNormalizedRoleName(string normalizedRoleName = null)
        {
            LookupNormalizer normalizer = new LookupNormalizer();

            identityRole.NormalizedName = normalizedRoleName ?? normalizer.Normalize(identityRole.Name);
            return(this);
        }
        public virtual async Task <IdentityDataSeedResult> SeedAsync(
            string adminEmail,
            string adminPassword,
            Guid?tenantId = null)
        {
            Check.NotNullOrWhiteSpace(adminEmail, nameof(adminEmail));
            Check.NotNullOrWhiteSpace(adminPassword, nameof(adminPassword));

            var result = new IdentityDataSeedResult();

            //"admin" user
            const string adminUserName = "******";
            var          adminUser     = await UserRepository.FindByNormalizedUserNameAsync(
                LookupNormalizer.NormalizeName(adminUserName)
                );

            if (adminUser != null)
            {
                return(result);
            }

            adminUser = new IdentityUser(
                GuidGenerator.Create(),
                Guid.Empty,
                adminUserName,
                adminEmail,
                tenantId
                )
            {
                Name = adminUserName
            };

            (await UserManager.CreateAsync(adminUser, adminPassword)).CheckErrors();
            result.CreatedAdminUser = true;

            //"admin" role
            const string adminRoleName = "admin";
            var          adminRole     = await RoleRepository.FindByNormalizedNameAsync(LookupNormalizer.NormalizeName(adminRoleName));

            if (adminRole == null)
            {
                adminRole = new IdentityRole(
                    GuidGenerator.Create(),
                    adminRoleName,
                    tenantId
                    )
                {
                    IsStatic = true,
                    IsPublic = true
                };

                (await RoleManager.CreateAsync(adminRole)).CheckErrors();
                result.CreatedAdminRole = true;
            }

            (await UserManager.AddToRoleAsync(adminUser, adminRoleName)).CheckErrors();

            return(result);
        }
Exemplo n.º 6
0
        public async Task GetListByNormalizedRoleNameAsync()
        {
            var users = await UserRepository.GetListByNormalizedRoleNameAsync(LookupNormalizer.NormalizeName("supporter"));

            users.Count.ShouldBe(2);
            users.ShouldContain(u => u.UserName == "john.nash");
            users.ShouldContain(u => u.UserName == "neo");
        }
Exemplo n.º 7
0
        public async Task GetRoleNamesAsync()
        {
            var john = await UserRepository.FindByNormalizedUserNameAsync(LookupNormalizer.NormalizeName("john.nash"));

            var roles = await UserRepository.GetRoleNamesAsync(john.Id);

            roles.Count.ShouldBe(3);
            roles.ShouldContain("moderator");
            roles.ShouldContain("supporter");
            roles.ShouldContain("manager");
        }
Exemplo n.º 8
0
        public async Task <IdentityDataSeedResult> SeedAsync(string adminEmail, string adminPassword, Guid?tenantId)
        {
            Check.NotNullOrWhiteSpace(adminEmail, nameof(adminEmail));
            Check.NotNullOrWhiteSpace(adminPassword, nameof(adminPassword));

            var result = new IdentityDataSeedResult();

            using (CurrentTenant.Change(tenantId))
            {
                //"admin" user
                const string adminUserName = "******";
                var          adminUser     = await UserRepository.FindByNormalizedUserNameAsync(
                    LookupNormalizer.NormalizeName(adminUserName)
                    );

                if (adminUser != null)
                {
                    return(result);
                }

                adminUser = new IdentityUser(GuidGenerator.Create(), adminUserName, adminEmail, tenantId)
                {
                    Name = adminUserName
                };

                (await UserManager.CreateAsync(adminUser, adminPassword)).CheckErrors();
                result.CreatedAdminUser = true;

                var adminRole = await RoleRepository.FindByNormalizedNameAsync(
                    LookupNormalizer.NormalizeName(ScoringRoleNames.Admin)
                    );

                if (adminRole == null)
                {
                    adminRole = new IdentityRole(GuidGenerator.Create(), ScoringRoleNames.Admin, tenantId)
                    {
                        IsStatic = true,
                        IsPublic = false
                    };

                    (await RoleManager.CreateAsync(adminRole)).CheckErrors();
                    result.CreatedAdminRole = true;
                }

                (await UserManager.AddToRoleAsync(adminUser, ScoringRoleNames.Admin)).CheckErrors();
                var multiTenancySides = CurrentTenant.GetMultiTenancySide();
                await GrantedAllPermissionsToAdminUser(adminUser, multiTenancySides);

                return(result);
            }
        }
        public async Task SendPasswordResetCodeAsync(string userName)
        {
            if (string.IsNullOrWhiteSpace(userName))
            {
                throw new ArgumentException("Invalid userName");
            }

            var userE = await UserManager.FindByNameAsync(LookupNormalizer.NormalizeName(userName)) ?? throw new EntityNotFoundException();

            _ = await UserManager.UpdateSecurityStampAsync(userE);

            var token = await UserManager.GeneratePasswordResetTotpTokenAsync(userE);

            await EmailSender.SendAsync(userE.Email, "Password reset code", token);
        }
Exemplo n.º 10
0
        public DocumentDbFixture()
        {
            Client = DocumentClientFactory.CreateClient(
                serviceEndpoint: new Uri("https://localhost:8081", UriKind.Absolute),
                authKeyOrResourceToken: "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==",
                connectionPolicy: new ConnectionPolicy()
            {
                EnableEndpointDiscovery = false
            });

            Normalizer = new LookupNormalizer();

            DatabaseLink            = UriFactory.CreateDatabaseUri(this.Database);
            UserStoreCollectionLink = UriFactory.CreateDocumentCollectionUri(this.Database, this.UserStoreDocumentCollection);
            RoleStoreCollectionLink = UriFactory.CreateDocumentCollectionUri(this.Database, this.RoleStoreDocumentCollection);

            CreateTestDatabase();
        }
Exemplo n.º 11
0
        public async Task Should_Eager_Load_User_Collections()
        {
            var john = await UserRepository.FindByNormalizedUserNameAsync(LookupNormalizer.NormalizeName("john.nash"));

            john.Roles.ShouldNotBeNull();
            john.Roles.Any().ShouldBeTrue();

            john.Logins.ShouldNotBeNull();
            john.Logins.Any().ShouldBeTrue();

            john.Claims.ShouldNotBeNull();
            john.Claims.Any().ShouldBeTrue();

            john.Tokens.ShouldNotBeNull();
            john.Tokens.Any().ShouldBeTrue();

            john.OrganizationUnits.ShouldNotBeNull();
            john.OrganizationUnits.Any().ShouldBeTrue();
        }
Exemplo n.º 12
0
        public DocumentDbIdentityUserBuilder AddRole(DocumentDbIdentityRole role = null)
        {
            if (role == null)
            {
                LookupNormalizer normalizer  = new LookupNormalizer();
                string           newRoleName = Guid.NewGuid().ToString().ToUpper();

                role = new DocumentDbIdentityRole()
                {
                    Id             = Guid.NewGuid().ToString().ToUpper(),
                    Name           = newRoleName,
                    NormalizedName = normalizer.Normalize(newRoleName)
                };
            }
            else
            {
                identityUser.Roles.Add(role);
            }

            return(this);
        }
        public async Task ResetPasswordAsync(string userName, string resetCode, string password)
        {
            if (string.IsNullOrWhiteSpace(userName) ||
                string.IsNullOrWhiteSpace(resetCode) ||
                string.IsNullOrWhiteSpace(password))
            {
                throw new ArgumentException();
            }

            var userE = await UserManager.FindByNameAsync(LookupNormalizer.NormalizeName(userName)) ?? throw new EntityNotFoundException();

            if (!(await UserManager.VerifyPasswordResetTotpTokenAsync(userE, resetCode)))
            {
                throw new BusinessException();
            }

            await UserManager.RemovePasswordAsync(userE);

            await UserManager.AddPasswordAsync(userE, password);

            await UserManager.UpdateSecurityStampAsync(userE);
        }
 public async Task <bool> IsUsernameAvailable(string username)
 {
     return((await IdentityUserRepository.FindByNormalizedUserNameAsync(LookupNormalizer.NormalizeName(username))) == null);
 }
Exemplo n.º 15
0
        public async System.Threading.Tasks.Task ModifyUserRolesChangesAsync(ApplicationUser user, string[] roles)
        {
            var userStore = new UserStore <ApplicationUser>(_context);


            /* var manager = new UserManager<ApplicationUser>(userStore);
             *  Severity	Code	Description	Project	File	Line	Suppression State
             *  Error	CS70  36
             *  There is no argument given that corresponds to the required formal parameter 'optionsAccessor'
             *  of 'UserManager<ApplicationUser>.UserManager(IUserStore<ApplicationUser>, IOptions<IdentityOptions>,
             *  IPasswordHasher<ApplicationUser>, IEnumerable<IUserValidator<ApplicationUser>>, IEnumerable<IPasswordValidator<ApplicationUser>>,
             *  ILookupNormalizer, IdentityErrorDescriber, IServiceProvider, ILogger<UserManager<ApplicationUser>>)'
             *  RateMyTeam	D:\Projects\MembersRating\RateMyTeam\SeedData\SeedSampleData.cs	381	Active
             */

            var passwordHasher  = new PasswordHasher <ApplicationUser>();
            var itemsValidators = new List <UserValidator <ApplicationUser> >();

            itemsValidators.Add(new UserValidator <ApplicationUser>());
            var passwordValidators = new List <PasswordValidator <ApplicationUser> >();

            passwordValidators.Add(new PasswordValidator <ApplicationUser>());
            var keyNormalizer = new LookupNormalizer();

            var errors = new IdentityErrorDescriber();
            //LoggerFactory logger = new LoggerFactory<ApplicationUserManager<ApplicationUser>>();

            /*
             * var _userManager = new UserManager<ApplicationUser>(
             *    userStore,
             *    null,
             *    passwordHasher,
             *    itemsValidators,
             *    passwordValidators,
             *    null,
             *    errors,
             *    services, null
             *    );
             */

            // ApplicationUserManager _userManager = services.GetService(typeof(ApplicationUserManager)) as ApplicationUserManager;
            //services.GetService<UserManager<ApplicationUser>>();

            //UserManager<ApplicationUser> _userManager = dbContext.GetService<UserManager<ApplicationUser>>();
            //var store = new UserStore(dbContext);


            //if (_userManager == null)
            //    _userManager = new ApplicationUserManager(new UserStore<ApplicationUserManager<ApplicationUser>>(dbContext));

            //var passwordHasher = new PasswordHasher();
            // UserManager<ApplicationUser> _userManager =  new UserManager<ApplicationUser>(store );

            //ApplicationUser user = await _userManager.FindByEmailAsync(email);
            var blUserExist = false;
            var user_rec    = _context.Users.SingleOrDefault(u => u.NormalizedEmail == user.Email.ToUpper());

            if (user_rec != null)
            {
                blUserExist = true;
            }


            /*
             * var listUserRoles = new List<IdentityRole>();
             *
             * foreach (string role in roles) {
             *  var role2 = new IdentityRole( role );
             *  var role_rec = _context.Roles.SingleOrDefault(r => r.NormalizedName == role.ToUpper());
             *  if (role_rec == null) {
             *      _roleManager.CreateAsync(role2).Wait();
             *  }
             *  else {
             *      _roleManager.UpdateAsync(role2).Wait();
             *      var userRole = new IdentityUserRole<string>
             *      {
             *          RoleId = role_rec.Id
             *      };
             *      user.Roles.Add(userRole);
             *  }
             *  userStore.AddToRoleAsync(user, role ).Wait();
             *  listUserRoles.Add(role2);
             * }
             */

            foreach (string role in roles)
            {
                var blUserIsInRole = await _userManager.IsInRoleAsync(user, role);

                if (!blUserIsInRole)
                {
                    await _userManager.AddToRoleAsync(user, role);
                }

                /*
                 * var = await _userManager.IsInRoleAsync(user_rec, "" );
                 *
                 * if (!await _userManager.IsInRoleAsync(user, adminRole.Name)) {
                 *      await userManager.AddToRoleAsync(user, adminRole.Name);
                 *  }*/
            }

            if (!blUserExist)
            {
                //var listUserRoles = user.Roles;
                //user.Roles = listUserRoles;
                //userStore.AddToRoleAsync(user, listUserRoles).Wait();
            }
            else
            {
                /*
                 * IdentityResult roleRuslt = isExist ? await _roleManager.UpdateAsync(role2).Wait()
                 *                          : await _roleManager.CreateAsync(role2).Wait()
                 */
                //_context.Entry(user).State = EntityState.Detached;

                //_userManager.AddToRoleAsync(user, role).Wait();
                //userStore.UpdateAsync(user).Wait();
            }



            try {
                _context.SaveChanges();
            }
            catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
            // var result = await _userManager.AddToRolesAsync(user, roles );
        }
Exemplo n.º 16
0
        public virtual async Task <IdentityDataSeedResult> SeedAsync(
            string adminPhoneNumber,
            string adminPassword,
            Guid?tenantId = null)
        {
            Check.NotNullOrWhiteSpace(adminPhoneNumber, nameof(adminPhoneNumber));
            Check.NotNullOrWhiteSpace(adminPassword, nameof(adminPassword));

            var result = new IdentityDataSeedResult();

            //"超管账号" 用户
            const string adminName     = "超管账号";
            string       adminUserName = adminPhoneNumber; // 将用户名设置为手机号 userName -> phoneNumber(默认)
            var          adminUser     = await UserRepository.FindByNormalizedUserNameAsync(
                LookupNormalizer.NormalizeName(adminUserName)
                );

            if (adminUser != null)
            {
                return(result);
            }

            adminUser = new IdentityUser(
                // GuidGenerator.Create (),
                new Guid("716d0fe6-3101-057b-ba30-39f53e403930"),
                adminUserName,
                adminPhoneNumber,
                tenantId
                )
            {
                Name = adminName
            };

            (await UserManager.CreateAsync(adminUser, adminPassword)).CheckErrors();
            result.CreatedAdminUser = true;

            //"超级管理员" 角色
            const string adminRoleName = "超级管理员";
            var          adminRole     = await RoleRepository.FindByNormalizedNameAsync(LookupNormalizer.NormalizeName(adminRoleName));

            if (adminRole == null)
            {
                adminRole = new IdentityRole(
                    // GuidGenerator.Create (),
                    new Guid("63eab816-3619-a6d7-c82b-39f53e403b4a"),
                    adminRoleName,
                    tenantId
                    )
                {
                    IsStatic = true,
                    IsPublic = true
                };

                (await RoleManager.CreateAsync(adminRole)).CheckErrors();
                result.CreatedAdminRole = true;
            }

            (await UserManager.AddToRoleAsync(adminUser, adminRoleName)).CheckErrors();

            return(result);
        }
        public async Task <AppUserDto> GetByUsername(string username)
        {
            var userE = await IdentityUserRepository.FindByNormalizedUserNameAsync(LookupNormalizer.NormalizeName(username));

            return(ObjectMapper.Map <Volo.Abp.Identity.IdentityUser, AppUserDto>(userE));
        }
Exemplo n.º 18
0
 public async Task FindByNormalizedUserNameAsync()
 {
     (await UserRepository.FindByNormalizedUserNameAsync(LookupNormalizer.NormalizeName("john.nash"))).ShouldNotBeNull();
     (await UserRepository.FindByNormalizedUserNameAsync(LookupNormalizer.NormalizeName("undefined-user"))).ShouldBeNull();
 }
Exemplo n.º 19
0
 public async Task FindByNormalizedEmailAsync()
 {
     (await UserRepository.FindByNormalizedEmailAsync(LookupNormalizer.NormalizeEmail("*****@*****.**"))).ShouldNotBeNull();
     (await UserRepository.FindByNormalizedEmailAsync(LookupNormalizer.NormalizeEmail("*****@*****.**"))).ShouldNotBeNull();
     (await UserRepository.FindByNormalizedEmailAsync(LookupNormalizer.NormalizeEmail("*****@*****.**"))).ShouldBeNull();
 }