public async Task <IActionResult> Login([FromBody] LoginViewModel model) { IActionResult _result = new ObjectResult(false); GenericResult _authenticationResult = null; try { // var user23 = _userManager.FindByNameAsync(model.Username).Result.Claims; var user = await _userManager.FindByNameAsync(model.Username); var result = await _userManager.CheckPasswordAsync(user, model.Password); if (result) { //var adminRole = await _roleManager.FindByNameAsync("Admin"); //if (adminRole == null) //{ // adminRole = new IdentityRole("Admin"); // await _roleManager.CreateAsync(adminRole); //} //await _roleManager.AddClaimAsync(adminRole, new Claim(ClaimTypes.Role, "projects.create")); //var accountManagerRole = await _roleManager.FindByNameAsync("Account Manager"); //if (accountManagerRole == null) //{ // accountManagerRole = new IdentityRole("Account Manager"); // await _roleManager.CreateAsync(accountManagerRole); // await _roleManager.AddClaimAsync(accountManagerRole, new Claim(, "account.manage")); //} var principal = _signInManager.CreateUserPrincipalAsync(user).Result.Claims.ToList(); var xfd = _userManager.GetClaimsAsync(user).Result; // ClaimsIdentity claim = new ClaimsIdentity(); // _signInManager. var now = DateTime.UtcNow; var claims = new Claim[] { new Claim(JwtRegisteredClaimNames.Sub, model.Username), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim(JwtRegisteredClaimNames.Iat, ToUnixEpochDate(_jwtOptions.IssuedAt).ToString(), ClaimValueTypes.Integer64), }; var claimslist = claims.ToList(); foreach (var claim in principal) { claimslist.Add(claim); } ; // Create the JWT security token and encode it. var jwt = new JwtSecurityToken( issuer: _jwtOptions.Issuer, audience: _jwtOptions.Audience, claims: principal, notBefore: _jwtOptions.NotBefore, expires: _jwtOptions.Expiration, signingCredentials: _jwtOptions.SigningCredentials); var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt); // Serialize and return the response var response = new { access_token = encodedJwt, expires_in = (int)_jwtOptions.ValidFor.TotalSeconds }; if (!String.IsNullOrEmpty(model.TokenFirebase)) { user.APPTOKEN = model.TokenFirebase; await _userManager.UpdateAsync(user); } _authenticationResult = new GenericTokenResult() { Succeeded = true, Message = "Đăng nhập thành công", access_token = encodedJwt, expires_in = (int)_jwtOptions.ValidFor.TotalSeconds }; } else { _authenticationResult = new GenericTokenResult() { Succeeded = false, Message = "Đăng nhập thất bại vui lòng kiểm tra lại thông tin", access_token = null, expires_in = 0 }; } } catch (Exception ex) { _authenticationResult = new GenericResult() { Succeeded = false, Message = ex.Message }; _loggingRepository.Add(new Error() { Message = ex.Message, StackTrace = ex.StackTrace, DateCreated = DateTime.Now }); _loggingRepository.Commit(); } _result = new ObjectResult(_authenticationResult); return(_result); }
public async Task <IActionResult> Login([FromBody] LoginViewModel model) { IActionResult _result = new ObjectResult(false); GenericResult _authenticationResult = null; try { var user = await _userManager.FindByNameAsync(model.Username); var result = await _userManager.CheckPasswordAsync(user, model.Password); if (result) { var principal = await _signInManager.CreateUserPrincipalAsync(user); // Create the JWT security token and encode it. var jwt = new JwtSecurityToken( issuer: _jwtOptions.Issuer, audience: _jwtOptions.Audience, claims: principal.Claims, notBefore: _jwtOptions.NotBefore, expires: _jwtOptions.Expiration, signingCredentials: _jwtOptions.SigningCredentials); var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt); // Serialize and return the response var response = new { access_token = encodedJwt, expires_in = (int)_jwtOptions.ValidFor.TotalSeconds }; _authenticationResult = new GenericTokenResult() { Succeeded = true, Message = "Authentication succeeded", access_token = encodedJwt, expires_in = (int)_jwtOptions.ValidFor.TotalSeconds }; } else { _authenticationResult = new GenericResult() { Succeeded = false, Message = "Authentication failed" }; } } catch (Exception ex) { _authenticationResult = new GenericResult() { Succeeded = false, Message = ex.Message }; _loggingRepository.Add(new Error() { Message = ex.Message, StackTrace = ex.StackTrace, DateCreated = DateTime.Now }); _loggingRepository.Commit(); } _result = new ObjectResult(_authenticationResult); return(_result); }