public async Task <IActionResult> Register([FromBody] RegisterBindingModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = new BarOMeterIdentityUser() { UserName = model.Username, Email = model.Email }; IdentityResult result = await _userManager.CreateAsync(user, model.Password); if (!result.Succeeded) { var sanitizedList = new List <string>(); foreach (var error in result.Errors) { if (error.Code == "DuplicateUserName" || error.Code == "DuplicateEmail" || error.Code == "PasswordRequiresUpper" || error.Code == "PasswordTooShort" || error.Code == "PasswordRequiresLower" || error.Code == "PasswordRequiresDigit") { sanitizedList.Add(error.Code); } } return(BadRequest(sanitizedList)); } var roleClaim = new Claim("Role", "Kunde"); await _userManager.AddClaimAsync(user, roleClaim); var addResult = _customerController.AddCustomer(new CustomerDto { Email = model.Email, DateOfBirth = model.DateOfBirth, Name = model.Name, FavoriteBar = model.FavoriteBar, FavoriteDrink = model.FavoriteDrink, Username = model.Username, }); if (addResult is CreatedResult) { return(Ok()); } else { await _userManager.RemoveClaimAsync(user, roleClaim); } return(BadRequest()); }
public async Task <IActionResult> RegisterAdmin([FromBody] AdminRegisterBindingModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = new BarOMeterIdentityUser() { UserName = model.Username, Email = model.Email }; IdentityResult result = await _userManager.CreateAsync(user, model.Password); if (!result.Succeeded) { return(BadRequest()); } var roleClaim = new Claim("Role", "Admin"); await _userManager.AddClaimAsync(user, roleClaim); return(Ok()); }
public async Task <IActionResult> RegisterBarRep([FromBody] BarRepRegisterBindingModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = new BarOMeterIdentityUser() { UserName = model.Username, Email = model.Email }; var barResult = _barController.AddBar(new BarDto { BarName = model.BarName, Address = model.Address, AgeLimit = model.AgeLimit, AvgRating = model.AvgRating, CVR = model.CVR, Educations = model.Educations, Email = model.Email, Image = model.Image, LongDescription = model.LongDescription, PhoneNumber = model.PhoneNumber, ShortDescription = model.ShortDescription }); if (!(barResult is CreatedResult)) { // if error rollback claim var list = new List <string>(); list.Add("Bar could not be created"); return(BadRequest(list)); } var addResult = _barRepresentativeController.AddBarRepresentative(new BarRepresentativeDto { Name = model.Name, Username = model.Username, BarName = model.BarName }); if (!(addResult is CreatedResult)) { // if error rollback bar and claim var list = new List <string>(); list.Add("BarRepresentative exists"); _barController.DeleteBar(model.BarName); return(BadRequest(list)); } IdentityResult result = await _userManager.CreateAsync(user, model.Password); if (!result.Succeeded) { var sanitizedList = new List <string>(); foreach (var error in result.Errors) { if (error.Code == "DuplicateUserName" || error.Code == "DuplicateEmail" || error.Code == "PasswordRequiresUpper" || error.Code == "PasswordTooShort" || error.Code == "PasswordRequiresLower" || error.Code == "PasswordRequiresDigit") { sanitizedList.Add(error.Code); } } _barController.DeleteBar(model.BarName); _barRepresentativeController.DeleteBarRepresentative(model.Username); return(BadRequest(sanitizedList)); } var roleClaim = new Claim("Role", "BarRep"); await _userManager.AddClaimAsync(user, roleClaim); return(Ok()); }