IExternalAuthenticationSource.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using VberZero.BaseSystem.MultiTenancy;
  2. using VberZero.BaseSystem.Users;
  3. namespace VberZero.Authorization.Users;
  4. /// <summary>
  5. /// 定义外部授权源。
  6. /// </summary>
  7. public interface IExternalAuthenticationSource
  8. {
  9. /// <summary>
  10. /// 身份验证源的唯一名称。
  11. /// 此源名称设置为 <see cref="User.AuthenticationSource"/>
  12. /// 如果用户通过此身份验证源进行身份验证
  13. /// </summary>
  14. string Name { get; }
  15. /// <summary>
  16. /// 用于尝试通过此来源对用户进行身份验证。
  17. /// </summary>
  18. /// <param name="userNameOrEmailOrPhone"></param>
  19. /// <param name="plainPassword"></param>
  20. /// <param name="tenant"></param>
  21. /// <returns>True,表示此使用已通过此源进行身份验证</returns>
  22. Task<bool> TryAuthenticateAsync(string userNameOrEmailOrPhone, string plainPassword, Tenant? tenant);
  23. /// <summary>
  24. /// 此方法是通过此源进行身份验证的用户,该用户尚不存在。 因此,源应该创建用户和填充属性。
  25. /// </summary>
  26. /// <param name="userNameOrEmailPhone"></param>
  27. /// <param name="tenant"></param>
  28. /// <returns>新创建的用户</returns>
  29. Task<User> CreateUserAsync(string userNameOrEmailPhone, Tenant? tenant);
  30. /// <summary>
  31. /// 在现有用户通过此源进行身份验证后调用此方法。 它可用于通过源更新用户的某些属性。
  32. /// </summary>
  33. /// <param name="user"></param>
  34. /// <param name="tenant"></param>
  35. Task UpdateUserAsync(User user, Tenant? tenant);
  36. }