public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req) { _logger.LogInformation("GetServerSettings"); string tenant = req.Headers[Constants.HEADER_TENANT]; if (String.IsNullOrWhiteSpace(tenant)) { tenant = null; } TenantSettings tenantSettings; if (null == tenant) { tenantSettings = await _tenantRepository.GetFirstItemOrDefault(t => t.TenantKey == null); } else { tenantSettings = await _tenantRepository.GetFirstItemOrDefault(t => t.TenantKey.Equals(tenant)); } if (tenantSettings.LocalAdministrationDisabled) { return(new BadRequestErrorMessageResult("Administration in MeetUpPlanner is disabled.")); } ServerSettings serverSettings = await _cosmosRepository.GetServerSettings(tenant); string keyWord = req.Headers[Constants.HEADER_KEYWORD]; if (String.IsNullOrEmpty(keyWord) || !serverSettings.AdminKeyword.Equals(keyWord)) { return(new BadRequestErrorMessageResult("Keyword is missing or wrong")); } return(new OkObjectResult(serverSettings)); }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req) { _logger.LogInformation("WriteServerSettings"); string tenant = req.Headers[Constants.HEADER_TENANT]; if (String.IsNullOrWhiteSpace(tenant)) { tenant = null; } TenantSettings tenantSettings; if (null == tenant) { tenantSettings = await _tenantRepository.GetFirstItemOrDefault(t => t.TenantKey == null); } else { tenantSettings = await _tenantRepository.GetFirstItemOrDefault(t => t.TenantKey.Equals(tenant)); } if (tenantSettings.LocalAdministrationDisabled) { return(new BadRequestErrorMessageResult("Administration in MeetUpPlanner is disabled.")); } ServerSettings serverSettings = await _serverSettingsRepository.GetServerSettings(tenant); string keyWord = req.Headers[Constants.HEADER_KEYWORD]; if (String.IsNullOrEmpty(keyWord) || !serverSettings.AdminKeyword.Equals(keyWord)) { return(new BadRequestErrorMessageResult("Keyword is missing or wrong")); } string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); ServerSettings newServerSettings = JsonConvert.DeserializeObject <ServerSettings>(requestBody); if (null != tenant) { newServerSettings.Tenant = tenant; } newServerSettings = await _serverSettingsRepository.WriteServerSettings(newServerSettings); return(new OkObjectResult(newServerSettings)); }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req) { string tenantUrl = req.Headers[Constants.HEADER_TENANT_URL]; if (String.IsNullOrEmpty(tenantUrl)) { return(new BadRequestErrorMessageResult($"GetTenantClientSettings: Header {Constants.HEADER_TENANT_URL} is missing or wrong")); } _logger.LogInformation($"GetTenantClientSettings: {Constants.HEADER_TENANT_URL} = {tenantUrl}"); TenantClientSettings tenantClientSettings = new TenantClientSettings(); // First try to get tenant settings from database tenantClientSettings.Tenant = await _tenantRepository.GetFirstItemOrDefault(t => tenantUrl.StartsWith(t.PrimaryUrl)); if (null != tenantClientSettings.Tenant) { _logger.LogInformation($"GetTenantClientSetting({tenantUrl}): Tenant Settings {tenantClientSettings.Tenant.TenantName} found."); } else { // If not in database get from static configuration table. This allows that MeetUpPlanner can run withour admin tool tenantClientSettings.Tenant = TenantConfig.GetTenant(tenantUrl); } string key = Constants.KEY_CLIENT_SETTINGS; string tenant = tenantClientSettings.Tenant.TenantKey; if (null != tenant) { key += "-" + tenant; } tenantClientSettings.Client = await _cosmosRepository.GetItemByKey(key); if (null == tenantClientSettings.Client) { tenantClientSettings.Client = new ClientSettings() { Title = Constants.DEFAULT_TITLE, FurtherInfoLink = Constants.DEFAULT_LINK, FurtherInfoTitle = Constants.DEFAULT_LINK_TITLE, Disclaimer = Constants.DEFAULT_DISCLAIMER, GuestDisclaimer = Constants.DEFAULT_GUEST_DISCLAIMER }; } return(new OkObjectResult(tenantClientSettings)); }