Exemple #1
0
        //// GET: Tenant/Create
        //public ActionResult Create()
        //{
        //    return View();
        //}

        //// POST: Tenant/Create
        //[HttpPost]
        //public ActionResult Create(FormCollection collection)
        //{
        //    try
        //    {
        //        // TODO: Add insert logic here

        //        return RedirectToAction("Index");
        //    }
        //    catch
        //    {
        //        return View();
        //    }
        //}

        // GET: Tenant/Edit/5
        public ActionResult Edit(string id)
        {
            string myTenant = GetUserTenant(User.Identity.GetUserId());

            if (User.IsInRole(AppRoles.Owner.ToString()) || myTenant == id)
            {
                TenantEditViewModel model = new TenantEditViewModel();
                Guid idGuid = Guid.Parse(id);

                using (var db = new ApplicationDbContext())
                {
                    var tenant = db.Tenants.FirstOrDefault(item => item.Id == idGuid);

                    // build ViewModel
                    model.Id              = tenant.Id.ToString();
                    model.Name            = tenant.Name;
                    model.CallbackPath    = Request.Url.GetLeftPart(UriPartial.Authority) + "/signin-" + tenant.Name;
                    model.Caption         = tenant.Caption;
                    model.MetadataAddress = tenant.MetadataAddress;
                    model.Realm           = tenant.Realm;
                }
                return(View(model));
            }
            else
            {
                return(View("Error"));
            }
        }
        public async Task <IActionResult> Register(TenantEditViewModel tenant)
        {
            tenant.PropertyList = GetPropertyList();
            tenant.UnitList     = GetUnitListItems(tenant.SelectedPropertyCode);

            if (!ModelState.IsValid)
            { // re-render the view when validation failed.
                return(View("Register", tenant));
            }

            var propCode   = tenant.SelectedPropertyCode == _selectPropertyTip ? "" : tenant.SelectedPropertyCode;
            var unitNumber = (tenant.SelectedUnitNumber == null || tenant.SelectedUnitNumber.StartsWith("--")) ? "" : tenant.SelectedUnitNumber;

            try
            {
                await _propertyService.RegisterTenantAsync(propCode, tenant.ContactInfo, unitNumber);
            }
            catch (DomainValidationException vex)
            {
                MapValidationErrorsToModel(vex);

                return(View(tenant));
            }
            catch (DomainException dex)
            {
                ModelState.AddModelError("", dex.Message);
                return(View("Register", tenant));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View("Register", tenant));
            }
            return(RedirectToAction("Index"));
        }
        public async Task <IActionResult> Register(TenantEditViewModel tenantVm)
        {
            var loggedUser = await _authService.GetUserClaims(User);

            if (!ModelState.IsValid)
            {
                // re-render the view when validation failed.
                return(View("Register", tenantVm));
            }

            try
            {
                tenantVm.PropertyList = GetPropertyList();
                tenantVm.UnitList     = GetUnitListItems(tenantVm.SelectedPropertyCode);
                var propCode   = tenantVm.SelectedPropertyCode == _selectPropertyTip ? "" : tenantVm.SelectedPropertyCode;
                var unitNumber = (tenantVm.SelectedUnitNumber == null || tenantVm.SelectedUnitNumber.StartsWith("--"))
                    ? ""
                    : tenantVm.SelectedUnitNumber;



                await _propertyService.RegisterTenantAsync(propCode, tenantVm.ContactInfo, unitNumber);


                //return RedirectToAction("Requests", "Tenant");
                //TempData["JustEnrolled"] = "yes";
                //return base.RedirectToAction("SignOut", "Account", new { area = "AzureADB2C" });

                return(_redirectionService.RedirectAfterEnrollment(TempData, this));
            }

            catch (CoreAuthorizationException)
            {
                return(base.RedirectToAction(actionName: "AccessDenied", controllerName: "Home"));
            }
            catch (DomainEntityDuplicateException)
            {
                ModelState.AddModelError("SelectedUnitNumber", "The Unit is already taken");
                return(View("Register", tenantVm));
            }
            catch (DomainValidationException vex)
            {
                MapValidationErrorsToModel(vex);

                return(View(tenantVm));
            }
            catch (DomainException dex)
            {
                ModelState.AddModelError("", dex.Message);
                return(View("Register", tenantVm));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View("Register", tenantVm));
            }
        }
Exemple #4
0
        public ActionResult EditPost(TenantEditViewModel viewModel)
        {
            if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("You don't have permission to edit tenants.")))
            {
                return(new HttpUnauthorizedResult());
            }

            if (!IsExecutingInDefaultTenant())
            {
                return(new HttpUnauthorizedResult());
            }

            var tenant = _tenantService.GetTenants().FirstOrDefault(ss => ss.Name == viewModel.Name);

            if (tenant == null)
            {
                return(HttpNotFound());
            }

            if (!string.Equals(viewModel.Name, "default", StringComparison.OrdinalIgnoreCase) && string.IsNullOrWhiteSpace(viewModel.RequestUrlHost) && string.IsNullOrWhiteSpace(viewModel.RequestUrlPrefix))
            {
                ModelState.AddModelError("RequestUrlHostRequestUrlPrefix", T("RequestUrlHost and RequestUrlPrefix can not be empty at the same time.").Text);
            }

            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }

            try {
                _tenantService.UpdateTenant(
                    new ShellSettings(tenant)
                {
                    Name                 = tenant.Name,
                    RequestUrlHost       = viewModel.RequestUrlHost,
                    RequestUrlPrefix     = viewModel.RequestUrlPrefix,
                    DataProvider         = viewModel.DataProvider,
                    DataConnectionString = viewModel.DatabaseConnectionString,
                    DataTablePrefix      = viewModel.DatabaseTablePrefix,
                    State                = tenant.State,
                    EncryptionAlgorithm  = tenant.EncryptionAlgorithm,
                    EncryptionKey        = tenant.EncryptionKey,
                    HashAlgorithm        = tenant.HashAlgorithm,
                    HashKey              = tenant.HashKey,
                    Themes               = viewModel.Themes.Where(x => x.Checked).Select(x => x.ThemeId).ToArray(),
                    Modules              = viewModel.Modules.Where(x => x.Checked).Select(x => x.ModuleId).ToArray()
                });

                return(RedirectToAction("Index"));
            }
            catch (Exception ex) {
                Logger.Error(ex, "Error while editing tenant.");
                Services.Notifier.Error(T("Failed to edit tenant: {0} ", ex.Message));
                return(View(viewModel));
            }
        }
        // GET: Tenants/Register
        public IActionResult Register()
        {
            var list = GetPropertyList();

            var viewModel = new TenantEditViewModel()
            {
                PropertyList = list
            };



            return(View(viewModel));
        }
        public ActionResult EditPost(TenantEditViewModel viewModel)
        {
            if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Couldn't edit tenant")))
            {
                return(new HttpUnauthorizedResult());
            }

            if (!EnsureDefaultTenant())
            {
                return(new HttpUnauthorizedResult());
            }

            var tenant = _tenantService.GetTenants().FirstOrDefault(ss => ss.Name == viewModel.Name);

            if (tenant == null)
            {
                return(HttpNotFound());
            }

            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }

            try {
                _tenantService.UpdateTenant(
                    new ShellSettings(tenant)
                {
                    Name                 = tenant.Name,
                    RequestUrlHost       = viewModel.RequestUrlHost,
                    RequestUrlPrefix     = viewModel.RequestUrlPrefix,
                    DataProvider         = viewModel.DataProvider,
                    DataConnectionString = viewModel.DatabaseConnectionString,
                    DataTablePrefix      = viewModel.DatabaseTablePrefix,
                    State                = tenant.State,
                    EncryptionAlgorithm  = tenant.EncryptionAlgorithm,
                    EncryptionKey        = tenant.EncryptionKey,
                    HashAlgorithm        = tenant.HashAlgorithm,
                    HashKey              = tenant.HashKey,
                    Themes               = viewModel.Themes.Where(x => x.Checked).Select(x => x.ThemeId).ToArray(),
                    Modules              = viewModel.Modules.Where(x => x.Checked).Select(x => x.ModuleId).ToArray()
                });

                return(RedirectToAction("Index"));
            }
            catch (Exception exception) {
                Services.Notifier.Error(T("Failed to edit tenant: {0} ", exception.Message));
                return(View(viewModel));
            }
        }
        public async Task <IActionResult> Register()
        {
            var loggedUser = await _authService.GetUserClaims(User);

            try
            {
                var list = GetPropertyList();

                var viewModel = new TenantEditViewModel()
                {
                    PropertyList = list,
                };
                viewModel.ContactInfo.EmailAddress = loggedUser.Login;

                return(View(viewModel));
            }
            catch (CoreAuthorizationException)
            {
                return(base.RedirectToAction(actionName: "AccessDenied", controllerName: "Home"));
            }
        }
Exemple #8
0
        public ActionResult Edit(string id, TenantEditViewModel model)
        {
            try
            {
                // TODO: Add update logic here
                string myTenant = GetUserTenant(User.Identity.GetUserId());

                if (User.IsInRole(AppRoles.Owner.ToString()) || myTenant == id)
                {
                    using (var db = new ApplicationDbContext())
                    {
                        Guid idGuid = Guid.Parse(id);
                        var  result = db.Tenants.SingleOrDefault(item => item.Id == idGuid);
                        if (result != null)
                        {
                            // validate if IDP configuration changed
                            bool idpUpdate = (model.Realm != result.Realm | model.MetadataAddress != result.MetadataAddress);

                            result.Caption         = model.Caption;
                            result.Realm           = model.Realm;
                            result.MetadataAddress = model.MetadataAddress;
                            db.SaveChanges();

                            // restart app if IDP configuration was changed
                            if (idpUpdate)
                            {
                                HttpRuntime.UnloadAppDomain();
                            }
                        }
                    }
                }
                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                AddErrors(ex.Message);
            }
            return(View(model));
        }