AdminPanel/Netina.AdminPanel.PWA/Models/BaseViewModel.cs

59 lines
1.4 KiB
C#
Raw Normal View History

2024-04-17 16:19:43 +03:30
namespace Netina.AdminPanel.PWA.Models;
public class BaseViewModel
{
public bool IsProcessing { get; set; } = false;
public virtual void Initialize()
{
}
public virtual Task InitializeAsync()
{
return Task.CompletedTask;
}
}
public class BaseViewModel<TPageDto>
{
public bool IsProcessing { get; set; } = false;
public TPageDto PageDto { get; set; }
2024-05-29 12:55:05 +03:30
private string[] _permissions = new string[]{};
protected readonly IUserUtility _userUtility;
2024-05-29 12:55:05 +03:30
public bool IsPermitted { get; set; } = false;
public BaseViewModel(IUserUtility userUtility,params string[] permissions)
{
2024-05-29 12:55:05 +03:30
_userUtility = userUtility;
_permissions = permissions;
PageDto = Activator.CreateInstance<TPageDto>();
}
public virtual void Initialize()
{
}
2024-05-29 12:55:05 +03:30
public virtual async Task InitializeAsync()
{
2024-05-29 12:55:05 +03:30
await CheckPermissions();
}
public async Task<bool> CheckPermissions()
{
if (_permissions.Length == 0)
{
IsPermitted = true;
return true;
}
var permissions = await _userUtility.GetPermissionsAsync();
if (permissions == null)
return false;
foreach (var permission in _permissions)
{
if (permissions.Contains(permission))
{
IsPermitted = true;
return true;
}
}
return false;
}
}