private void UpdatePermissions(User user, ServerPermissions permissions) { uint newPermissions = 0; if (user.Id == _ownerId) { newPermissions = ServerPermissions.All.RawValue; } else { foreach (var serverRole in user.Roles) { newPermissions |= serverRole.Permissions.RawValue; } } if (newPermissions.HasBit((byte)PermissionsBits.ManageRolesOrPermissions)) { newPermissions = ServerPermissions.All.RawValue; } if (newPermissions != permissions.RawValue) { permissions.SetRawValueInternal(newPermissions); foreach (var channel in _channels) { channel.Value.UpdatePermissions(user); } } }
internal void UpdateServerPermissions() { var server = Server; if (server == null) { return; } uint newPermissions = 0x0; uint oldPermissions = _serverPermissions.RawValue; if (server.Owner == this) { newPermissions = ServerPermissions.All.RawValue; } else { //var roles = Roles.OrderBy(x => x.Id); var roles = Roles; foreach (var serverRole in roles) { newPermissions |= serverRole.Permissions.RawValue; } } if (BitHelper.GetBit(newPermissions, (int)PermissionsBits.ManageRolesOrPermissions)) { newPermissions = ServerPermissions.All.RawValue; } if (newPermissions != oldPermissions) { _serverPermissions.SetRawValueInternal(newPermissions); foreach (var channel in _channels) { UpdateChannelPermissions(channel.Value); } } }
private void UpdatePermissions(User user, ServerPermissions permissions) { uint newPermissions = 0; if (user.Id == _ownerId) newPermissions = ServerPermissions.All.RawValue; else { foreach (var serverRole in user.Roles) newPermissions |= serverRole.Permissions.RawValue; } if (newPermissions.HasBit((byte)PermissionsBits.ManageRolesOrPermissions)) newPermissions = ServerPermissions.All.RawValue; if (newPermissions != permissions.RawValue) { permissions.SetRawValueInternal(newPermissions); foreach (var channel in _channels) channel.Value.UpdatePermissions(user); } }