protected async void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                TenantList.DataSource = IzendaUtilities.GetAllTenants();
                TenantList.DataBind();

                await PopulateRoleList();
            }
        }
Exemplo n.º 2
0
        // GET: /Account/CreateUser
        public ActionResult CreateUser()
        {
            ViewBag.Title = "Create User";

            var createUserViewModel = new CreateUserViewModel();
            var tenants             = IzendaUtilities.GetAllTenants();

            createUserViewModel.Tenants = tenants;

            return(View(createUserViewModel));
        }
Exemplo n.º 3
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));
        }