public async Task <IActionResult> Login([FromBody] LoginForDto model) { try { if (string.IsNullOrEmpty(model.UserName) || string.IsNullOrEmpty(model.Password)) { return(BadRequest("Lütfen tüm alanları doldurunuz.")); } var user = await _userManager.FindByNameAsync(model.UserName); if (user == null) { return(BadRequest($"{model.UserName} adında bir kullanıcı bulunamadı.")); } var signIn = await _signInManager.PasswordSignInAsync(user, model.Password, model.RememberMe, false); if (!signIn.Succeeded) { return(BadRequest("Kullanıcı girişi başarısız. Lütfen bilgilerinizi kontrol ediniz.")); } var userRoles = await _userManager.GetRolesAsync(user); var expireDate = DateTime.UtcNow.AddHours(1); var tokenHandler = new JwtSecurityTokenHandler(); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.NameIdentifier, user.Id), new Claim(ClaimTypes.Name, user.UserName), new Claim(ClaimTypes.Email, user.Email), new Claim(ClaimTypes.Role, string.Join(",", userRoles)) }), Expires = expireDate, SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_appSettings.SecretKey)), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); var userInfo = new UserInfo { Id = user.Id, Name = user.UserName, Email = user.Email, Token = tokenHandler.WriteToken(token), ExpireDate = expireDate, Roles = userRoles.ToArray() }; return(Ok(userInfo)); } catch (Exception ex) { return(StatusCode(500, ex.Message)); } }
public IActionResult Login(string ReturnUrl) { var model = new LoginForDto { ReturnUrl = ReturnUrl }; return(View(new LoginForDto())); }
public async Task <IActionResult> Login([FromBody] LoginForDto model) { if (ModelState.IsValid) { var result = await _userService.LoginUserAsync(model); if (result.IsSuccess) { return(Ok(result)); } return(BadRequest(result)); } return(BadRequest("Some properties are not valid.")); // Status code: 400 }
public async Task <UserManagerResponse> LoginUserAsync(LoginForDto loginForDto) { var user = await _userManager.FindByEmailAsync(loginForDto.Email); if (user == null) { return new UserManagerResponse { Message = "Bu e-posta adresine sahip bir kullanıcı yok.", IsSuccess = false } } ; var result = await _userManager.CheckPasswordAsync(user, loginForDto.Password); if (!result) { return new UserManagerResponse { Message = "Geçersiz şifre.", IsSuccess = false } } ; IdentityOptions _options = new IdentityOptions(); var claims = new List <Claim>() { new Claim(ClaimTypes.Email, loginForDto.Email), new Claim(ClaimTypes.NameIdentifier, user.Id), }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["AuthSettings:Key"])); var token = new JwtSecurityToken( issuer: _configuration["AuthSettings:Issuer"], audience: _configuration["AuthSettings:Audience"], claims: claims, expires: DateTime.Now.AddDays(30), signingCredentials: new SigningCredentials(key, SecurityAlgorithms.HmacSha256) ); string tokenAsString = new JwtSecurityTokenHandler().WriteToken(token); var currentUser = new { Id = user.Id, FirstName = user.FirstName, LastName = user.LastName, Email = user.Email, EmailConfirmed = user.EmailConfirmed, PhoneNumber = user.PhoneNumber, Remainder = user.Remainder, OverAllRating = user.OverAllRating, UserName = user.UserName }; return(new UserManagerResponse { User = currentUser, Message = tokenAsString, IsSuccess = true, ExpireDate = token.ValidTo }); }
public async Task <IActionResult> Login(LoginForDto model) { if (ModelState.IsValid) { var json = JsonConvert.SerializeObject(model, Formatting.Indented); var httpClinet = _httpClientFactory.CreateClient("ingamedemo"); var response = await httpClinet.PostAsync("account/login", new StringContent(json, Encoding.UTF8, "application/json")); if (!response.IsSuccessStatusCode) { var message = await response.Content.ReadAsStringAsync(); if (string.IsNullOrEmpty(message)) { message = "Beklenmedik bir hata meydana geldi. Lütfen daha sonra tekrar deneyiniz."; } ModelState.AddModelError("", message); } else { try { var userInfoRead = await response.Content.ReadAsStringAsync(); var userInfo = JsonConvert.DeserializeObject <UserInfo>(userInfoRead); var claims = new List <Claim> { new Claim(ClaimTypes.NameIdentifier, userInfo.Id), new Claim(ClaimTypes.Name, userInfo.Name), new Claim(ClaimTypes.Email, userInfo.Email), new Claim("Roles", string.Join(",", userInfo.Roles)), new Claim("Token", userInfo.Token), }; foreach (var role in userInfo.Roles) { claims.Add(new Claim(ClaimsIdentity.DefaultRoleClaimType, role)); } var userIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); var principal = new ClaimsPrincipal(userIdentity); await HttpContext.SignInAsync(principal, new AuthenticationProperties { ExpiresUtc = userInfo.ExpireDate, IssuedUtc = userInfo.ExpireDate, }); if (!string.IsNullOrEmpty(model.ReturnUrl)) { return(Redirect(model.ReturnUrl)); } return(RedirectToAction("Index")); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } } } return(View(model)); }