124 lines
4.2 KiB
C#
124 lines
4.2 KiB
C#
using AyCode.Services.Loggers;
|
|
using System.Net.Http.Json;
|
|
using System.Text.Json;
|
|
using TIAM.Entities.Permissions;
|
|
using TIAM.Models.Dtos.Products;
|
|
using TIAMWebApp.Shared.Application.Interfaces;
|
|
using TIAMWebApp.Shared.Application.Models;
|
|
|
|
namespace TIAMWebApp.Client.Services
|
|
{
|
|
public class PermissionService : IPermissionService
|
|
{
|
|
private readonly HttpClient http;
|
|
private readonly IAcLogWriterClientBase _browserConsoleLogWriter;
|
|
|
|
public PermissionService(HttpClient http, IAcLogWriterClientBase browserConsoleLogWriter)
|
|
{
|
|
this.http = http;
|
|
this._browserConsoleLogWriter = browserConsoleLogWriter;
|
|
}
|
|
|
|
//1. create a permission to be assigned to users to access a context
|
|
public Task CreatePermissionForContextByContextIdAsync(Guid contextId)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
//2. get the contexts where the user has permission
|
|
public Task<List<AssignedPermissionModel>> GetPermissionContextsByUserIdAsync(Guid userId)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
/// <summary>
|
|
///this is the method that checks if there are any permissions for a context already to determine the next bit to be used in the bitmask
|
|
/// </summary>
|
|
/// <param name="contextId"></param>
|
|
/// <returns>The next bit to set</returns>
|
|
//3. get the users who have permission for a context
|
|
public Task<List<AssignedPermissionModel>?> GetPermissionsForContextByContextIdAsync(Guid contextId)
|
|
{
|
|
var url = APIUrls.GetPermissionsForContextByContextId;
|
|
var response = http.PostAsJsonAsync(url, contextId);
|
|
//get the dictionary from the response
|
|
var result = response.Result.Content.ReadAsStringAsync().Result;
|
|
|
|
|
|
//deserialize the json string to a dictionary
|
|
List<AssignedPermissionModel>? permissions = JsonSerializer.Deserialize<List<AssignedPermissionModel>>(result);
|
|
//return the list of permissions
|
|
return Task.FromResult(permissions);
|
|
|
|
}
|
|
|
|
//4. give a user permission to access a context
|
|
public Task AssignPermissionToUserForContextAsync(Guid contextId, Guid userId)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
//5. remove a user's permission to access a context
|
|
public Task RemovePermissionFromUserByContextIdAsync(Guid contextId, Guid permissionId, Guid userId)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
//6. remove all permissions of a user for a context
|
|
public Task RemoveAllPermissionsByContextIdAsync(Guid contextId, Guid userId)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
//7. remove all permissions of a user (BAN user from all contexts, even the system)
|
|
public Task RemoveAllPermissionsByUserIdAsync(Guid userId)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
//8. create permission group
|
|
public Task CreatePermissionGroupForContextAsync(Guid contextId, string name)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
//9. add user to permission group
|
|
public Task AddUserToPermissionGroupAsync(Guid permissionGroupId, Guid userId)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
//10. create permission type
|
|
public Task<bool> CreatePermissionTypeAsync(string name, Guid contextId)
|
|
{
|
|
//chech if the context already has permissiontypes
|
|
|
|
//if it does, get the next bit value
|
|
|
|
|
|
//if it doesn't, use 1
|
|
|
|
//create the permissiontype
|
|
|
|
return Task.FromResult(false);
|
|
}
|
|
|
|
//11. get permission types for context
|
|
public Task<List<PermissionsType>>? GetPermissionTypesForContextByContextIdAsync(Guid contextId)
|
|
{
|
|
return http.GetFromJsonAsync<List<PermissionsType>>(APIUrls.GetPermissionGroupsForContextByContextId);
|
|
}
|
|
|
|
//12. get permission groups for context
|
|
public Task GetPermissionGroupsForContextByContextIdAsync(Guid contextId)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|