public IActionResult CreateDomain(CreateDomainViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var domain = addNewDomain.Invoke(new DomainModel { Name = model.DomainName }); if (domain == Guid.Empty) { ModelState.AddModelError("DomainName", "This domain already exists in our database"); return(View(model)); } var userModel = new UserModel { Email = model.Email, Password = model.Password, Name = model.Name, Domain = new DomainModel { Id = domain } }; var userAddAction = addNewUser.Invoke(userModel); if (userAddAction == null) { Alert.Danger("User already exists"); return(View()); } var callbackUrl = Url.Action("ConfirmEmail", "Auth", new { token = userAddAction.Tokens.FirstOrDefault().SecretToken }, Request.Scheme); var emailinfo = new EmailBodyHelper().GetRegisterEmailBodyModel(callbackUrl); var stringView = RenderViewToString("EmailTemplate", emailinfo); var message = emailService.CreateMessage(model.Email, "Confirm your account", stringView); var mappedMessage = AutoMapper.Mapper.Map <EmailMessageModel>(message); addNewEmailMessage.Invoke(mappedMessage); setDomainOwner.Invoke(userAddAction.Id, domain); var role = getRoleByName.Invoke(RoleNamesConstants.Owner); // Add user to UserDomains table addUserToDomain.Invoke(userAddAction.Id, domain, role.Id); Alert.Success("Confirmation email has been sent to your email address"); return(RedirectToAction("Login", "Auth", new { domainName = model.DomainName })); }
public void SeedUsers(IAddNewUser addNewUser, IConfirmUserEmailByToken confirmUserEmailByToken, IGetDomainByName getDomainByName, ISetDomainOwner setDomainOwner) { foreach (var user in users) { var domain = getDomainByName.Invoke("jan"); var model = new UserModel { Email = $"{user}@test.pl", Password = "******", Name = user, Domain = domain }; var dbUser = addNewUser.Invoke(model); if (dbUser == null) { continue; } var token = dbUser.Tokens.FirstOrDefault().SecretToken; confirmUserEmailByToken.Invoke(token); var role = roles.Find(x => x.Name == "User"); if (user != "owner") { setDomainOwner.Invoke(dbUser.Id, domain.Id); var domain2 = getDomainByName.Invoke("roland"); setDomainOwner.Invoke(dbUser.Id, domain2.Id); role = roles.Find(x => x.Name == "Owner"); } addUserToDomain.Invoke(dbUser.Id, domain.Id, role.Id); } }