Esempio n. 1
0
        public async Task <ObjectResult> Login([FromBody] LoginViewModel usuario)
        {
            ObjectDataResult <JWTToken> result = new ObjectDataResult <JWTToken>();
            bool credenciaisValidas            = false;

            if (usuario != null && !string.IsNullOrWhiteSpace(usuario.UserName))
            {
                // Verifica a existência do usuário nas tabelas do
                // ASP.NET Core Identity
                var userIdentity = await _userManager
                                   .FindByNameAsync(usuario.UserName);

                if (userIdentity != null)
                {
                    // Efetua o login com base no Id do usuário e sua senha
                    SignInResult resultadoLogin = _signInManager
                                                  .CheckPasswordSignInAsync(userIdentity, usuario.Password, false)
                                                  .Result;
                    credenciaisValidas = resultadoLogin.Succeeded;
                }
            }

            if (credenciaisValidas)
            {
                result.Success = true;
                result.Data    = _accountManagement.GenerateToken(usuario.UserName);
            }
            else
            {
                result.Success = false;
                result.Message = "invalid credentials";
            }

            return(result);
        }
Esempio n. 2
0
        public async Task <ObjectResult> UpdatePwd(string userName, UpdatePasswordViewModel userToUpdate)
        {
            ObjectDataResult <IdentityResult> result = new ObjectDataResult <IdentityResult>();
            ApplicationUser user = await _userManager.FindByNameAsync(userName);


            IdentityResult idRes = await _userManager.ChangePasswordAsync(user, userToUpdate.OldPassword, userToUpdate.NewPassword);

            result.Success = idRes.Succeeded;
            result.Message = idRes.Errors.Select(x => x.Description).FirstOrDefault();
            result.Data    = idRes.Succeeded ? idRes : null;

            return(result);
        }
Esempio n. 3
0
        public async Task <ObjectResult> CreateUser(
            ApplicationUser user,
            string password)
        {
            ObjectDataResult <IdentityResult> result = new ObjectDataResult <IdentityResult>();

            try
            {
                if (_userManager.FindByNameAsync(user.UserName).Result == null)
                {
                    var resultado = await _userManager
                                    .CreateAsync(user, password);

                    if (resultado.Succeeded)
                    {
                        IdentityResult x = await _userManager.AddToRoleAsync(user, Roles.BASE_ROLE);

                        result.Success = x.Succeeded;
                        if (x.Succeeded)
                        {
                            result.Data = resultado;
                        }
                        else
                        {
                            result.Message = x.Errors.Select(x => x.Description).FirstOrDefault();
                        }
                    }
                    else
                    {
                        result.Success = resultado.Succeeded;
                        result.Message = resultado.Errors.Select(x => x.Description).FirstOrDefault();
                    }
                }

                result.Success = false;
                result.Message = "user already exists";
            }
            catch (Exception e)
            {
                result.Success = false;
                result.Message = e.Message;
            }

            return(result);
        }
Esempio n. 4
0
        public async Task TestChangePassword(string userName)
        {
            await CreateUser(userName);

            var request = new HttpRequestMessage(new HttpMethod("POST"), "/api/Account/Login");

            LoginViewModel userLogin = new LoginViewModel
            {
                UserName = userName,
                Password = "******"
            };

            request.Content = new StringContent(JsonConvert.SerializeObject(userLogin), Encoding.UTF8, "application/json");

            var response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            ObjectDataResult <JWTToken> result = JsonConvert.DeserializeObject <ObjectDataResult <JWTToken> >(response.Content.ReadAsStringAsync().Result);

            var request2 = new HttpRequestMessage(new HttpMethod("POST"), "/api/Account/ChangePassword");
            UpdatePasswordViewModel pwdUpdate = new UpdatePasswordViewModel
            {
                OldPassword = "******",
                NewPassword = "******"
            };

            request2.Content = new StringContent(JsonConvert.SerializeObject(pwdUpdate), Encoding.UTF8, "application/json");
            request2.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", $"{result.Data.AccessToken}");


            response = await _client.SendAsync(request2);

            response.EnsureSuccessStatusCode();

            ObjectResult changePwdResult = JsonConvert.DeserializeObject <ObjectResult>(response.Content.ReadAsStringAsync().Result);


            Assert.True(changePwdResult.Success);
        }
Esempio n. 5
0
        public async Task <ObjectResult> DeleteUser(string userName)
        {
            ObjectDataResult <IdentityResult> result = new ObjectDataResult <IdentityResult>();

            ApplicationUser user = await _userManager.FindByNameAsync(userName);

            if (user == null)
            {
                result.Success = false;
                result.Message = "user not found";

                return(result);
            }

            IdentityResult wasDeleted = await _userManager.DeleteAsync(user);

            result.Success = wasDeleted.Succeeded;
            result.Message = wasDeleted.Errors.Select(x => x.Description).FirstOrDefault();
            result.Data    = wasDeleted.Succeeded ? wasDeleted : null;

            return(result);
        }