public async Task <IActionResult> SignIn(string username, string password)
        {
            if (String.IsNullOrWhiteSpace(username) || String.IsNullOrWhiteSpace(password))
            {
                return(BadRequest());
            }

            CustomLoginModel user = await _context.Users.FirstOrDefaultAsync(x => x.username == username && x.password == password);

            if (user != null)
            {
                var tokenHandler = new JwtSecurityTokenHandler();
                var key          = Encoding.ASCII.GetBytes(_configuration.GetConnectionString("GoogleClientSecret"));

                var tokenDescriptor = new SecurityTokenDescriptor
                {
                    Subject = new ClaimsIdentity(new[]
                    {
                        new Claim(ClaimTypes.Name, user.username),
                        new Claim(ClaimTypes.Email, user.email),
                        new Claim(ClaimTypes.NameIdentifier, user.id.ToString()),
                    }),
                    Expires            = DateTime.UtcNow.AddDays(30),
                    SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
                };
                var token = tokenHandler.CreateToken(tokenDescriptor);
                user.jwtToken = tokenHandler.WriteToken(token);
                return(Ok(user));
            }
            else
            {
                return(BadRequest("Invalid Username or password"));
            }
        }
예제 #2
0
        public async Task <IResultModel> Custom(CustomLoginModel model)
        {
            model.IP        = _ipHelper.IP;
            model.UserAgent = _ipHelper.UserAgent;

            var result = await _service.Login(model);

            return(LoginHandle(result));
        }
        public async Task <IActionResult> Register([Bind("username, password, email")] CustomLoginModel user)
        {
            if (ModelState.IsValid)
            {
                bool exists = await _context.Users.AnyAsync(x => x.username == user.username || x.email == user.email);

                if (exists)
                {
                    return(BadRequest("duplicate username or email"));
                }
                _context.Add(user);
                await _context.SaveChangesAsync();

                return(Ok(user.id));
            }
            else
            {
                return(BadRequest());
            }
        }
 public Task <ResultModel <LoginResultModel> > Handle(CustomLoginModel model)
 {
     throw new NotImplementedException();
 }
예제 #5
0
 public Task <ResultModel <LoginResultModel> > Login(CustomLoginModel model)
 {
     return(_customLoginHandler.Handle(model));
 }