commit
77694da100
|
@ -85,7 +85,7 @@ else
|
||||||
var user = await UserService.GetUserAsync(UserRole.UserId, PageState.Site.SiteId);
|
var user = await UserService.GetUserAsync(UserRole.UserId, PageState.Site.SiteId);
|
||||||
if (user != null)
|
if (user != null)
|
||||||
{
|
{
|
||||||
await UserService.DeleteUserAsync(user.UserId);
|
await UserService.DeleteUserAsync(user.UserId, PageState.Site.SiteId);
|
||||||
await logger.LogInformation("User Deleted {User}", UserRole.User);
|
await logger.LogInformation("User Deleted {User}", UserRole.User);
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using Oqtane.Models;
|
using Oqtane.Models;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Oqtane.Services
|
namespace Oqtane.Services
|
||||||
|
@ -13,7 +13,7 @@ namespace Oqtane.Services
|
||||||
|
|
||||||
Task<User> UpdateUserAsync(User user);
|
Task<User> UpdateUserAsync(User user);
|
||||||
|
|
||||||
Task DeleteUserAsync(int userId);
|
Task DeleteUserAsync(int userId, int siteId);
|
||||||
|
|
||||||
Task<User> LoginUserAsync(User user, bool setCookie, bool isPersistent);
|
Task<User> LoginUserAsync(User user, bool setCookie, bool isPersistent);
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using Oqtane.Shared;
|
using Oqtane.Shared;
|
||||||
using Oqtane.Models;
|
using Oqtane.Models;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
@ -36,9 +36,9 @@ namespace Oqtane.Services
|
||||||
return await PutJsonAsync<User>($"{Apiurl}/{user.UserId}", user);
|
return await PutJsonAsync<User>($"{Apiurl}/{user.UserId}", user);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task DeleteUserAsync(int userId)
|
public async Task DeleteUserAsync(int userId, int siteId)
|
||||||
{
|
{
|
||||||
await DeleteAsync($"{Apiurl}/{userId}");
|
await DeleteAsync($"{Apiurl}/{userId}?siteid={siteId}");
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<User> LoginUserAsync(User user, bool setCookie, bool isPersistent)
|
public async Task<User> LoginUserAsync(User user, bool setCookie, bool isPersistent)
|
||||||
|
|
|
@ -111,7 +111,6 @@ namespace Oqtane.Controllers
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO shoud be moved to another layer
|
|
||||||
private async Task<User> CreateUser(User user)
|
private async Task<User> CreateUser(User user)
|
||||||
{
|
{
|
||||||
User newUser = null;
|
User newUser = null;
|
||||||
|
@ -261,19 +260,50 @@ namespace Oqtane.Controllers
|
||||||
// DELETE api/<controller>/5?siteid=x
|
// DELETE api/<controller>/5?siteid=x
|
||||||
[HttpDelete("{id}")]
|
[HttpDelete("{id}")]
|
||||||
[Authorize(Roles = RoleNames.Admin)]
|
[Authorize(Roles = RoleNames.Admin)]
|
||||||
public async Task Delete(int id)
|
public async Task Delete(int id, string siteid)
|
||||||
{
|
{
|
||||||
IdentityUser identityuser = await _identityUserManager.FindByNameAsync(_users.GetUser(id).Username);
|
User user = _users.GetUser(id);
|
||||||
|
if (user != null)
|
||||||
if (identityuser != null)
|
|
||||||
{
|
{
|
||||||
var result = await _identityUserManager.DeleteAsync(identityuser);
|
// remove user roles for site
|
||||||
|
foreach (UserRole userrole in _userRoles.GetUserRoles(user.UserId, Int32.Parse(siteid)).ToList())
|
||||||
if (result != null)
|
|
||||||
{
|
{
|
||||||
_folders.DeleteUserFolder(id);
|
_userRoles.DeleteUserRole(userrole.UserRoleId);
|
||||||
_users.DeleteUser(id);
|
_logger.Log(LogLevel.Information, this, LogFunction.Delete, "User Role Deleted {UserRole}", userrole);
|
||||||
_logger.Log(LogLevel.Information, this, LogFunction.Delete, "User Deleted {UserId}", id);
|
}
|
||||||
|
|
||||||
|
// remove user folder for site
|
||||||
|
var folder = _folders.GetFolder(Int32.Parse(siteid), Utilities.PathCombine("Users", user.UserId.ToString(), Path.DirectorySeparatorChar.ToString()));
|
||||||
|
if (folder != null)
|
||||||
|
{
|
||||||
|
if (Directory.Exists(_folders.GetFolderPath(folder)))
|
||||||
|
{
|
||||||
|
Directory.Delete(_folders.GetFolderPath(folder), true);
|
||||||
|
}
|
||||||
|
_folders.DeleteFolder(folder.FolderId);
|
||||||
|
_logger.Log(LogLevel.Information, this, LogFunction.Delete, "User Folder Deleted {Folder}", folder);
|
||||||
|
}
|
||||||
|
|
||||||
|
// delete user if they are not a member of any other sites
|
||||||
|
if (!_userRoles.GetUserRoles(user.UserId, -1).Any())
|
||||||
|
{
|
||||||
|
// get identity user
|
||||||
|
IdentityUser identityuser = await _identityUserManager.FindByNameAsync(user.Username);
|
||||||
|
if (identityuser != null)
|
||||||
|
{
|
||||||
|
// delete identity user
|
||||||
|
var result = await _identityUserManager.DeleteAsync(identityuser);
|
||||||
|
if (result != null)
|
||||||
|
{
|
||||||
|
// delete user
|
||||||
|
_users.DeleteUser(user.UserId);
|
||||||
|
_logger.Log(LogLevel.Information, this, LogFunction.Delete, "User Deleted {UserId}", user.UserId);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_logger.Log(LogLevel.Error, this, LogFunction.Delete, "Error Deleting User {UserId}", user.UserId, result.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,15 +90,7 @@ namespace Oqtane.Repository
|
||||||
_db.Folder.Remove(folder);
|
_db.Folder.Remove(folder);
|
||||||
_db.SaveChanges();
|
_db.SaveChanges();
|
||||||
}
|
}
|
||||||
public void DeleteUserFolder(int userId)
|
|
||||||
{
|
|
||||||
string userFolderPath = Utilities.PathCombine("Users", userId.ToString(), System.IO.Path.DirectorySeparatorChar.ToString());
|
|
||||||
List<int> folderIdsToDelete = new List<int>(_db.Folder.Where(a => a.Path == userFolderPath).Select(a => a.FolderId));
|
|
||||||
foreach (int folderId in folderIdsToDelete)
|
|
||||||
{
|
|
||||||
DeleteFolder(folderId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public string GetFolderPath(int folderId)
|
public string GetFolderPath(int folderId)
|
||||||
{
|
{
|
||||||
Folder folder = _db.Folder.Find(folderId);
|
Folder folder = _db.Folder.Find(folderId);
|
||||||
|
|
|
@ -12,7 +12,6 @@ namespace Oqtane.Repository
|
||||||
Folder GetFolder(int folderId, bool tracking);
|
Folder GetFolder(int folderId, bool tracking);
|
||||||
Folder GetFolder(int siteId, string path);
|
Folder GetFolder(int siteId, string path);
|
||||||
void DeleteFolder(int folderId);
|
void DeleteFolder(int folderId);
|
||||||
void DeleteUserFolder(int userId);
|
|
||||||
string GetFolderPath(int folderId);
|
string GetFolderPath(int folderId);
|
||||||
string GetFolderPath(Folder folder);
|
string GetFolderPath(Folder folder);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Oqtane.Models;
|
using Oqtane.Models;
|
||||||
|
@ -27,7 +27,7 @@ namespace Oqtane.Repository
|
||||||
return _db.UserRole.Where(item => item.UserId == userId)
|
return _db.UserRole.Where(item => item.UserId == userId)
|
||||||
.Include(item => item.Role) // eager load roles
|
.Include(item => item.Role) // eager load roles
|
||||||
.Include(item => item.User) // eager load users
|
.Include(item => item.User) // eager load users
|
||||||
.Where(item => item.Role.SiteId == siteId || item.Role.SiteId == null);
|
.Where(item => item.Role.SiteId == siteId || item.Role.SiteId == null || siteId == -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public UserRole AddUserRole(UserRole userRole)
|
public UserRole AddUserRole(UserRole userRole)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user