Exemple #1
0
        public async Task <IActionResult> Register(LoginModelDto model)
        {
            try
            {
                if (_signInManager.IsSignedIn(User))
                {
                    return(BadRequest("Already logged in"));
                }
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                var user = new ApplicationUser
                {
                    UserName = model.Username
                };
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    return(Ok("Registered"));
                }
                return(BadRequest(result.Errors));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Exemple #2
0
        public async Task <IActionResult> Login(LoginModelDto model)
        {
            try
            {
                if (_signInManager.IsSignedIn(User))
                {
                    return(BadRequest("Already logged in"));
                }
                var loginResult = await _signInManager.PasswordSignInAsync(model.Username, model.Password, true, false);

                if (loginResult.Succeeded)
                {
                    var user = await _userManager.FindByNameAsync(model.Username);

                    var result = new LoginModelDto
                    {
                        Id       = user.Id,
                        Username = user.UserName
                    };
                    return(Ok(result));
                }
                return(BadRequest("Couldn't log in"));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public async Task <ActionResult <UserModelDto> > Login([FromBody] LoginModelDto model)
        {
            var user = await _userManager.FindByEmailAsync(model.Email);

            if (user == null)
            {
                throw new Exception("user authentication error ");
            }

            var result = await _signInManager.PasswordSignInAsync(user.UserName, model.Password, model.RememberMe, lockoutOnFailure : true);

            if (result.Succeeded)
            {
                return(new UserModelDto
                {
                    FirstName = user.FirstName,
                    LastName = user.LastName,
                    Email = user.Email,
                    UserName = user.UserName,
                    EmailConfirmed = user.EmailConfirmed,
                    JwtToken = _jwtToken.CreateToken(user),
                });
            }

            throw new Exception("not authorize");
        }
        public async Task <ActionResult <string> > PostLogin(LoginModelDto usuarioLogin)
        {
            var datosLoginUsuario = _mapper.Map <Usuario>(usuarioLogin);

            var resultadoValidacion = await _usuariosRepositorio.ValidarDatosLogin(datosLoginUsuario);

            if (!resultadoValidacion.resultado)
            {
                return(BadRequest("Usuario/Contraseña Inválidos."));
            }
            return(_tokenService.GenerarToken(resultadoValidacion.usuario));
        }
Exemple #5
0
        public async Task <IActionResult> IsAuthenticated()
        {
            var user = await _userManager.FindByIdAsync(User.FindFirst(ClaimTypes.NameIdentifier).Value);

            var result = new LoginModelDto
            {
                Id       = user.Id,
                Username = user.UserName
            };

            return(Ok(result));
        }
Exemple #6
0
        public async Task <IActionResult> Authenticate([FromBody] LoginModelDto login)
        {
            try {
                if (login == null || String.IsNullOrEmpty(login.Username) || String.IsNullOrEmpty(login.Password))
                {
                    throw new Exception("Invalid credentials");
                }

                string token = await _authManager.Authenticate(login.Username, login.Password);

                return(String.IsNullOrEmpty(token) ? (IActionResult)Unauthorized() : Ok(new { token }));
            } catch (Exception error) {
                return(BadRequest(error));
            }
        }
Exemple #7
0
        public UserDto Login(LoginModelDto loginModel)
        {
            CreateAdminIfNotExists();

            var user = _unitOfWork.Users.Find(u => u.Email.Equals(loginModel.Email)).FirstOrDefault();

            if (user == null || !_cryptoProvider.VerifyHash(loginModel.Password, user.PasswordHash))
            {
                throw new ServiceException("Invalid password", "Password");
            }

            var userDto = _mapper.Map <UserDto>(user);

            return(userDto);
        }
Exemple #8
0
        public UserDto Login(LoginModelDto loginModel)
        {
            var user = _unitOfWork.Users.Find(u => u.Email.Equals(loginModel.Email)).FirstOrDefault();

            if (user == null || !_cryptoProvider.VerifyHash(loginModel.Password, user.PasswordHash))
            {
                throw new ServiceException("Invalid password", "Password");
            }

            var userDto = _mapper.Map <UserDto>(user);

            _logger.LogInformation($"User login with email {loginModel.Email}");

            return(userDto);
        }
        public async Task <IActionResult> PostCambiarContrasena(LoginModelDto usuarioContrasenaDto)
        {
            try
            {
                var usuario   = _mapper.Map <Usuario>(usuarioContrasenaDto);
                var resultado = await _usuariosRepositorio.CambiarContrasena(usuario);

                if (!resultado)
                {
                    return(BadRequest());
                }
                return(NoContent());
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
Exemple #10
0
        public async Task <IActionResult> UserLogin(LoginModelDto model)
        {
            try
            {
                var loginResult = await _userManagerService.UserLogin(model);

                if (loginResult == null)
                {
                    var res = new ResponseDataObject
                    {
                        Message = "Authentication failed!",
                        Status  = false,
                    };
                    return(Ok(res));
                }

                if (loginResult.IsActived)
                {
                    var res = new ResponseDataObject <LoginResponse>
                    {
                        Data    = loginResult,
                        Message = "Login was successful",
                        Status  = true,
                    };
                    return(Ok(res));
                }
                if (!loginResult.IsSuccess)
                {
                    var res = new ResponseDataObject <LoginResponse>
                    {
                        Data    = loginResult,
                        Message = "Your Account is not activated yet!",
                        Status  = true,
                    };
                    return(Ok(res));
                }

                return(BadRequest("User login failed!"));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
        }
Exemple #11
0
        public async Task <IActionResult> Login(LoginModelDto loginModelDto)
        {
            var user = await _userManager.FindByNameAsync(loginModelDto.Username);

            var result = await _signInManager.CheckPasswordSignInAsync(user, loginModelDto.Password, false);

            if (result.Succeeded)
            {
                var appUser = _mapper.Map <UserForListDto>(user);

                return(Ok(new
                {
                    token = GenerateJwtToken(user),
                    user = appUser
                }));
            }

            return(Unauthorized("Unauthorized user"));
        }
        public async Task <ActionResult <UsuarioRegistroDto> > PostValidarUsuario(LoginModelDto usuarioContrasenaDto)
        {
            try
            {
                var usuario = _mapper.Map <Usuario>(usuarioContrasenaDto);

                var resultado = await _usuariosRepositorio.ValidarContrasena(usuario);

                if (!resultado)
                {
                    return(BadRequest());
                }
                return(Ok());
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
        /// <summary>
        /// Generates a token
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public async Task <string> GenerateToken(LoginModelDto user)
        {
            //Generating Token
            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.ASCII.GetBytes("Super Secret Key");
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[]
                {
                    //new Claim(),
                    new Claim(ClaimTypes.Name, user.EmailAddress)
                }),
                Expires            = DateTime.Now.AddDays(2),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha512Signature)
            };
            var token       = tokenHandler.CreateToken(tokenDescriptor);
            var tokenString = tokenHandler.WriteToken(token);

            return(await Task.FromResult(tokenString));
        }
        public async Task <LoginResponse> UserLogin(LoginModelDto modelDto)
        {
            LoginResponse response;
            var           checkUser = await CheckUserExists(u => u.EmailAddress == modelDto.EmailAddress || u.PhoneNo == modelDto.PhoneNo);

            if (checkUser != null)
            {
                var verifyPass = VerifyPasswordHash(modelDto.Password, checkUser.PaswordHash, checkUser.PasswordSalt);
                if (verifyPass)
                {
                    var status = await IsActivated(x => (x.EmailAddress == modelDto.EmailAddress || x.PhoneNo == modelDto.PhoneNo) && x.IsActivated == true);

                    if (status)
                    {
                        var token = await GenerateToken(modelDto);

                        //if user has account and is activated
                        response = new LoginResponse
                        {
                            Token        = token,
                            EmailAddress = modelDto.EmailAddress,
                            IsActived    = status,
                            IsSuccess    = true
                        };
                        return(response);
                    }

                    //if user has account and is not activated
                    response = new LoginResponse
                    {
                        Token        = null,
                        EmailAddress = modelDto.EmailAddress,
                        IsActived    = status,
                        IsSuccess    = false
                    };
                    return(response);
                }
            }
            //if user does not have account
            return(null);
        }
Exemple #15
0
        public async Task <IActionResult> CreateToken([FromBody] LoginModelDto dto)
        {
            IActionResult response = Unauthorized();
            var           user     = await _authSvc.LoginAsync(dto.Email, dto.Password);

            if (user == null)
            {
                return(response);
            }

            var userDto = _mapper.Map <UserModelDto>(user);

            userDto.Token        = _authSvc.BuildJwtToken(user);
            userDto.RefreshToken = _authSvc.BuildRefreshToken();

            await _authSvc.AddRefreshTokenAsync(userDto.RefreshToken, user.Email);

            response = Ok(userDto);

            return(response);
        }
Exemple #16
0
        public async Task <IActionResult> CreateToken([FromBody] LoginModelDto login)
        {
            var user = await _wpbService.AuthenticateAsync(login.Username, login.Password);

            if (user == null)
            {
                return(BadRequest(new ApiError(400, "BadRequest", "Username or password was incorrect.")));
            }

            var tokenString = GenerateToken(user);

            return(Ok(
                       new
            {
                Id = user.Id.ToString(),
                user.Username,
                user.FirstName,
                user.Email,
                Token = tokenString
            }));
        }
Exemple #17
0
        public void Login_ThrowsServiceException_IfPasswordIsNotValid()
        {
            var loginModel = new LoginModelDto {
                Password = "******"
            };
            var users = new List <User> {
                new User {
                    PasswordHash = "hash-stub"
                }
            };

            _unitOfWorkMock
            .Setup(unitOfWork => unitOfWork.Users.Find(It.IsAny <Expression <Func <User, bool> > >()))
            .Returns(users.AsQueryable());

            _cryptoProviderMock
            .Setup(provider => provider.VerifyHash(loginModel.Password, users[0].PasswordHash))
            .Returns(false);

            Assert.Throws <ServiceException>(() => _sut.Login(loginModel));
        }
        public async Task <IActionResult> Login([FromBody] LoginModelDto model)
        {
            var user = await userManager.FindByNameAsync(model.Username);

            if (user != null && await userManager.CheckPasswordAsync(user, model.Password))
            {
                var userRoles = await userManager.GetRolesAsync(user);

                var authClaims = new List <Claim>
                {
                    new Claim(ClaimTypes.Name, user.UserName),
                    new Claim("UserID", user.Id.ToString()),
                    new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                };

                foreach (var userRole in userRoles)
                {
                    authClaims.Add(new Claim(ClaimTypes.Role, userRole));
                }

                var authSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["JWT:Secret"]));

                var token = new JwtSecurityToken(
                    issuer: _configuration["JWT:ValidIssuer"],
                    audience: _configuration["JWT:ValidAudience"],
                    expires: DateTime.Now.AddHours(3),
                    claims: authClaims,
                    signingCredentials: new SigningCredentials(authSigningKey, SecurityAlgorithms.HmacSha256)
                    );

                return(Ok(new
                {
                    token = new JwtSecurityTokenHandler().WriteToken(token),
                    expiration = token.ValidTo
                }));
            }
            return(Unauthorized());
        }
Exemple #19
0
        public void Login_ReturnsUser_IfLoginModelIsValid()
        {
            var loginModel = new LoginModelDto {
                Email = "email-sub", Password = "******"
            };
            var users = new List <User> {
                new User {
                    Email = "email-sub", PasswordHash = "hash-stub"
                }
            };

            _unitOfWorkMock
            .Setup(unitOfWork => unitOfWork.Users.Find(It.IsAny <Expression <Func <User, bool> > >()))
            .Returns(users.AsQueryable());

            _cryptoProviderMock
            .Setup(provider => provider.VerifyHash(loginModel.Password, users[0].PasswordHash))
            .Returns(true);

            var result = _sut.Login(loginModel);

            Assert.Equal(result.Email, users[0].Email);
        }
Exemple #20
0
        public async Task <UserManagerResponse> Login([FromBody] LoginModelDto model)
        {
            var user = await _userManager.FindByEmailAsync(model.Email);

            if (user == null)
            {
                return(new UserManagerResponse
                {
                    IsSucces = false,
                    Message = "User with such email doesn't exist"
                });
            }
            var checkingPasswordResult = await _signInManager.PasswordSignInAsync(model.Email, model.Password, false, false);

            if (checkingPasswordResult.Succeeded)
            {
                return(await JwtService.GenerateJwt(user, _userManager, _authenticationOptions));
            }

            return(new UserManagerResponse
            {
                Message = "Incorect password"
            });
        }
Exemple #21
0
        public ClaimsIdentity GetClaimIdentity(LoginModelDto loginModelDto)
        {
            var user = _userManager.FindUser(loginModelDto.Login, loginModelDto.Password);

            return(_userManager.CreateIdentity(user));
        }
Exemple #22
0
        public bool CheckUser(LoginModelDto loginModelDto)
        {
            var user = _userManager.FindUser(loginModelDto.Login, loginModelDto.Password);

            return(user == null ? false : true);
        }
Exemple #23
0
 public bool IsAccountActive(LoginModelDto loginDto)
 {
     return(_userManager.IsAccountActive(loginDto.Login));
 }