Beispiel #1
0
        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));
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #4
0
        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);
                }
            }
        }