DocSpace-buildtools/web/ASC.Web.Api/Controllers/CapabilitiesController.cs
pavelbannov 320a1f2250 Merge branch 'develop' into feature/backend-refactor
# Conflicts:
#	common/ASC.Api.Core/Core/BaseStartup.cs
#	common/ASC.Common/Caching/AscCache.cs
#	common/ASC.Common/Data/StreamExtension.cs
#	common/ASC.Common/Utils/RandomString.cs
#	common/ASC.Core.Common/Billing/CouponManager.cs
#	common/ASC.Core.Common/Billing/License/LicenseReader.cs
#	common/ASC.Core.Common/Core/UserGroupRef.cs
#	common/ASC.Core.Common/Data/DbTenantService.cs
#	common/ASC.Core.Common/Notify/Jabber/JabberServiceClientWcf.cs
#	common/ASC.Core.Common/Notify/Telegram/Dao/CachedTelegramDao.cs
#	common/ASC.Data.Backup.Core/Core/DbHelper.cs
#	common/ASC.Data.Backup.Core/Storage/BackupRepository.cs
#	common/ASC.Data.Backup.Core/Tasks/Data/TableInfo.cs
#	common/ASC.Data.Storage/BaseStorage.cs
#	common/ASC.Data.Storage/DiscStorage/DiscDataStore.cs
#	common/ASC.Data.Storage/GoogleCloud/GoogleCloudStorage.cs
#	common/ASC.Data.Storage/RackspaceCloud/RackspaceCloudStorage.cs
#	common/ASC.Data.Storage/S3/S3Storage.cs
#	common/ASC.Notify.Textile/JabberStyler.cs
#	common/ASC.Textile/Blocks/GlyphBlockModifier.cs
#	common/ASC.Textile/States/TableRowFormatterState.cs
#	common/services/ASC.ApiSystem/Classes/CommonMethods.cs
#	common/services/ASC.ApiSystem/Controllers/PortalController.cs
#	common/services/ASC.ClearEvents/Program.cs
#	common/services/ASC.TelegramService/Startup.cs
#	common/services/ASC.UrlShortener.Svc/Program.cs
#	products/ASC.Files/Core/Core/Entries/File.cs
#	products/ASC.Files/Core/Core/Entries/FileEntry.cs
#	products/ASC.Files/Core/Core/Entries/FileHelper.cs
#	products/ASC.Files/Core/Core/Entries/Folder.cs
#	products/ASC.Files/Core/Core/FileStorageService.cs
#	products/ASC.Files/Core/Core/Thirdparty/ProviderDao/ProviderDaoBase.cs
#	products/ASC.Files/Core/Helpers/ThirdpartyConfiguration.cs
#	products/ASC.Files/Core/HttpHandlers/FileHandler.ashx.cs
#	products/ASC.Files/Core/Services/DocumentService/Configuration.cs
#	products/ASC.Files/Core/Services/DocumentService/DocumentServiceConnector.cs
#	products/ASC.Files/Core/Services/DocumentService/DocumentServiceTracker.cs
#	products/ASC.Files/Core/Services/WCFService/FileOperations/FileDownloadOperation.cs
#	products/ASC.Files/Core/Services/WCFService/FileOperations/FileMoveCopyOperation.cs
#	products/ASC.Files/Core/Utils/EntryManager.cs
#	products/ASC.Files/Server/Helpers/FilesControllerHelper.cs
#	products/ASC.Files/Server/Startup.cs
#	products/ASC.Files/Service/Thumbnail/Builder.cs
#	products/ASC.Files/Service/Thumbnail/FileDataProvider.cs
#	products/ASC.People/Server/Startup.cs
#	web/ASC.Web.Core/Files/DocumentService.cs
#	web/ASC.Web.Core/Files/DocumentServiceLicense.cs
#	web/ASC.Web.Core/QuotaSync.cs
#	web/ASC.Web.Core/Sms/SmsKeyStorage.cs
#	web/ASC.Web.Core/Users/UserManagerWrapper.cs
#	web/ASC.Web.HealthChecks.UI/Program.cs
#	web/ASC.Web.Studio/Startup.cs
2022-02-10 13:16:33 +03:00

115 lines
4.1 KiB
C#

namespace ASC.Web.Api.Controllers
{
[DefaultRoute]
[ApiController]
[AllowAnonymous]
public class CapabilitiesController : ControllerBase
{
private SetupInfo SetupInfo { get; }
private CoreBaseSettings CoreBaseSettings { get; }
private TenantManager TenantManager { get; }
private SettingsManager SettingsManager { get; }
private ProviderManager ProviderManager { get; }
private IConfiguration Configuration { get; }
private IHttpContextAccessor HttpContextAccessor { get; }
private ILog Log { get; }
public CapabilitiesController(
SetupInfo setupInfo,
CoreBaseSettings coreBaseSettings,
TenantManager tenantManager,
SettingsManager settingsManager,
ProviderManager providerManager,
IConfiguration configuration,
IHttpContextAccessor httpContextAccessor,
IOptionsMonitor<ILog> options)
{
SetupInfo = setupInfo;
CoreBaseSettings = coreBaseSettings;
TenantManager = tenantManager;
SettingsManager = settingsManager;
ProviderManager = providerManager;
Configuration = configuration;
HttpContextAccessor = httpContextAccessor;
Log = options.CurrentValue;
}
///<summary>
///Returns the information about portal capabilities
///</summary>
///<short>
///Get portal capabilities
///</short>
///<returns>CapabilitiesData</returns>
[Read(Check = false)] //NOTE: this method doesn't requires auth!!! //NOTE: this method doesn't check payment!!!
public CapabilitiesData GetPortalCapabilities()
{
var result = new CapabilitiesData
{
LdapEnabled = false,
Providers = null,
SsoLabel = string.Empty,
SsoUrl = string.Empty
};
try
{
if (SetupInfo.IsVisibleSettings(nameof(ManagementType.LdapSettings))
&& (!CoreBaseSettings.Standalone
|| TenantManager.GetTenantQuota(TenantManager.GetCurrentTenant().TenantId).Ldap))
{
//var settings = SettingsManager.Load<LdapSettings>();
//result.LdapEnabled = settings.EnableLdapAuthentication;
result.LdapEnabled = false;
}
}
catch (Exception ex)
{
Log.Error(ex.Message);
}
try
{
result.Providers = ProviderManager.AuthProviders.Where(loginProvider =>
{
var provider = ProviderManager.GetLoginProvider(loginProvider);
return provider != null && provider.IsEnabled;
})
.ToList();
}
catch (Exception ex)
{
Log.Error(ex.Message);
}
try
{
if (SetupInfo.IsVisibleSettings(nameof(ManagementType.SingleSignOnSettings))
&& TenantManager.GetTenantQuota(TenantManager.GetCurrentTenant().TenantId).Sso)
{
//var settings = SettingsManager.Load<SsoSettingsV2>();
//if (settings.EnableSso)
//{
var uri = HttpContextAccessor.HttpContext.Request.GetUrlRewriter();
var configUrl = Configuration["web:sso:saml:login:url"] ?? "";
result.SsoUrl = $"{uri.Scheme}://{uri.Host}{((uri.Port == 80 || uri.Port == 443) ? "" : ":" + uri.Port)}{configUrl}";
result.SsoLabel = string.Empty;
// result.SsoLabel = settings.SpLoginLabel;
//}
}
}
catch (Exception ex)
{
Log.Error(ex.Message);
}
return result;
}
}
}