public void AddGroup(string group, DateTime expireDate) { ExpiringAccessValue existingAccess = _groups.FirstOrDefault(g => g.Value == group); if (existingAccess != null) { Interface.CallHook("OnTimedGroupExtended", Id, group, existingAccess.ExpireDate - DateTime.UtcNow); existingAccess.ExpireDate += expireDate - DateTime.UtcNow; _plugin.Puts($"{Name} ({Id}) - Group time extended: {group} to {existingAccess.ExpireDate - DateTime.UtcNow}"); } else { Interface.CallHook("OnTimedGroupAdded", Id, group, expireDate - DateTime.UtcNow); _groups.Add(new ExpiringAccessValue(group, expireDate)); _plugin.permission.AddUserGroup(Id, group); _plugin.Puts($"{Name} ({Id}) - Added to group: {group} for {expireDate - DateTime.UtcNow}"); } SaveData(_playerInformationCollection); }
public void AddPermission(string permission, DateTime expireDate) { ExpiringAccessValue existingAccess = _permissions.FirstOrDefault(p => p.Value == permission); if (existingAccess != null) { Interface.CallHook("OnTimedPermissionExtended", Id, permission, existingAccess.ExpireDate - DateTime.UtcNow); existingAccess.ExpireDate += expireDate - DateTime.UtcNow; _plugin.Puts($"{Name} ({Id}) - Permission time extended: {permission} to {existingAccess.ExpireDate - DateTime.UtcNow}"); } else { Interface.CallHook("OnTimedPermissionGranted", Id, permission, expireDate - DateTime.UtcNow); _permissions.Add(new ExpiringAccessValue(permission, expireDate)); _plugin.permission.GrantUserPermission(Id, permission, null); _plugin.Puts($"{Name} ({Id}) - Permission granted: {permission} for {expireDate - DateTime.UtcNow}"); } SaveData(_playerInformationCollection); }
public void RemovePermission(string permission) { ExpiringAccessValue accessValue = _permissions.FirstOrDefault(p => p.Value == permission); if (accessValue == null) { throw new ArgumentException("Player does not have access to the given permission", nameof(permission)); } _permissions.Remove(accessValue); _plugin.permission.RevokeUserPermission(Id, accessValue.Value); _plugin.Puts($"{Name} ({Id}) - Permission removed: {accessValue.Value}"); if (_groups.Count == 0 && _permissions.Count == 0) { _playerInformationCollection.Remove(this); } SaveData(_playerInformationCollection); }