Esempio n. 1
0
        public async Task <IActionResult> Login(UserToLoginDTO userToLoginDTO)
        {
            var userFromRepo = await _repo.Login(userToLoginDTO.Username.ToLower(), userToLoginDTO.Password);

            if (userFromRepo == null)
            {
                return(Unauthorized());
            }

            var claims = new[] {
                new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()),
                new Claim(ClaimTypes.Name, userFromRepo.UserName)
            };

            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_cofig.GetSection("AppSettings:Token").Value));

            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);

            var tokenDescriptor = new SecurityTokenDescriptor {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(1),
                SigningCredentials = creds
            };

            var tokenHandler = new JwtSecurityTokenHandler();

            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(Ok(
                       new {
                token = tokenHandler.WriteToken(token)
            }
                       ));
        }
Esempio n. 2
0
        public async Task <UserDTO> Login(UserToLoginDTO userToLogin)
        {
            try
            {
                userToLogin.Username = userToLogin.Username.ToLower();
                var userFromDB = await _userRepo.GetFromUsernameAsync(userToLogin.Username);

                if (userFromDB == null)
                {
                    return(null);
                }
                if (!VerifyPasswordHash(userToLogin.Password, userFromDB.PasswordHash, userFromDB.PasswordSalt))
                {
                    return(null);
                }


                userFromDB.LastActive = DateTime.Now;
                await _genericRepo.UpdateAsync(userFromDB);

                return(ConvertUser(userFromDB));
            }
            catch
            {
                throw new Exception("UserService failed to login server");
            }
        }
Esempio n. 3
0
        public async Task <IActionResult> Login(UserToLoginDTO model)
        {
            if (ModelState.IsValid)
            {
                //get user by email
                var user = _userManager.Users.FirstOrDefault(x => x.Email == model.Email);

                //check if user exist
                if (user == null)
                {
                    return(BadRequest("User does not exist"));
                }

                var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, false, false);

                if (result.Succeeded)
                {
                    var getToken = JwtTokenConfig.GetToken(user, _config);
                    return(Ok(getToken));
                }
                return(Unauthorized("Invalid credentials"));
            }

            return(BadRequest(model));
        }
Esempio n. 4
0
        public async Task <IActionResult> DeleteUser(UserToLoginDTO user)
        {
            var userId = Int32.Parse(this.User.FindFirstValue(ClaimTypes.NameIdentifier));
            await _userService.DeleteUser(userId, user.Password);

            return(StatusCode(200));
        }
        public async Task <IActionResult> LoginUser([FromBody] UserToLoginDTO userToLogin)
        {
            if (ModelState.IsValid)
            {
                var getUserByEmail = _userManager.Users.FirstOrDefault(user => user.Email == userToLogin.Email);
                var userPwd        = await _userManager.CheckPasswordAsync(getUserByEmail, userToLogin.Password);

                if (userPwd)
                {
                    //Establish the claims of the unique user
                    var claims = new[]
                    {
                        new Claim(ClaimTypes.NameIdentifier, getUserByEmail.Id),
                        new Claim(ClaimTypes.Name, getUserByEmail.FirstName)
                    };

                    //Generate the token key
                    var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.GetSection("AppSettings:SecuredToken").Value));

                    //Generate the sign-in credentials
                    var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);

                    //Create the security token descriptor (token descriptor outlines the shape of your token)
                    var securityTokenDescriptor = new SecurityTokenDescriptor
                    {
                        Subject            = new ClaimsIdentity(claims),
                        Expires            = DateTime.Now.AddDays(3),
                        SigningCredentials = creds
                    };

                    //Next, we create the token handler
                    var tokenHandler = new JwtSecurityTokenHandler();

                    //Then, we create the token
                    var token = tokenHandler.CreateToken(securityTokenDescriptor);

                    //...and generate it
                    var generatedToken = tokenHandler.WriteToken(token);

                    var userToReturn = new LoggedInUserDetailsDTO
                    {
                        FirstName  = getUserByEmail.FirstName,
                        LastName   = getUserByEmail.LastName,
                        Email      = getUserByEmail.Email,
                        Department = getUserByEmail.Department,
                        Token      = generatedToken
                    };
                    return(Ok(userToReturn));
                }
            }
            return(BadRequest());
        }
Esempio n. 6
0
        public async Task <IActionResult> Login([FromBody] UserToLoginDTO loginDTO)
        {
            var userFromRepo = await _repo.Login(loginDTO.Email.ToLower(), loginDTO.Password);

            if (userFromRepo == null || !userFromRepo.IsValid())
            {
                return(Unauthorized());
            }

            var token = this.GenerateToken(userFromRepo);
            var user  = _mapper.Map <UserToListDTO>(userFromRepo);

            return(Ok(new { token, user }));
        }
Esempio n. 7
0
        public async Task <IActionResult> Login(UserToLoginDTO userToLoginDTO)
        {
            try
            {
                var userFromRepo = await repo.Login(userToLoginDTO.Username.ToLower(), userToLoginDTO.Password);

                if (userFromRepo == null)
                {
                    //Unauthorized
                    return(StatusCode(401, "Bad login"));
                }
                var claims = new[]
                {
                    new Claim(ClaimTypes.NameIdentifier, userFromRepo.UserId.ToString()),
                    new Claim(ClaimTypes.Name, userFromRepo.Username)
                    //More claims here
                };

                var key = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes(config.GetSection("Appsettings:Token").Value));

                var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);

                var tokenDescriptor = new SecurityTokenDescriptor
                {
                    Subject            = new ClaimsIdentity(claims),
                    Expires            = DateTime.Now.AddDays(1),
                    SigningCredentials = creds
                };

                var tokenhandler = new JwtSecurityTokenHandler();

                var token = tokenhandler.CreateToken(tokenDescriptor);

                //Ok
                return(StatusCode(200, new { token = tokenhandler.WriteToken(token) }));
            }
            catch
            {
                return(StatusCode(500, "Something went wrong while attempting to log in, please try again in a few moments."));
            }
        }