using Azaion.CommonSecurity.DTO; using Azaion.CommonSecurity.DTO.Commands; using Microsoft.Extensions.DependencyInjection; namespace Azaion.CommonSecurity.Services; public interface IAuthProvider { void Login(ApiCredentials credentials); User CurrentUser { get; } } public class AuthProvider([FromKeyedServices(SecurityConstants.EXTERNAL_INFERENCE_PATH)] IExternalClient externalClient) : IAuthProvider { public User CurrentUser { get; private set; } = null!; public void Login(ApiCredentials credentials) { externalClient.Send(RemoteCommand.Create(CommandType.Login, credentials)); var user = externalClient.Get(); if (user == null) throw new Exception("Can't get user from Auth provider"); CurrentUser = user; } }