public async Task <IActionResult> Register([FromBody] RegisterDto model) { if (!ModelState.IsValid) { return(BadRequest("Bad input")); } var user = new MoDUser { UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, PhoneNumber = model.PhoneNumber, IsEnabled = false }; var result = await userManager.CreateAsync(user, model.Password); if (result.Succeeded) { var roleName = roleManager.Roles.FirstOrDefault(r => r.Id == model.RoleId.ToString()).NormalizedName; var result1 = await userManager.AddToRoleAsync(user, roleName); if (result1.Succeeded) { return(Created("Register", model.Email)); } } return(BadRequest(result.Errors)); }
private async Task <TokenDto> GenerateJwtToken(string email, MoDUser user) { var roles = await userManager.GetRolesAsync(user); var role = roleManager.Roles.SingleOrDefault( r => r.Name == roles.SingleOrDefault()); var claims = new List <Claim> { new Claim(JwtRegisteredClaimNames.Sub, email), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim(ClaimTypes.NameIdentifier, user.Id), new Claim(ClaimTypes.Role, role.Name) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JwtKey"])); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); //recommended is 5 mins var expires = DateTime.Now.AddDays( Convert.ToDouble(configuration["JwtExpireDays"])); var token = new JwtSecurityToken( configuration["JwtIssuer"], configuration["JwtIssuer"], claims, expires: expires, signingCredentials: creds ); //cut these 2 lines //var roles = await userManager.GetRolesAsync(user); //var roleId = roleManager.Roles.SingleOrDefault(r => r.Name == roles.SingleOrDefault()).Id; var response = new TokenDto { Email = email, Token = new JwtSecurityTokenHandler().WriteToken(token), Role = Convert.ToInt32(role.Id) //RoleId = Convert.ToInt32(roleId) }; return(response); }