Beispiel #1
0
        public void Create(string tenantName)
        {
            Context.Output.WriteLine(T("Creating tenant '{0}'...", tenantName));

            if (String.IsNullOrWhiteSpace(tenantName) || !Regex.IsMatch(tenantName, @"^[a-zA-Z]\w*$"))
            {
                Context.Output.WriteLine(T("Invalid tenant name. Must contain characters only and no spaces."));
                return;
            }
            if (_tenantService.GetTenants().Any(tenant => String.Equals(tenant.Name, tenantName, StringComparison.OrdinalIgnoreCase)))
            {
                Context.Output.WriteLine(T("Could not create tenant '{0}'. A tenant with the same name already exists.", tenantName));
                return;
            }

            if (DataProvider != null && !_validDataProviderNames.Contains(DataProvider))
            {
                Context.Output.WriteLine(T("Invalid value '{0}' for parameter DataProvider. Expect one of the following: {1}", DataProvider, String.Join(", ", _validDataProviderNames)));
                return;
            }

            _tenantService.CreateTenant(
                new ShellSettings {
                Name                 = tenantName,
                State                = TenantState.Uninitialized,
                DataProvider         = DataProvider,
                DataConnectionString = DataConnectionString,
                DataTablePrefix      = DataTablePrefix,
                RequestUrlHost       = UrlHost,
                RequestUrlPrefix     = UrlPrefix,
                Themes               = Themes != null ? Themes.Split(';') : new string[] { },
                Modules              = Modules != null ? Modules.Split(';') : new string[] { }
            });
        }
Beispiel #2
0
        public ActionResult AddPost(TenantAddViewModel viewModel)
        {
            if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("You don't have permission to create tenants.")))
            {
                return(new HttpUnauthorizedResult());
            }

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

            if (_tenantService.GetTenants().Any(tenant => string.Equals(tenant.Name, viewModel.Name, StringComparison.OrdinalIgnoreCase)))
            {
                ModelState.AddModelError("Name", T("A tenant with the same name already exists.", viewModel.Name).Text);
            }

            // Ensure tenants name are valid.
            if (!String.IsNullOrEmpty(viewModel.Name) && !Regex.IsMatch(viewModel.Name, @"^[a-zA-Z]\w*$"))
            {
                ModelState.AddModelError("Name", T("Invalid tenant name. Must contain characters only and no spaces.").Text);
            }

            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.CreateTenant(
                    new ShellSettings {
                    Name                 = viewModel.Name,
                    RequestUrlHost       = viewModel.RequestUrlHost,
                    RequestUrlPrefix     = viewModel.RequestUrlPrefix,
                    DataProvider         = viewModel.DataProvider,
                    DataConnectionString = viewModel.DatabaseConnectionString,
                    DataTablePrefix      = viewModel.DatabaseTablePrefix,
                    State                = TenantState.Uninitialized,
                    Themes               = viewModel.Themes.Where(x => x.Checked).Select(x => x.ThemeId).ToArray(),
                    Modules              = viewModel.Modules.Where(x => x.Checked).Select(x => x.ModuleId).ToArray()
                });

                Services.Notifier.Success(T("Tenant '{0}' was created successfully.", viewModel.Name));
                return(RedirectToAction("Index"));
            }
            catch (ArgumentException ex) {
                Logger.Error(ex, "Error while creating tenant.");
                Services.Notifier.Error(T("Tenant creation failed with error: {0}.", ex.Message));
                return(View(viewModel));
            }
        }
Beispiel #3
0
        public async Task <ResultMessage <bool> > CreateTenant([FromBody] SynchronizeTenantDto input)
        {
            var otherSystem = _principalAccessor.Principal?.Claims.FirstOrDefault(c => c.Type == "SplitPackageOtherSystemId");

            if (string.IsNullOrEmpty(otherSystem?.Value))
            {
                throw new UserFriendlyException("不存在该系统标识");
            }
            return(new ResultMessage <bool>(ResultCode.Success, "success", await _tenantService.CreateTenant(input, long.Parse(otherSystem.Value))));
        }
Beispiel #4
0
        public async Task <ActionResult <Tenant_DetailDto> > CreateTenant([FromForm] Tenant_CreateDto value)
        {
            if (ModelState.IsValid)
            {
                var newTenant     = _mapper.Map <Tenant>(value);
                var createdTenant = await _tenantService.CreateTenant(newTenant, value.Profile);

                return(Ok(createdTenant));
            }
            return(BadRequest(ModelState));
        }
Beispiel #5
0
 public void Create(string tenantName)
 {
     Context.Output.WriteLine(T("Creating tenant"));
     _tenantService.CreateTenant(
         new ShellSettings {
         Name             = tenantName,
         RequestUrlHost   = Host,
         RequestUrlPrefix = UrlPrefix,
         State            = new TenantState("Uninitialized")
     });
 }
Beispiel #6
0
        public async Task <IActionResult> PostTenantCreate([FromBody] TenantCreateViewModel model)
        {
            var tenantDto = new TenantDto
            {
                Name           = model.Name,
                ParentTenantId = model.ParentId
            };
            var model2 = await _tenantService.CreateTenant(tenantDto);

            return(new JsonResult(model));
        }
        public IActionResult CreateTenant(Tenant tenant)
        {
            if (tenant == null)
            {
                return(BadRequest());
            }

            var tenantResponse = _tenantService.CreateTenant(tenant);

            return(tenantResponse == null
                ? StatusCode(500)
                : (IActionResult)Ok(tenantResponse));
        }
        public ActionResult AddPOST(TenantAddViewModel viewModel)
        {
            if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Couldn't create tenant")))
            {
                return(new HttpUnauthorizedResult());
            }

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

            if (_tenantService.GetTenants().Any(tenant => string.Equals(tenant.Name, viewModel.Name, StringComparison.OrdinalIgnoreCase)))
            {
                ModelState.AddModelError("Name", T("A tenant with the same name already exists.", viewModel.Name).Text);
            }

            // ensure tenants name are valid
            if (!String.IsNullOrEmpty(viewModel.Name) && !Regex.IsMatch(viewModel.Name, @"^\w+$"))
            {
                ModelState.AddModelError("Name", T("Invalid tenant name. Must contain characters only and no spaces.").Text);
            }

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

            try {
                _tenantService.CreateTenant(
                    new ShellSettings {
                    Name                 = viewModel.Name,
                    RequestUrlHost       = viewModel.RequestUrlHost,
                    RequestUrlPrefix     = viewModel.RequestUrlPrefix,
                    DataProvider         = viewModel.DataProvider,
                    DataConnectionString = viewModel.DatabaseConnectionString,
                    DataTablePrefix      = viewModel.DatabaseTablePrefix,
                    State                = TenantState.Uninitialized,
                    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 (ArgumentException exception) {
                Services.Notifier.Error(T("Creating Tenant failed: {0}", exception.Message));
                return(View(viewModel));
            }
        }
        public async Task CreateTenantToThisNode(CreateTenantDetails createTenantDetails)
        {
            _logger.LogInformation($"Request to create tenant '{createTenantDetails.Name}' from other nodes");
            if (_tenantRepository.GetTenant(createTenantDetails.Name) == null)
            {
                _tenantApiService.CreateTenant(createTenantDetails.Name, createTenantDetails.TenantSettings);
                _logger.LogInformation($"Tenant' {createTenantDetails.Name}' has been created and linked, informing other nodes");
            }
            else
            {
                _logger.LogInformation($"Tenant' {createTenantDetails.Name}' already exists, ignoring the request");
            }

            // send to other nodes....
            await _storageHubService.SendCreateTenantStorage(createTenantDetails);
        }
        public ActionResult <string> AddTenant(string tenantName, [FromBody] TenantSettings tenantSettings)
        {
            tenantName = tenantName.ToLower().Replace(" ", string.Empty);
            var isFromCli = HttpContext.Request.Headers["x-called-by"].ToString();

            if (isFromCli != "")
            {
                _logger.LogInformation($"{isFromCli} POST '{HttpContext.Request.Path}' is called");
            }
            else
            {
                _logger.LogInformation($"POST '{HttpContext.Request.Path}' is called");
            }

            if (_tenantService.CreateTenant(tenantName, tenantSettings) != true)
            {
                return(BadRequest("Couldn't add new tenant, or tenant already exists"));
            }

            return(Ok($"Tenant {tenantName} has been created"));
        }
Beispiel #11
0
        public async Task <IActionResult> Create(Guid portfolioId, Guid propertyId, [Bind("FirstName,LastName,PhoneNumber,JobTitle,Nationality,TenancyStartDate,TenancyEndDate,TenantImage,Id,CreatedDate,UpdatedDate")] TenantCreateDTO tenant)
        {
            if (ModelState.IsValid)
            {
                var new_tenant = _mapper.Map <Tenant>(tenant);
                var property   = await _propertyService.GetPropertyById(portfolioId, propertyId);

                var o = await _tenantService.CreateTenant(new_tenant);

                o.Property = property;
                if (tenant.TenantImage != null)
                {
                    o.TenantImage = await _tenantService.CreateTenantImage(o.Id, tenant.TenantImage);
                }

                await _tenantService.SaveAsync();

                return(Ok(o));
            }
            return(BadRequest(tenant));
        }
Beispiel #12
0
        public async Task <IActionResult> Create(Models.Journals.CreateJournalModel model)
        {
            if (ModelState.IsValid)
            {
                await _tenantService.CreateTenant(new ViewModels.Journals.CreateJournalModel
                {
                    IsActive     = model.IsActive,
                    JournalName  = model.JournalName,
                    JournalPath  = model.JournalPath,
                    PhoneNumber  = model.PhoneNumber,
                    FirstName    = model.FirstName,
                    LastName     = model.LastName,
                    Email        = model.Email,
                    JournalTitle = model.JournalTitle
                }, model.Logo.OpenReadStream(), model.Logo.FileName);

                var emailModel = new AddUserEmailNotificationModel
                {
                    FirstName   = model.FirstName,
                    LastName    = model.LastName,
                    JournalName = model.JournalName,
                    JournalPath = model.JournalPath,
                    RoleNames   = new List <string> {
                        RoleName.Admin
                    }
                };
                try
                {
                    await SendAdminEmail(emailModel, model.Email);
                }
                catch (System.Exception ex)
                {
                    HttpContext.RiseError(ex);
                    AddFailMessage("Journal has been Created  but failed to send confirmation email to Admin.");
                }
                return(RedirectToAction("Index"));
            }
            return(View());
        }
        public void Create(string tenantName)
        {
            Context.Output.WriteLine(T("Creating tenant"));

            if (string.IsNullOrWhiteSpace(tenantName) || !Regex.IsMatch(tenantName, @"^\w+$"))
            {
                Context.Output.WriteLine(T("Invalid tenant name. Must contain characters only and no spaces."));
                return;
            }
            if (_tenantService.GetTenants().Any(tenant => string.Equals(tenant.Name, tenantName, StringComparison.OrdinalIgnoreCase)))
            {
                Context.Output.WriteLine(T("Could not create tenant \"{0}\". A tenant with the same name already exists.", tenantName));
                return;
            }

            _tenantService.CreateTenant(
                new ShellSettings {
                Name             = tenantName,
                RequestUrlHost   = Host,
                RequestUrlPrefix = UrlPrefix,
                State            = TenantState.Uninitialized
            });
        }