Table of Contents

Interface IPermissionService

Namespace
Shard.Server.Modules.Permissions
Assembly
Shard.Server.Modules.dll

Stores and resolves permissions for users (by UUID), groups (with inheritance) and ops. Provided to the service registry so the command system and modules can check and grant permissions. Mirrors the upstream permission provider/module split, collapsed into one service for now.

public interface IPermissionService

Properties

ActiveProvider

The provider with the highest priority. This is the provider that will be used for permission modifications.

PermissionProvider ActiveProvider { get; }

Property Value

PermissionProvider

Methods

AddUserToGroup(Guid, string)

Add a user to a group

bool AddUserToGroup(Guid uuid, string group)

Parameters

uuid Guid

The UUID of the user

group string

The group to add the user to

Returns

bool

true if the user was added to the group; otherwise, false.

GetGroupPermissions(string)

Gets all explicitly assigned permissions for a group.

IReadOnlyDictionary<string, bool> GetGroupPermissions(string group)

Parameters

group string

The group to get permissions for

Returns

IReadOnlyDictionary<string, bool>

A read-only dictionary mapping permission nodes to their granted or denied state.

GetUserGroups(Guid)

Gets the groups currently assigned to a user.

IReadOnlyList<string> GetUserGroups(Guid uuid)

Parameters

uuid Guid

The UUID of the user

Returns

IReadOnlyList<string>

A read-only list of group names.

GetUserPermissions(Guid)

Gets all explicitly assigned permissions for a user.

IReadOnlyDictionary<string, bool> GetUserPermissions(Guid uuid)

Parameters

uuid Guid

The UUID of the user

Returns

IReadOnlyDictionary<string, bool>

A read-only dictionary mapping permission nodes to their granted or denied state.

HasPermission(Guid, string, bool)

Determines whether a user has a specific permission node or not. Highest priority provider -> Lowest Priority Provider. User permissions are checked before group-inherited permissions.

bool HasPermission(Guid uuid, string node, bool def = false)

Parameters

uuid Guid

The UUID of the user to check

node string

The permission node to check

def bool

The default value to return if the user does not have the permission

Returns

bool

true if the permission is granted; otherwise, false.

RegisterProvider(PermissionProvider)

Registers a permission provider.

void RegisterProvider(PermissionProvider provider)

Parameters

provider PermissionProvider

The provider to register.

RemoveGroupPermission(string, string)

Removes an explicitly assigned permission from a group

void RemoveGroupPermission(string group, string node)

Parameters

group string

The group to remove the permission from

node string

The permission node to remove

RemoveUserFromGroup(Guid, string)

Removes a user from a group

bool RemoveUserFromGroup(Guid uuid, string group)

Parameters

uuid Guid

The UUID of the user

group string

The group to remove the user from

Returns

bool

true if the user was removed from the group; otherwise, false.

RemoveUserPermission(Guid, string)

Removes an explicitly assigned permission

void RemoveUserPermission(Guid uuid, string node)

Parameters

uuid Guid

The UUID of the user

node string

The permission node to remove

SetGroupPermission(string, string, bool)

Sets a permission for a group

void SetGroupPermission(string group, string node, bool value)

Parameters

group string

The group to set the permission for

node string

The permission node to set

value bool

The value to set the permission to

SetUserGroups(Guid, IEnumerable<string>)

Replaces the group assigned to a user.

void SetUserGroups(Guid uuid, IEnumerable<string> groups)

Parameters

uuid Guid

The UUID of the user

groups IEnumerable<string>

The groups the user should belong to

SetUserPermission(Guid, string, bool)

Set or update a permission for a user

void SetUserPermission(Guid uuid, string node, bool value)

Parameters

uuid Guid

The UUID of the user

node string

The permission node to set

value bool

The value to set the permission to

UnregisterProvider(PermissionProvider)

Unregisters a permission provider.

bool UnregisterProvider(PermissionProvider provider)

Parameters

provider PermissionProvider

The provider to unregister.

Returns

bool

true if the provider was unregistered; otherwise, false.