Merge pull request #1447 from joshuaboniface/implement-invalidauth
Implement InvalidAuthProvider
This commit is contained in:
commit
06834fefef
47
Emby.Server.Implementations/Library/InvalidAuthProvider.cs
Normal file
47
Emby.Server.Implementations/Library/InvalidAuthProvider.cs
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using MediaBrowser.Controller.Authentication;
|
||||||
|
using MediaBrowser.Controller.Entities;
|
||||||
|
using MediaBrowser.Controller.Net;
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Library
|
||||||
|
{
|
||||||
|
public class InvalidAuthProvider : IAuthenticationProvider
|
||||||
|
{
|
||||||
|
public string Name => "InvalidOrMissingAuthenticationProvider";
|
||||||
|
|
||||||
|
public bool IsEnabled => true;
|
||||||
|
|
||||||
|
public Task<ProviderAuthenticationResult> Authenticate(string username, string password)
|
||||||
|
{
|
||||||
|
throw new SecurityException("User Account cannot login with this provider. The Normal provider for this user cannot be found");
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task<bool> HasPassword(User user)
|
||||||
|
{
|
||||||
|
return Task.FromResult(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task ChangePassword(User user, string newPassword)
|
||||||
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ChangeEasyPassword(User user, string newPassword, string newPasswordHash)
|
||||||
|
{
|
||||||
|
// Nothing here
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetPasswordHash(User user)
|
||||||
|
{
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetEasyPasswordHash(User user)
|
||||||
|
{
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -79,6 +79,8 @@ namespace Emby.Server.Implementations.Library
|
||||||
private IAuthenticationProvider[] _authenticationProviders;
|
private IAuthenticationProvider[] _authenticationProviders;
|
||||||
private DefaultAuthenticationProvider _defaultAuthenticationProvider;
|
private DefaultAuthenticationProvider _defaultAuthenticationProvider;
|
||||||
|
|
||||||
|
private InvalidAuthProvider _invalidAuthProvider;
|
||||||
|
|
||||||
private IPasswordResetProvider[] _passwordResetProviders;
|
private IPasswordResetProvider[] _passwordResetProviders;
|
||||||
private DefaultPasswordResetProvider _defaultPasswordResetProvider;
|
private DefaultPasswordResetProvider _defaultPasswordResetProvider;
|
||||||
|
|
||||||
|
@ -141,6 +143,8 @@ namespace Emby.Server.Implementations.Library
|
||||||
|
|
||||||
_defaultAuthenticationProvider = _authenticationProviders.OfType<DefaultAuthenticationProvider>().First();
|
_defaultAuthenticationProvider = _authenticationProviders.OfType<DefaultAuthenticationProvider>().First();
|
||||||
|
|
||||||
|
_invalidAuthProvider = _authenticationProviders.OfType<InvalidAuthProvider>().First();
|
||||||
|
|
||||||
_passwordResetProviders = passwordResetProviders.ToArray();
|
_passwordResetProviders = passwordResetProviders.ToArray();
|
||||||
|
|
||||||
_defaultPasswordResetProvider = passwordResetProviders.OfType<DefaultPasswordResetProvider>().First();
|
_defaultPasswordResetProvider = passwordResetProviders.OfType<DefaultPasswordResetProvider>().First();
|
||||||
|
@ -307,8 +311,7 @@ namespace Emby.Server.Implementations.Library
|
||||||
user = Users
|
user = Users
|
||||||
.FirstOrDefault(i => string.Equals(username, i.Name, StringComparison.OrdinalIgnoreCase));
|
.FirstOrDefault(i => string.Equals(username, i.Name, StringComparison.OrdinalIgnoreCase));
|
||||||
|
|
||||||
var hasNewUserPolicy = authenticationProvider as IHasNewUserPolicy;
|
if (authenticationProvider is IHasNewUserPolicy hasNewUserPolicy)
|
||||||
if (hasNewUserPolicy != null)
|
|
||||||
{
|
{
|
||||||
var policy = hasNewUserPolicy.GetNewUserPolicy();
|
var policy = hasNewUserPolicy.GetNewUserPolicy();
|
||||||
UpdateUserPolicy(user, policy, true);
|
UpdateUserPolicy(user, policy, true);
|
||||||
|
@ -400,7 +403,9 @@ namespace Emby.Server.Implementations.Library
|
||||||
|
|
||||||
if (providers.Length == 0)
|
if (providers.Length == 0)
|
||||||
{
|
{
|
||||||
providers = new IAuthenticationProvider[] { _defaultAuthenticationProvider };
|
// Assign the user to the InvalidAuthProvider since no configured auth provider was valid/found
|
||||||
|
_logger.LogWarning("User {UserName} was found with invalid/missing Authentication Provider {AuthenticationProviderId}. Assigning user to InvalidAuthProvider until this is corrected", user.Name, user.Policy.AuthenticationProviderId);
|
||||||
|
providers = new IAuthenticationProvider[] { _invalidAuthProvider };
|
||||||
}
|
}
|
||||||
|
|
||||||
return providers;
|
return providers;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user