DefaultExternalAuthenticationSource.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System.Threading.Tasks;
  2. using IwbZero.MultiTenancy;
  3. namespace IwbZero.Authorization.Base.Users
  4. {
  5. /// <summary>
  6. /// This is a helper base class to easily update <see cref="IExternalAuthenticationSource{TTenant,TUser}"/>.
  7. /// Implements some methods as default but you can override all methods.
  8. /// </summary>
  9. /// <typeparam name="TTenant">Tenant type</typeparam>
  10. /// <typeparam name="TUser">User type</typeparam>
  11. public abstract class DefaultExternalAuthenticationSource<TTenant, TUser> : IExternalAuthenticationSource<TTenant, TUser>
  12. where TTenant : IwbTenant<TUser>
  13. where TUser : UserBase, new()
  14. {
  15. /// <inheritdoc/>
  16. public abstract string Name { get; }
  17. /// <inheritdoc/>
  18. public abstract Task<bool> TryAuthenticateAsync(string userNameOrEmailAddress, string plainPassword, TTenant tenant);
  19. /// <inheritdoc/>
  20. public virtual Task<TUser> CreateUserAsync(string userNameOrEmailAddress, TTenant tenant)
  21. {
  22. return Task.FromResult(
  23. new TUser
  24. {
  25. UserName = userNameOrEmailAddress,
  26. Name = userNameOrEmailAddress,
  27. Surname = userNameOrEmailAddress,
  28. EmailAddress = userNameOrEmailAddress,
  29. IsEmailConfirmed = true,
  30. IsActive = true
  31. });
  32. }
  33. /// <inheritdoc/>
  34. public virtual Task UpdateUserAsync(TUser user, TTenant tenant)
  35. {
  36. return Task.FromResult(0);
  37. }
  38. }
  39. }