public async Task <IHttpActionResult> CreateTenant(CreateTenantBindingModel model) { if (ModelState.IsValid) { var izendaAdminAuthToken = IzendaTokenAuthorization.GetIzendaAdminToken(); var tenantName = model.TenantName; // check user DB first var isTenantExist = IzendaUtilities.GetTenantByName(tenantName); if (isTenantExist == null) { // try to create a new tenant at izenda config DB var success = await IzendaUtilities.CreateTenant(tenantName, model.TenantId, izendaAdminAuthToken); if (success) { // save a new tenant at user DB var newTenant = new Tenant() { Name = model.TenantId }; await IzendaUtilities.SaveTenantAsync(newTenant); return(Ok("success")); } else { // Izenda config DB has the same tenant name. return(BadRequest()); } } else { // user DB has the same tenant name. return(BadRequest()); } } // If we got this far, something failed return(BadRequest(ModelState)); }
public async Task <ActionResult> CreateTenant(CreateTenantViewModel model, string returnUrl) { if (ModelState.IsValid) { var izendaAdminAuthToken = IzendaTokenAuthorization.GetIzendaAdminToken(); var tenantName = model.TenantName; var isTenantExist = IzendaUtilities.GetTenantByName(tenantName); // check user DB first if (isTenantExist == null) { // try to create a new tenant at izenda DB var success = await IzendaUtilities.CreateTenant(tenantName, model.TenantID, izendaAdminAuthToken); if (success) { // save a new tenant at user DB var newTenant = new Tenant() { Name = model.TenantID }; await IzendaUtilities.SaveTenantAsync(newTenant); return(RedirectToAction(returnUrl)); } else { // Izenda DB has the same tenant name. Display Message at CreateTenant.cshtml return(FailedTenantCreateAction(_defaultTenantFailureMessage)); } } else { // user DB has the same tenant name. Display Message at CreateTenant.cshtml return(FailedTenantCreateAction(_defaultTenantFailureMessage)); } } // If we got this far, something failed return(FailedTenantCreateAction(_unknownFailureMessage)); }
protected async void Submit(object sender, EventArgs e) { if (IsValid) { var izendaAdminAuthToken = IzendaTokenAuthorization.GetIzendaAdminToken(); var isTenantExist = IzendaUtilities.GetTenantByName(TenantName.Text); if (isTenantExist == null) { var success = await IzendaUtilities.CreateTenant(TenantName.Text, TenantID.Text, izendaAdminAuthToken); if (success) { var newTenant = new Tenant() { Name = TenantID.Text }; await IzendaUtilities.SaveTenantAsync(newTenant); RedirectResultPage(true); } else // failed at server level { RedirectResultPage(false); } } else { RedirectResultPage(false); } } else { RedirectResultPage(false); } }
public async Task <ActionResult> CreateUser(CreateUserViewModel model, string returnUrl) { var izendaAdminAuthToken = IzendaTokenAuthorization.GetIzendaAdminToken(); model.Tenants = IzendaUtilities.GetAllTenants(); // prevent null exception when redirected if (ModelState.IsValid) { int?tenantId = null; if (model.SelectedTenant != null) { tenantId = IzendaUtilities.GetTenantByName(model.SelectedTenant).Id; model.IsAdmin = false; } var user = new ApplicationUser { UserName = model.UserID, Email = model.UserID, Tenant_Id = tenantId, }; var result = await UserManager.CreateAsync(user); // Save new user into client DB if (result.Succeeded) // if successful, then start creating a user at Izenda DB { var assignedRole = !string.IsNullOrEmpty(model.SelectedRole) ? model.SelectedRole : "Employee"; // set default role if required. As an example, Employee is set by default if (!RoleManager.RoleExists(assignedRole)) // check assigned role exist in client DB. if not, assigned role is null { try { await RoleManager.CreateAsync(new Microsoft.AspNet.Identity.EntityFramework.IdentityRole(assignedRole)); result = await UserManager.AddToRoleAsync(user.Id, assignedRole); } catch (Exception e) { Debug.WriteLine(e); } } if (result.Succeeded) { user.Tenant = IzendaUtilities.GetTenantByName(model.SelectedTenant); // set client DB application user's tenant // Create a new user at Izenda DB var success = await IzendaUtilities.CreateIzendaUser( model.SelectedTenant, model.UserID, model.LastName, model.FirstName, model.IsAdmin, assignedRole, izendaAdminAuthToken); if (success) { return(RedirectToAction(returnUrl)); } else { FailedUserCreateAction(_unknownFailureMessage); } } } else { FailedUserCreateAction(_defaultUserFailureMessage); } AddErrors(result); } return(FailedUserCreateAction(_defaultUserFailureMessage)); }
protected async void Submit(object sender, EventArgs e) { if (IsValid) { int? tenantId = null; bool isAdmin = IsAdminCheckBox.Checked; var selectedTenant = TenantList.SelectedValue; var userManager = Context.GetOwinContext().GetUserManager <ApplicationUserManager>(); var roleManager = Context.GetOwinContext().Get <ApplicationRoleManager>(); var izendaAdminAuthToken = IzendaTokenAuthorization.GetIzendaAdminToken(); if (!string.IsNullOrEmpty(selectedTenant)) { tenantId = IzendaUtilities.GetTenantByName(selectedTenant)?.Id; isAdmin = false; if (tenantId == null) { return; } } var appUser = new ApplicationUser { UserName = UserID.Text, Email = UserID.Text, Tenant_Id = tenantId, }; var result = await userManager.CreateAsync(appUser); // attempt to create a new user in client DB if (result.Succeeded) // if successful, then start creating a user at Izenda DB { var assignedRole = !string.IsNullOrEmpty(RoleList.SelectedValue) ? RoleList.SelectedValue : "Employee"; // set default role if required. As an example, Employee is set by default if (!roleManager.RoleExists(assignedRole)) // check assigned role exist in client DB. if not, assigned role is null { try { await roleManager.CreateAsync(new Microsoft.AspNet.Identity.EntityFramework.IdentityRole(assignedRole)); result = await userManager.AddToRoleAsync(appUser.Id, assignedRole); } catch (Exception ex) { Debug.WriteLine(ex); } } if (result.Succeeded) { appUser.Tenant = IzendaUtilities.GetTenantByName(selectedTenant); // set client DB application user's tenant // Create a new user at Izenda DB var success = await IzendaUtilities.CreateIzendaUser( selectedTenant, UserID.Text, LastName.Text, FirstName.Text, isAdmin, assignedRole, izendaAdminAuthToken); if (success) { RedirectResultPage(true); } else { RedirectResultPage(false); } } else { RedirectResultPage(false); } } else { RedirectResultPage(false); } } }