Fix user deletion.
This commit is contained in:
parent
7da49d57b1
commit
9a01cd8590
|
@ -192,15 +192,15 @@ namespace Jellyfin.Server.Implementations.Users
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public void DeleteUser(User user)
|
public void DeleteUser(Guid userId)
|
||||||
{
|
{
|
||||||
|
var dbContext = _dbProvider.CreateContext();
|
||||||
|
var user = dbContext.Users.Find(userId);
|
||||||
if (user == null)
|
if (user == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException(nameof(user));
|
throw new ArgumentNullException(nameof(userId));
|
||||||
}
|
}
|
||||||
|
|
||||||
var dbContext = _dbProvider.CreateContext();
|
|
||||||
|
|
||||||
if (dbContext.Users.Find(user.Id) == null)
|
if (dbContext.Users.Find(user.Id) == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentException(string.Format(
|
throw new ArgumentException(string.Format(
|
||||||
|
@ -226,9 +226,18 @@ namespace Jellyfin.Server.Implementations.Users
|
||||||
CultureInfo.InvariantCulture,
|
CultureInfo.InvariantCulture,
|
||||||
"The user '{0}' cannot be deleted because there must be at least one admin user in the system.",
|
"The user '{0}' cannot be deleted because there must be at least one admin user in the system.",
|
||||||
user.Username),
|
user.Username),
|
||||||
nameof(user));
|
nameof(userId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clear all entities related to the user from the database.
|
||||||
|
if (user.ProfileImage != null)
|
||||||
|
{
|
||||||
|
dbContext.Remove(user.ProfileImage);
|
||||||
|
}
|
||||||
|
|
||||||
|
dbContext.RemoveRange(user.Permissions);
|
||||||
|
dbContext.RemoveRange(user.Preferences);
|
||||||
|
dbContext.RemoveRange(user.AccessSchedules);
|
||||||
dbContext.Users.Remove(user);
|
dbContext.Users.Remove(user);
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
OnUserDeleted?.Invoke(this, new GenericEventArgs<User>(user));
|
OnUserDeleted?.Invoke(this, new GenericEventArgs<User>(user));
|
||||||
|
|
|
@ -365,15 +365,8 @@ namespace MediaBrowser.Api
|
||||||
|
|
||||||
public Task DeleteAsync(DeleteUser request)
|
public Task DeleteAsync(DeleteUser request)
|
||||||
{
|
{
|
||||||
var user = _userManager.GetUserById(request.Id);
|
_userManager.DeleteUser(request.Id);
|
||||||
|
_sessionMananger.RevokeUserTokens(request.Id, null);
|
||||||
if (user == null)
|
|
||||||
{
|
|
||||||
throw new ResourceNotFoundException("User not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
_sessionMananger.RevokeUserTokens(user.Id, null);
|
|
||||||
_userManager.DeleteUser(user);
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -111,8 +111,8 @@ namespace MediaBrowser.Controller.Library
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Deletes the specified user.
|
/// Deletes the specified user.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="user">The user to be deleted.</param>
|
/// <param name="userId">The if of the user to be deleted.</param>
|
||||||
void DeleteUser(User user);
|
void DeleteUser(Guid userId);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Resets the password.
|
/// Resets the password.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user