示例#1
0
        public async Task <AuthResultSM> UpdateCurrentUser(ClaimsPrincipal principal, UserSM userUpdates)
        {
            var user = await _userManager.GetUserAsync(principal);

            if (user == null)
            {
                return(AuthResultFactory.CreateUserNotFoundResult());
            }

            if (userUpdates.Email != user.Email)
            {
                var setEmailResult = await _userManager.SetEmailAsync(user, userUpdates.Email);

                if (!setEmailResult.Succeeded)
                {
                    return(AuthResultFactory.CreateResultFromIdentityResult(setEmailResult));
                }
                var setUserNameResult = await _userManager.SetUserNameAsync(user, userUpdates.Email);

                if (!setUserNameResult.Succeeded)
                {
                    return(AuthResultFactory.CreateResultFromIdentityResult(setEmailResult));
                }
            }

            user.FirstName = userUpdates.FirstName;
            user.LastName  = userUpdates.LastName;
            var result = await _userManager.UpdateAsync(user);

            return(AuthResultFactory.CreateResultFromIdentityResult(result));
        }
示例#2
0
        public async Task <AuthResultSM> RegisterUserAsync(UserSM user, string password)
        {
            var appUser = Mapper.Map <TAppUser>(user);
            var result  = await _userManager.CreateAsync(appUser, password);

            return(AuthResultFactory.CreateResultFromIdentityResult(result));
        }
示例#3
0
        public async Task <AuthResultSM> ChangePasswordAsync(ClaimsPrincipal principal, string oldPassword, string newPassword)
        {
            var user = await _userManager.GetUserAsync(principal);

            if (user == null)
            {
                return(AuthResultFactory.CreateUserNotFoundResult());
            }

            var changePasswordResult = await _userManager.ChangePasswordAsync(user, oldPassword, newPassword);

            return(AuthResultFactory.CreateResultFromIdentityResult(changePasswordResult));
        }
示例#4
0
        public async Task <AuthResultSM> SeedData()
        {
            try
            {
                foreach (var appRole in ApplicationRolesDefinition.AllRoles())
                {
                    var exists = await _roleManager.RoleExistsAsync(appRole);

                    if (!exists)
                    {
                        var role = (TAppRole)Activator.CreateInstance(typeof(TAppRole)); // TAppRole.Create();
                        role.Name = appRole;
                        await _roleManager.CreateAsync(role);
                    }
                }

                var adminUser = new UserSM
                {
                    Email     = "*****@*****.**",
                    FirstName = "Admin",
                    LastName  = "Admin"
                };

                // if there are any users in the admin role we don't want to create any users, so just return
                var usersInAdminRole = await _userManager.GetUsersInRoleAsync(ApplicationRolesDefinition.RoleAdmin);

                if (usersInAdminRole.Any())
                {
                    return(AuthResultFactory.CreateGenericSuccessResult());
                }

                var result = await RegisterUserAsync(adminUser, "Qwe!23");

                if (result.Succeeded)
                {
                    var user = await _userManager.FindByNameAsync(adminUser.Email);

                    await _userManager.AddToRoleAsync(user, ApplicationRolesDefinition.RoleAdmin);

                    return(AuthResultFactory.CreateGenericSuccessResult());
                }
                else
                {
                    return(AuthResultFactory.CreateGenericFailResult(result.Errors.FirstOrDefault()?.Description));
                }
            }
            catch (Exception ex)
            {
                return(AuthResultFactory.CreateGenericFailResult(ex.Message));
            }
        }
示例#5
0
        public async Task <AuthResultSM> ResetPasswordAsync(string email, string code, string newPassword)
        {
            var user = await _userManager.FindByEmailAsync(email);

            if (user == null)
            {
                // Don't reveal that the user does not exist
                return(AuthResultFactory.CreateSilentFailResult());
            }

            var result = await _userManager.ResetPasswordAsync(user, code, newPassword);

            return(AuthResultFactory.CreateResultFromIdentityResult(result));
        }
示例#6
0
        public async Task <AuthResultSM> UpdateRole(string userName, string role)
        {
            var user = await _userManager.FindByNameAsync(userName);

            if (user != null)
            {
                var currentRole = await GetUserRoleInternalAsync(user);

                if (currentRole != null)
                {
                    await _userManager.RemoveFromRoleAsync(user, currentRole);
                }

                var addToRoleResult = await _userManager.AddToRoleAsync(user, role);

                return(AuthResultFactory.CreateResultFromIdentityResult(addToRoleResult));
            }

            return(AuthResultFactory.CreateUserNotFoundResult());
        }
示例#7
0
        public async Task <AuthResultSM> AuthenticateAsync(string userName, string password, bool isPersistent, bool lockoutOnFailure)
        {
            var result = await _signInManager.PasswordSignInAsync(userName, password, isPersistent, lockoutOnFailure);

            return(AuthResultFactory.CreateResultFromSignInResult(result));
        }