using VberZero.BaseSystem.MultiTenancy;
using VberZero.BaseSystem.Users;
namespace VberZero.Authorization.Users;
///
/// 定义外部授权源。
///
public interface IExternalAuthenticationSource
{
///
/// 身份验证源的唯一名称。
/// 此源名称设置为
/// 如果用户通过此身份验证源进行身份验证
///
string Name { get; }
///
/// 用于尝试通过此来源对用户进行身份验证。
///
///
///
///
/// True,表示此使用已通过此源进行身份验证
Task TryAuthenticateAsync(string userNameOrEmailOrPhone, string plainPassword, Tenant? tenant);
///
/// 此方法是通过此源进行身份验证的用户,该用户尚不存在。 因此,源应该创建用户和填充属性。
///
///
///
/// 新创建的用户
Task CreateUserAsync(string userNameOrEmailPhone, Tenant? tenant);
///
/// 在现有用户通过此源进行身份验证后调用此方法。 它可用于通过源更新用户的某些属性。
///
///
///
Task UpdateUserAsync(User user, Tenant? tenant);
}