public async Task <IActionResult> RegisterUserAsync([FromBody] User user)
        {
            if (user == null)
            {
                return(BadRequest());
            }
            var encrypter = new Encrypter();

            /*var doesUserExist = from users in _context.Users
             *                  where users.Username == user.Username && users.Password == encryptor.CalculateHash(user.Password)
             *                  select users;*/
            var isUserRegistered = await _context.Users
                                   .Where(x => x.Username == user.Username &&
                                          x.Password == encrypter.CalculateHash(user.Password))
                                   .FirstOrDefaultAsync();

            if (isUserRegistered != null)
            {
                return(StatusCode(200, "Already created"));
            }
            await _context.Users.AddAsync(new User
            {
                Username = user.Username,
                Password = encrypter.CalculateHash(user.Password)
            });

            await _context.SaveChangesAsync();

            return(Ok());
        }
        public async Task <IActionResult> RequestTokenAsync([FromBody] User user)
        {
            var encrypter        = new Encrypter();
            var isUserRegistered = await _context.Users
                                   .Where(x => x.Username == user.Username &&
                                          x.Password == encrypter.CalculateHash(user.Password))
                                   .FirstOrDefaultAsync();

            if (isUserRegistered != null)
            {
                var claims = new[]
                {
                    new Claim(ClaimTypes.Name, user.Username)
                };
                var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["SecurityKey"]));
                var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
                var token = new JwtSecurityToken(
                    issuer: "yourdomain.com",
                    audience: "yourdomain.com",
                    claims: claims,
                    expires: DateTime.Now.AddMinutes(2),
                    signingCredentials: creds);

                return(Ok(new
                {
                    token = new JwtSecurityTokenHandler().WriteToken(token)
                }));
            }
            return(BadRequest("Could not verify username and password"));
        }