Added /api/2.0/capabilities.json

This commit is contained in:
pavelbannov 2020-10-31 17:11:45 +03:00
parent 1278b2abb5
commit e01182be70
3 changed files with 183 additions and 8 deletions

View File

@ -28,15 +28,15 @@ namespace ASC.FederatedLogin
{
public static class ProviderConstants
{
public const string Twitter = "twitter";
public const string Facebook = "facebook";
public const string LinkedIn = "linkedin";
public const string Twitter = "Twitter";
public const string Facebook = "Facebook";
public const string LinkedIn = "LinkedIn";
public const string OpenId = "openid";
public const string Box = "box";
public const string Google = "google";
public const string Yandex = "yandex";
public const string MailRu = "mailru";
public const string VK = "vk";
public const string Box = "Box";
public const string Google = "Google";
public const string Yandex = "Yandex";
public const string MailRu = "Mailru";
public const string VK = "Vk";
public const string GosUslugi = "gosuslugi";
public const string Encryption = "e2e";
}

View File

@ -0,0 +1,140 @@

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ASC.Common.Logging;
using ASC.Core;
using ASC.Core.Common.Settings;
using ASC.FederatedLogin;
using ASC.FederatedLogin.LoginProviders;
using ASC.Web.Api.Models;
using ASC.Web.Api.Routing;
using ASC.Web.Studio.Core;
using ASC.Web.Studio.Utility;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options;
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(ManagementType.LdapSettings.ToString())
&& (!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(ManagementType.SingleSignOnSettings.ToString())
&& (!CoreBaseSettings.Standalone
|| 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 = string.Format("{0}://{1}{2}{3}", 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;
}
}
}

View File

@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace ASC.Web.Api.Models
{
public class CapabilitiesData
{
public bool LdapEnabled { get; set; }
public List<string> Providers { get; set; }
public string SsoLabel { get; set; }
/// <summary>
/// if empty sso is disabled
/// </summary>
public string SsoUrl { get; set; }
public static CapabilitiesData GetSample()
{
return new CapabilitiesData
{
LdapEnabled = false,
// Providers = AccountLinkControl.AuthProviders,
SsoLabel = string.Empty,
SsoUrl = string.Empty,
};
}
}
}