Ejemplo n.º 1
0
        public async Task <IActionResult> Login(LoginUserDm loginUser)
        {
            var userFromRepo = await _authRepository.Login(loginUser.Username.ToLower(), loginUser.Password);

            if (userFromRepo == null)
            {
                return(Unauthorized(new ResponseDm
                {
                    IsSuccess = false,
                    Message = "User not Authorized."
                }));
            }

            var roles  = userFromRepo.UserGroups.Select(x => x.UserGroupId).ToArray();
            var claims = new[]
            {
                new Claim(ClaimTypes.NameIdentifier, userFromRepo.UserName.ToString()),
                new Claim(ClaimTypes.Name, $"{userFromRepo.FirstName} {userFromRepo.LastName}"),
                new Claim(ClaimTypes.Role, string.Join(",", roles))
            };

            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.Token));

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

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(1),
                SigningCredentials = credentials
            };
            var userToReturn = _mapper.Map <UserListDm>(userFromRepo);
            var tokenHandler = new JwtSecurityTokenHandler();

            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(Ok(new
            {
                token = tokenHandler.WriteToken(token),
                user = userToReturn
            }));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Login(LoginUserDm loginUser)
        {
            var userFromRepo = await _authRepository.Login(loginUser.Username.ToLower(), loginUser.Password);

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

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

            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.Token));

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

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(1),
                SigningCredentials = credentials
            };
            var userToReturn = _mapper.Map <UserListDm>(userFromRepo);
            var tokenHandler = new JwtSecurityTokenHandler();

            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(Ok(new
            {
                token = tokenHandler.WriteToken(token),
                user = userToReturn
            }));
        }