1
0
mirror of https://github.com/chylex/Minecraft-Phantom-Panel.git synced 2025-08-16 21:31:45 +02:00
Files
.config
.run
.workdir
Agent
Common
Phantom.Common.Data
Phantom.Common.Data.Tests
Phantom.Common.Data.Web
Agent
AuditLog
EventLog
Instance
Minecraft
Users
AddRoleError.cs
AddUserError.cs
AuthenticatedUserInfo.cs
ChangeUserRolesResult.cs
CreateOrUpdateAdministratorUserResult.cs
CreateUserResult.cs
DeleteUserResult.cs
LogInSuccess.cs
PasswordRequirementViolation.cs
Permission.cs
PermissionSet.cs
RoleInfo.cs
SetUserPasswordError.cs
UserActionFailure.cs
UserInfo.cs
UserInstanceActionFailure.cs
UserPasswords.cs
UsernameRequirementViolation.cs
Phantom.Common.Data.Web.csproj
Phantom.Common.Messages.Agent
Phantom.Common.Messages.Web
Controller
Docker
Utils
Web
.dockerignore
.gitattributes
.gitignore
AddMigration.bat
AddMigration.sh
Directory.Build.props
Directory.Build.targets
Dockerfile
LICENSE
Packages.props
PhantomPanel.sln
README.md
global.json

25 lines
881 B
C#

using System.Collections.Immutable;
using MemoryPack;
namespace Phantom.Common.Data.Web.Users;
[MemoryPackable(GenerateType.VersionTolerant)]
public sealed partial record AuthenticatedUserInfo(
[property: MemoryPackOrder(0)] Guid Guid,
[property: MemoryPackOrder(1)] string Name,
[property: MemoryPackOrder(2)] PermissionSet Permissions,
[property: MemoryPackOrder(3)] ImmutableHashSet<Guid> ManagedAgentGuids
) {
public bool CheckPermission(Permission permission) {
return Permissions.Check(permission);
}
public bool HasAccessToAgent(Guid agentGuid) {
return ManagedAgentGuids.Contains(agentGuid) || Permissions.Check(Permission.ManageAllAgents);
}
public ImmutableHashSet<Guid> FilterAccessibleAgentGuids(ImmutableHashSet<Guid> agentGuids) {
return Permissions.Check(Permission.ManageAllAgents) ? agentGuids : agentGuids.Intersect(ManagedAgentGuids);
}
}