Ejemplo n.º 1
0
        //[Produces(typeof(Models.Users))]
        public async Task <IActionResult> Register([FromBody] DTO.UserForRegisterDTO userForRegister)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            bool bDuplicateaUserName = await _usersRepository.UserExists(userForRegister.userName);

            if (bDuplicateaUserName)
            {
                return(StatusCode(400, "UserName is already exists"));
            }

            var user = new Users
            {
                UserName = userForRegister.userName,
                Email    = userForRegister.email
            };

            user = await _usersRepository.Register(user, userForRegister.password);

            var results = new ObjectResult(user)
            {
                StatusCode = (int)HttpStatusCode.OK
            };

            return(results);
        }
Ejemplo n.º 2
0
        // [Produces(typeof(Models.Users))]
        public async Task <IActionResult> Login([FromBody] DTO.UserForRegisterDTO userForRegister)
        {
            // if (!ModelState.IsValid)
            // {
            //     return BadRequest(ModelState);
            // }

            var dbUser = await _usersRepository.Login(userForRegister.userName.ToLower(), userForRegister.password);

            if (dbUser != null)
            {
                var claims = new[]
                {
                    new Claim(ClaimTypes.NameIdentifier, dbUser.UserId.ToString()),
                    new Claim(ClaimTypes.Name, dbUser.UserName),
                };

                var key   = new SymmetricSecurityKey(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);

                return(Ok(new
                {
                    token = tokenHandler.WriteToken(token)
                }));
            }
            else
            {
                return(StatusCode(500, "Failed to login"));
            }
        }