DocSpace-buildtools/common/ASC.Api.Core/Auth/CookieAuthHandler.cs
pavelbannov 5022501e58 Merge branch 'feature/backend-refactor' into feature/asc-api-core-refactor
# Conflicts:
#	common/ASC.Api.Core/Auth/ConfirmAuthHandler.cs
#	common/ASC.Api.Core/Auth/CookieAuthHandler.cs
#	common/ASC.Api.Core/Core/ApiContext.cs
#	common/ASC.Api.Core/Core/ApiDateTime.cs
#	common/ASC.Api.Core/Core/BaseStartup.cs
#	common/ASC.Api.Core/Core/CustomHealthCheck.cs
#	common/ASC.Api.Core/Middleware/ProductSecurityFilter.cs
#	common/ASC.Api.Core/Middleware/TenantStatusFilter.cs
#	common/ASC.Api.Core/Model/EmployeeWraperFull.cs
#	common/ASC.Api.Core/Routing/FormatRoute.cs
2022-02-10 13:56:54 +03:00

46 lines
1.7 KiB
C#

using SecurityContext = ASC.Core.SecurityContext;
namespace ASC.Api.Core.Auth;
[Scope]
public class CookieAuthHandler : AuthenticationHandler<AuthenticationSchemeOptions>
{
private readonly AuthorizationHelper _authorizationHelper;
private readonly SecurityContext _securityContext;
private readonly CookiesManager _cookiesManager;
public CookieAuthHandler(
IOptionsMonitor<AuthenticationSchemeOptions> options,
ILoggerFactory logger,
UrlEncoder encoder,
ISystemClock clock)
: base(options, logger, encoder, clock) { }
public CookieAuthHandler(IOptionsMonitor<AuthenticationSchemeOptions> options,
ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock,
AuthorizationHelper authorizationHelper,
SecurityContext securityContext,
CookiesManager cookiesManager)
: this(options, logger, encoder, clock)
{
_authorizationHelper = authorizationHelper;
_securityContext = securityContext;
_cookiesManager = cookiesManager;
}
protected override Task<AuthenticateResult> HandleAuthenticateAsync()
{
var result = _authorizationHelper.ProcessBasicAuthorization(out _);
if (!result)
{
_securityContext.Logout();
_cookiesManager.ClearCookies(CookiesType.AuthKey);
_cookiesManager.ClearCookies(CookiesType.SocketIO);
}
return Task.FromResult(
result ?
AuthenticateResult.Success(new AuthenticationTicket(Context.User, new AuthenticationProperties(), Scheme.Name)) :
AuthenticateResult.Fail(new AuthenticationException(nameof(HttpStatusCode.Unauthorized))));
}
}