public async Task <IActionResult> Register([FromBody] RegisterVModel model) { var user = new LiteForumUser { UserName = model.Username, Email = model.Email }; var result = await _userManager.CreateAsync(user, model.Password); if (result.Succeeded) { _logger.LogInformation("User created a new account with password."); await _userManager.AddToRoleAsync(user, AppConstants.String.Roles.Member); // add user to default member role await _signInManager.SignInAsync(user, isPersistent : false); _logger.LogInformation("User created a new account with password."); return(Ok(new { username = user.UserName, email = user.Email, status = "successfull" })); } ModelState.AddModelError("validation_error", result.Errors.FirstOrDefault().Description); return(BadRequest(ModelState)); }
private async Task <List <Claim> > GetValidClaims(LiteForumUser user) { IdentityOptions _options = new IdentityOptions(); var claims = new List <Claim> { new Claim(JwtRegisteredClaimNames.Sub, user.Id), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim(JwtRegisteredClaimNames.Iat, ToUnixEpochDate(DateTime.UtcNow).ToString(), ClaimValueTypes.Integer64), new Claim(_options.ClaimsIdentity.UserIdClaimType, user.Id.ToString()), new Claim(_options.ClaimsIdentity.UserNameClaimType, user.UserName) }; var userClaims = await _userManager.GetClaimsAsync(user); var userRoles = await _userManager.GetRolesAsync(user); claims.AddRange(userClaims); foreach (var userRole in userRoles) { claims.Add(new Claim(ClaimTypes.Role, userRole)); var role = await _roleManager.FindByNameAsync(userRole); if (role != null) { var roleClaims = await _roleManager.GetClaimsAsync(role); foreach (Claim roleClaim in roleClaims) { claims.Add(roleClaim); } } } return(claims); }
private static async Task CreateAdminUser() { //creating an admin user who could maintain the web app var adminUser = new LiteForumUser { UserName = _configuration.GetSection("AppSettings")["AdminUsername"], Email = _configuration.GetSection("AppSettings")["AdminEmail"] }; string userPassword = _configuration.GetSection("AppSettings")["AdminPassword"]; var user = await _userManager.FindByEmailAsync(adminUser.Email); if (user == null) { var createAdminUser = await _userManager.CreateAsync(adminUser, userPassword); if (createAdminUser.Succeeded) { //here we tie the new user to the "Admin" role await _userManager.AddToRoleAsync(adminUser, AppConstants.String.Roles.Admin); } } }