mirror of
https://github.com/hmaxnl/DotBased.git
synced 2025-04-18 19:48:12 +02:00
Compare commits
3 Commits
c6e11efdf2
...
d6c0ad1138
Author | SHA1 | Date | |
---|---|---|---|
|
d6c0ad1138 | ||
|
e65b937128 | ||
|
79d8fcfb8d |
|
@ -114,4 +114,9 @@ public class RoleRepository(IDbContextFactory<AuthorityContext> contextFactory)
|
|||
return HandleException("Failed to delete role!", e);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<ListResult<AuthorityRoleItem>> GetUserRolesAsync(AuthorityUser user, int limit = 20, int offset = 0, string search = "", CancellationToken cancellationToken = default)
|
||||
{
|
||||
return ListResult<AuthorityRoleItem>.Failed("Not implemented!");
|
||||
}
|
||||
}
|
|
@ -1,10 +1,11 @@
|
|||
using DotBased.AspNet.Authority.Models.Authority;
|
||||
|
||||
namespace DotBased.AspNet.Authority.Managers;
|
||||
|
||||
public partial class AuthorityManager
|
||||
{
|
||||
/*
|
||||
* - Validate User & Group
|
||||
* - Check if user is already in group (if already in group return)
|
||||
* - Add to UsersGroups table
|
||||
*/
|
||||
public async Task<ListResult<AuthorityGroupItem>> GetUserGroupsAsync(AuthorityUser user, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return ListResult<AuthorityGroupItem>.Failed("Not implemented!");
|
||||
}
|
||||
}
|
|
@ -1,34 +1,36 @@
|
|||
using DotBased.AspNet.Authority.Models;
|
||||
using DotBased.AspNet.Authority.Models.Authority;
|
||||
|
||||
namespace DotBased.AspNet.Authority.Managers;
|
||||
|
||||
public partial class AuthorityManager
|
||||
{
|
||||
public async Task<Result<AuthorityRole>> CreateRoleAsync(AuthorityRole role, CancellationToken? cancellationToken = null)
|
||||
public async Task<AuthorityResult<AuthorityRole>> CreateRoleAsync(AuthorityRole role, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Result<AuthorityRole>.Failed("Not implemented!");
|
||||
role.Version = GenerateVersion();
|
||||
var createResult = await roleRepository.CreateRoleAsync(role, cancellationToken);
|
||||
return AuthorityResult<AuthorityRole>.FromResult(createResult);
|
||||
}
|
||||
|
||||
public async Task<Result> DeleteRoleAsync(AuthorityRole role, CancellationToken? cancellationToken = null)
|
||||
public async Task<Result> DeleteRoleAsync(AuthorityRole role, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Result.Failed("Not implemented!");
|
||||
var result = await roleRepository.DeleteRoleAsync(role, cancellationToken);
|
||||
return result;
|
||||
}
|
||||
|
||||
public async Task<Result<AuthorityRole>> UpdateRoleAsync(AuthorityRole role, CancellationToken? cancellationToken = null)
|
||||
public async Task<Result<AuthorityRole>> UpdateRoleAsync(AuthorityRole role, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Result<AuthorityRole>.Failed("Not implemented!");
|
||||
var result = await roleRepository.UpdateRoleAsync(role, cancellationToken);
|
||||
return result;
|
||||
}
|
||||
|
||||
public async Task<ListResult<AuthorityRole>> GetRolesAsync(int limit = 20, int offset = 0, string search = "", CancellationToken? cancellationToken = null)
|
||||
public async Task<ListResult<AuthorityRoleItem>> GetRolesAsync(int limit = 20, int offset = 0, string search = "", CancellationToken cancellationToken = default)
|
||||
{
|
||||
/*
|
||||
* Search by role name & id
|
||||
* Order by name, created date, creator? (paging)
|
||||
*/
|
||||
return ListResult<AuthorityRole>.Failed("Not implemented!");
|
||||
var searchResult = await roleRepository.GetRolesAsync(limit, offset, search, cancellationToken);
|
||||
return searchResult;
|
||||
}
|
||||
|
||||
public async Task AddRoleToUserAsync(AuthorityUser user, AuthorityRole role, CancellationToken? cancellationToken = null)
|
||||
public async Task AddRoleToUserAsync(AuthorityUser user, AuthorityRole role, CancellationToken cancellationToken = default)
|
||||
{
|
||||
/*
|
||||
- Validate User & Role
|
||||
|
@ -37,11 +39,11 @@ public partial class AuthorityManager
|
|||
*/
|
||||
}
|
||||
|
||||
public async Task RemoveRoleFromUserAsync(AuthorityRole role, AuthorityUser user, CancellationToken? cancellationToken = null)
|
||||
public async Task RemoveRoleFromUserAsync(AuthorityRole role, AuthorityUser user, CancellationToken cancellationToken = default)
|
||||
{
|
||||
}
|
||||
|
||||
public async Task AddRoleToGroupAsync(AuthorityRole role, AuthorityGroup group, CancellationToken? cancellationToken = null)
|
||||
public async Task AddRoleToGroupAsync(AuthorityRole role, AuthorityGroup group, CancellationToken cancellationToken = default)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -50,16 +52,34 @@ public partial class AuthorityManager
|
|||
/// </summary>
|
||||
/// <param name="user">The user to get the roles from</param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
public async Task<ListResult<AuthorityRole>> GetUserRolesAsync(AuthorityUser user, CancellationToken? cancellationToken = null)
|
||||
public async Task<ListResult<AuthorityRole>> GetUserRolesAsync(AuthorityUser user, CancellationToken cancellationToken = default)
|
||||
{
|
||||
/*
|
||||
* - Validate user
|
||||
* - Get user groups (id)
|
||||
* - Get roles contained from user
|
||||
* - Get roles contained from groups (if any)
|
||||
* - Order by (for paging)
|
||||
*/
|
||||
var usrValidation = await IsValidUserAsync(user, cancellationToken);
|
||||
if (!usrValidation.Success)
|
||||
{
|
||||
return ListResult<AuthorityRole>.Failed("Invalid user");
|
||||
}
|
||||
|
||||
List<AuthorityRole> roles = [];
|
||||
var usrRoles = await GetUserRolesAsync(user, cancellationToken);
|
||||
if (usrRoles.Success)
|
||||
{
|
||||
roles.AddRange(usrRoles.Items);
|
||||
}
|
||||
var usrGroups = await GetUserGroupsAsync(user, cancellationToken);
|
||||
if (usrGroups.Success)
|
||||
{
|
||||
var groupRolesResult = await GetGroupRolesAsync(usrGroups.Items.Select(g => g.Id).ToList(), cancellationToken);
|
||||
if (groupRolesResult.Success)
|
||||
{
|
||||
roles.AddRange(groupRolesResult.Items);
|
||||
}
|
||||
}
|
||||
return ListResult<AuthorityRole>.Ok(roles, roles.Count);
|
||||
}
|
||||
|
||||
public async Task<ListResult<AuthorityRole>> GetGroupRolesAsync(List<Guid> groupIds, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return ListResult<AuthorityRole>.Failed("Not implemented!");
|
||||
}
|
||||
}
|
|
@ -45,9 +45,7 @@ public partial class AuthorityManager
|
|||
var passwordValidation = await ValidatePasswordAsync(user, password);
|
||||
if (!passwordValidation.Success)
|
||||
{
|
||||
List<ValidationError> errors = [];
|
||||
errors.AddRange(passwordValidation.Errors);
|
||||
return AuthorityResult<AuthorityUser>.Failed(errors, ResultFailReason.Validation);
|
||||
return AuthorityResult<AuthorityUser>.Failed(passwordValidation.Errors, ResultFailReason.Validation);
|
||||
}
|
||||
|
||||
user.PasswordHash = await PasswordHasher.HashPasswordAsync(password);
|
||||
|
@ -90,6 +88,10 @@ public partial class AuthorityManager
|
|||
var deleteResult = await UserRepository.DeleteUserAsync(model, cancellationToken);
|
||||
return deleteResult;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public async Task<Result> IsValidUserAsync(AuthorityUser user, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var usrResult = await userRepository.GetVersionAsync(user, cancellationToken);
|
||||
return usrResult;
|
||||
}
|
||||
}
|
|
@ -11,7 +11,7 @@ public class AuthorityResult<TResultValue> : Result<TResultValue>
|
|||
Reason = ResultFailReason.Unknown;
|
||||
}
|
||||
|
||||
public AuthorityResult(bool success, string errorMessage = "", TResultValue? value = default, ResultFailReason reason = ResultFailReason.None, List<ValidationError>? errors = null) : base(success, errorMessage, value, null)
|
||||
public AuthorityResult(bool success, string errorMessage = "", TResultValue? value = default, ResultFailReason reason = ResultFailReason.None, IReadOnlyList<ValidationError>? errors = null) : base(success, errorMessage, value, null)
|
||||
{
|
||||
Success = success;
|
||||
Message = errorMessage;
|
||||
|
@ -20,7 +20,7 @@ public class AuthorityResult<TResultValue> : Result<TResultValue>
|
|||
ValidationErrors = errors;
|
||||
}
|
||||
public ResultFailReason Reason { get; }
|
||||
public List<ValidationError>? ValidationErrors { get; }
|
||||
public IReadOnlyList<ValidationError>? ValidationErrors { get; }
|
||||
|
||||
|
||||
public static AuthorityResult<TResultValue> Ok(TResultValue? value) => new AuthorityResult<TResultValue>(true, value:value);
|
||||
|
@ -28,7 +28,7 @@ public class AuthorityResult<TResultValue> : Result<TResultValue>
|
|||
public static AuthorityResult<TResultValue> Error(string errorMessage, ResultFailReason reason = ResultFailReason.Error) =>
|
||||
new AuthorityResult<TResultValue>(false, errorMessage, reason:reason);
|
||||
|
||||
public static AuthorityResult<TResultValue> Failed(List<ValidationError> errors, ResultFailReason reason = ResultFailReason.None)
|
||||
public static AuthorityResult<TResultValue> Failed(IReadOnlyList<ValidationError> errors, ResultFailReason reason = ResultFailReason.None)
|
||||
=> new AuthorityResult<TResultValue>(false, errors:errors, reason:reason);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user