Туториал по настройке permissionsex (pex)

Как настраивать и редактировать permissions в Minecraft 1.2.5

Все плагины в Minecraft любой версии имеют свои установки прав или разрешений на определённые команды плагина и действия. Эти разрешения необходимо прописывать в файле permissions.yml, который находится в папке от плагина прав (например: PermissionsEx).

Все права на плагины находятся в файле permissions.yml.

В этом файле должно всё записываться так:

groups: default: default: true permissions: — lwc.protect — commandbook.kit — commandbook.kit.list — commandbook.spawn Moder: inheritance: — default default: false permissions: — iConomy.holdings.others — permission: iConomy.accounts.take — iConomyChestShop.shop.create — ChestShop.shop.create Admin: inheritance: — Moder default: false permissions: — authme.admin.changepassword — authme.admin.reload — authme.admin.unregister — authme.admin.register Helper: inheritance: — default default: false permissions: — commandbook.mute — commandbook.unmute — commandbook.msg — commandbook.broadcast — commandbook.return — commandbook.teleport — commandbook.teleport.otherusers: Kratos: group: — Admin Nexus: group: — Helper Bezumets: group: — Moder

Самое важное в permissions.yml это сохранение табуляции в данных. Если её нарушить то ничего работать не будет

Как выглядит и что обозначает слово «табуляция» в файле permissions.yml

Если обьяснять совсем уж простым языком, это сохранение определённого числа пробелов от левого края отдельных разделов и параметров файла. Тоесть должно быть:

(Для простоты понимания перечислю всё в следующем виде)

groups, users: 0 пробелов.

Названия групп в groups, Ники игроков в users: 2 пробела.

Параметры, permissions и прочее: 4 пробела.

Разделы groups и users не могут повторяться и сществуют в 1 экхемпляре. В описываються права группам игроков (Администраторам, Модераторам, Хелперам, VIP), здесь никаких ников игроков быть не может, только сами права permissions плагинов, записанные как:

default: true — означает что это право быдет выдано по умолчанию всем игрокам зашедшим на сервер, оно должно существовать в 1 экземпляре, в остальных группах прав должно быть default: false

inheritance: указывает группу выступающей родительской, как напримере выше, группа Moder берёт права у группы default и дополняет их своими, а Admin берёт за основу своих прав права группы Moder в которую включены права default.

Раздел users содержит в себе ники пользователей и непосредственно группу в которой они состоят. Вместо группы может быть permissions если необходимо указать определённые права какому то пользователю, а не группе. Тут как и в разделе groups необходимо сохранять туже табуляцию.

Все вопросы в комментарии.

Источник

Объяснение для пользователя

Когда вы запрашиваете разрешение, пользователю должно быть очевидно, зачем приложению понадобилось это разрешение, и у него не должно возникать вопросов. Но случаи бывают разные, и вы можете решить, что вам надо явно объяснить пользователю, почему приложению понадобилось это разрешение.

Диалог, который показывается при запросе разрешения, — системный, вы не можете менять его содержимое и добавлять туда свой текст. Но вы можете сделать свой диалог или что-то подобное и показать его перед тем, как будете делать запрос разрешения.

Есть метод , который может быть полезен в данной ситуации. Передаете ему название разрешения, а он вам в виде boolean ответит, надо ли показывать объяснение для пользователя.

Т.е. вы сначала проверяете наличие разрешения. Если его нет, то вызываете shouldShowRequestPermissionRationale, чтобы решить, надо ли показывать объяснение пользователю. Если не надо, то делаете запрос разрешения. А если надо, то показываете ваш диалог с объяснением, а после этого диалога делаете запрос разрешения.

Алгоритм работы метода shouldShowRequestPermissionRationale прост.

Если вы еще ни разу не запрашивали это разрешение, то он вернет false. Т.е. перед первым запросом разрешения ничего объяснять не надо.

Если вы ранее уже запрашивали это разрешение и пользователь отказал, то метод вернет true. Т.е. пользователь не понимает, почему он должен давать это разрешение, и надо ему это объяснить.

Если пользователь ставил галку Don’t ask again, то метод вернет false. Запрос полномочий все равно не будет выполнен. Объяснять что-то не имеет смысла.

Разумеется, вы можете показывать дополнительную информацию согласно вашим правилам и не использовать метод shouldShowRequestPermissionRationale.

Soft security — There are no permissions

Wikis are typically set up to be freely and openly edited. This means anyone can edit pages often without even having an account. This is only possible because wikis offer a kind of «soft security». By making it very simple to monitor edits or changes and revert (or undo) them to retrieve an older version of a page, a wiki doesn’t need to be very restrictive at all.

There are no permissions. Everyone is an administrator. You don’t need permission to edit, and you are encouraged to «be bold», go forth and edit!

…at least that is the theory. In practice, there are malicious editors, and so MediaWiki software does offer many options related to permissions.

Methods

contains

Checks if the extension has the specified permissions.

getAll

Gets the extension’s current set of permissions.

  • callback
    function

    The callback parameter should be a function that looks like this:

remove

Removes access to the specified permissions. If there are any problems removing the permissions, will be set.

request

Requests access to the specified permissions, displaying a prompt to the user if necessary. These permissions must either be defined in the field of the manifest or be required permissions that were withheld by the user. Paths on origin patterns will be ignored. You can request subsets of optional origin permissions; for example, if you specify in the section of the manifest, you can request . If there are any problems requesting the permissions, will be set.

User rights

  • Add and remove arbitrary tags on individual revisions and log entries
  • Apply tags along with one’s changes
  • Bypass automatic blocks of Tor exit nodes
  • Create discussion pages
  • Create new semantic classes
  • Create pages (which are not discussion pages)
  • Edit multiple pages using a spreadsheet
  • Edit pages
  • Edit the content model of a page
  • Edit your own user CSS files
  • Edit your own user JSON files
  • Edit your own user JavaScript files
  • Mark edits as minor
  • May claim the wiki to become a wiki guardian
  • Move category pages
  • Move files
  • Move pages
  • Move pages with their subpages
  • Move root user pages
  • Override files on the shared media repository locally
  • Overwrite existing files
  • Purge the site cache for a page
  • Read pages
  • Send email to other users
  • Upload files
  • Use of the write API
  • View the spam blacklist log

WebChat

⧼right-webchat⧽ (webchat)

Upon registering, users will also be added to the implicit autoconfirmed user group. Members of this user group can edit semi-protected pages, edit sprites, skip CAPTCHA when adding external links to pages, move pages without leaving a redirection, and aren’t affected by IP-based rate limits.

Examples

The following is an example of a permission class that checks the incoming request’s IP address against a blocklist, and denies the request if the IP has been blocked.

As well as global permissions, that are run against all incoming requests, you can also create object-level permissions, that are only run against operations that affect a particular object instance. For example:

Note that the generic views will check the appropriate object level permissions, but if you’re writing your own custom views, you’ll need to make sure you check the object level permission checks yourself. You can do so by calling from the view once you have the object instance. This call will raise an appropriate if any object-level permission checks fail, and will otherwise simply return.

Also note that the generic views will only check the object-level permissions for views that retrieve a single model instance. If you require object-level filtering of list views, you’ll need to filter the queryset separately. See the filtering documentation for more details.

The following third party packages are also available.

Запрос на activeTab полномочия

Этот вид запроса объявляется через ключевое слово . полномочия предоставляются расширению на активной в данный момент вкладке, и вступают в эффект только в момент, когда пользователь взаимодействует с расширением.

«Взаимодействие пользователя» включает:

  • Пользователь нажимает на кнопку расширения на панели инструментов или адресной строке
  • Пользователь взаимодействует с контекстным меню расширения
  • Пользователь нажимает комбинацию клавиш, ассоциированную с расширением

activeTab полномочия включают:

  • Возможность программно встраивать JavaScript или CSS на страницу, используя и
  • Получение доступа к привилегированным частям tabs API для активной вкладки: , и .

Цель этих полномочий – позволить расширению выполнять наиболее распространенные сценарии работы, без необходимости выдавать ему более серьёзные привилегии, так как большинство расширений задумано для выполнения какой-либо работы на активной вкладке после взаимодействия с пользователем. Например, представьте расширение, которое встраивает скрипт на текущую страницу, после того как пользователь нажимает на кнопку расширения на панели инструментов. Если бы полномочий не существовало, расширению бы пришлось запрашивать . Но они бы давали расширению намного больше привилегий, чем ему было бы необходимо: расширение могло бы встраивать скрипты на любую вкладку и в любой момент, когда пожелает.

Заметьте, что вы сможете иметь доступ к привилегированному tab API, только на момент взаимодействия расширения с пользователем, и пока вкладка не изменила своё состояние. То есть расширение перестанет иметь данные привилегии при изменении адреса страницы или каком-либо другом событии с вкладкой.

Обычно вкладкой, получающей полномочия, является активная в данный момент вкладка, за исключением одного случая. API позволяет расширению создавать элементы контекстного меню, которые будут появляться непосредственно при нажатии на вкладку (элемент на панели вкладок, при нажатии на который изменяется активная вкладка). Если пользователь вызывает контекстное меню на этом элементе, тогда полномочия выдадутся для вкладки, по которой было произведено нажатие, несмотря на то, что она могла бы не является активной (баг 1446956 начиная с Firefox версии 63).

Item Permissions

Item permissions cannot be managed remotely and must be done at the item you wish to manage.

Containers


Container permissions

Containers require a small padlock or a large padlock to be attached in order to activate permissions. The owner of the container is the person who dropped it, planted it, or unloaded it, and only the owner may attach or replace a lock on a container. To manage a container, right-click on the container and click Permissions > Manage Item, where Item will be the type of container you are managing. You must be the owner or have been given the Manage Item permission in order to manage that container.

Container Notes

  • Only the owner may rename a container.
  • Keys may still be used to access containers without the need to set up permissions.
  • Keys are not required to modify a container’s lock.

Container Permissions

Manage Item
Allows managing of these permissions.
May Open
Allows access to this container.
Deny All
Denies all access.

Beds


Bed permissions

You can manage a bed by right-clicking on the bed and clicking Permissions > Manage Bed. You must either be the owner of the building the bed is in, be able to manage the building, or have the Manage Item permission for that bed in order to manage it. Since allows for management of the building, it also allows for management of the beds inside settlement-managed buildings.

Bed Notes

  • Beds with no permissions default to allowing anyone with to sleep for free.
  • Only the owner of the building, or the mayor of a settlement-managed building, may rename a bed or set rent on a bed.
  • Free Sleep overrides any rent set on that bed.

Bed Permissions

Manage Item
Allows managing of these permissions.
May Use Bed
Allows access to this bed.
Free Sleep
Allows this bed to be used for free. (Requires May Use Bed)
Deny All
Denies all access.

Usage

  • Kotlin: You can pick either of ktx or .
  • Java: apt

Here’s a minimum example, in which you register a which requires .

1. Attach annotations

PermissionsDispatcher introduces only a few annotations, keeping its general API concise:

Annotation Required Description
Register an or to handle permissions
Annotate a method which performs the action that requires one or more permissions
Annotate a method which explains why the permissions are needed. It passes in a object which can be used to continue or abort the current permission request upon user input. If you don’t specify any argument for the method compiler will generate and . You can use those methods in place of (ex: with )
Annotate a method which is invoked if the user doesn’t grant the permissions
Annotate a method which is invoked if the user chose to have the device «never ask again» about a permission
@RuntimePermissions
class MainActivity : AppCompatActivity(), View.OnClickListener {

    @NeedsPermission(Manifest.permission.CAMERA)
    fun showCamera() {
        supportFragmentManager.beginTransaction()
                .replace(R.id.sample_content_fragment, CameraPreviewFragment.newInstance())
                .addToBackStack("camera")
                .commitAllowingStateLoss()
    }

    @OnShowRationale(Manifest.permission.CAMERA)
    fun showRationaleForCamera(request PermissionRequest) {
        showRationaleDialog(R.string.permission_camera_rationale, request)
    }

    @OnPermissionDenied(Manifest.permission.CAMERA)
    fun onCameraDenied() {
        Toast.makeText(this, R.string.permission_camera_denied, Toast.LENGTH_SHORT).show()
    }

    @OnNeverAskAgain(Manifest.permission.CAMERA)
    fun onCameraNeverAskAgain() {
        Toast.makeText(this, R.string.permission_camera_never_askagain, Toast.LENGTH_SHORT).show()
    }
}

2. Delegate to generated functions

Now generated functions become much more concise and intuitive than Java version!

    override fun onCreate(savedInstanceState Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        findViewById(R.id.button_camera).setOnClickListener {
            // NOTE: delegate the permission handling to generated function
            showCameraWithPermissionCheck()
        }
    }

    override fun onRequestPermissionsResult(requestCode Int, permissions Array<String>, grantResults IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        // NOTE: delegate the permission handling to generated function
        onRequestPermissionsResult(requestCode, grantResults)
    }

Check out the sample for more details.

Критика[править | править код]

API полномочий Bukkit’а (также называющееся “superperms”) был разработан с целью централизации конфигурации прав пользователей, отсутствия необходимости поиска плагинов, которые были бы совместимы с какой-то определенной системой прав. Все текущие плагины полностью поддерживают ‘superperms’, кроме PermissionsEx.
PEX же работает против этой системы путем встраивания собственного кода. Это вызывало проблемы как у PEX, так и в самом Bukkit’е. Реализация «superperms» очень слабая, в некоторых случаях приводящая к серьезным сбоям. PEX пытается перенаправить все проверки привилегий через свою собственную систему, вместо работы с «superperms» Bukkit’а.

С версии 1.13 PEX поддерживает superperms

Что не так?править | править код

  • Неверная реализация дочерних привилегий. Может привести к тому, что у пользователей есть привилегии, которых им не давали напрямую.
  • PEX приводит к проблемам в других плагинах.
  • Дэдлоки. Фриз сервера с комментарием ‘Read timed out’.
  • Когда PEX вылетает, вместе с ним в небытие уходит множество других плагинов (в силу жесткого встраивания кода в Bukkit).
  • Использование SQL приводит к падению производительности сервера. При удалении/добавлении привилегии происходит полная перезапись всех привилегий пользователя на сервере.

Полная настройка плагина permissions ex

Позволяет легко разграничивать полномочия игроков на сервере. Имеет встроенные дополнения Modifyworld, которое дает возможность определять что игроки могут или не могут изменять в игровом мире, а также ChatManager с помощью которого можно разделить чат на локальный и глобальный, раскрасить ники игроков и добавить к ним префиксы и суффиксы.

Для распределения прав игрокам нужно отредактировать файл permissions.yml по адресу plugins/PermissionsEx. Это можно сделать с помощью любого текстового редактораОткрыв его мы увидим:

Значение этих строк следующее:groups: — указывает, что ниже будут идти группы и их права.default: — название группы, куда попадают все только что зашедшие на сервер игроки, если они не прописаны в других группах. Вы можете менять это название на какое захотите.default: true — параметр, который задаёт группу, как группу по-умолчанию. То есть, все права этой группы будет иметь любой игрок, для которого не определены другие группы и/или исключения.permissions: — все, что идёт ниже, это и есть сами «права» для группы, сюда нужно прописывать permissions от различных плагинов установленных на вашем сервере. Значение null означает, что у группы/игрока нет никаких прав.— modifyworld.* — возможность «модифицировать» мир. Если Вы не намерены конкретно определять, что игроки могут или не могут изменять в игровом мире, то это право лучше оставить как есть, а если намеренны, то смотрите в Modifyworld.

Рассмотрим как мы можем отредактировать данный файл:

Здесь мы добавили новую группу Admins, а также права для отдельного игрока BigBoss:.default: false — означает, что данная группа не является группой по-умолчанию.inheritance: — параметр, с помощью которого можно установить наследственность прав определённой группы, в данном случае — это группа default. Это значит, что Вам не придётся еще раз прописывать права группы default для группы Admins.Звездочка (‘*’) означает, что у группы/игрока есть абсолютно все права на все плагины, установленные на сервере.users: — означает, что ниже идут права отдельных игроков.BigBoss: — имя игрока для которого настраиваются отдельные права.group: Admins — указывает на то, что игрок входит в группу Adminsrank: — ранг игрока.

Если Вы хотите раскрасить ники игроков и добавить к ним префиксы и суффиксы то нужно включить и настроить в permissions.yml Chat Manager.

Важно! В YAML нужно чётко соблюдать последовательность, один лишний пробел — и параметр работать не будет. Поэтому для проверки permissions.yml рекомендуется использовать этот сайт

Там в левое окошко нужно вставить ваш код из permissions.yml, и если в правом окне не выдаст ошибок, то код написан правильно и он будет работать, если будут ошибки, то оно выдаст номер забракованной строки.

Object level permissions

REST framework permissions also support object-level permissioning. Object level permissions are used to determine if a user should be allowed to act on a particular object, which will typically be a model instance.

Object level permissions are run by REST framework’s generic views when is called.
As with view level permissions, an exception will be raised if the user is not allowed to act on the given object.

If you’re writing your own views and want to enforce object level permissions,
or if you override the method on a generic view, then you’ll need to explicitly call the method on the view at the point at which you’ve retrieved the object.

This will either raise a or exception, or simply return if the view has the appropriate permissions.

For example:

Note: With the exception of , the provided
permission classes in do not implement the
methods necessary to check object permissions.

If you wish to use the provided permission classes in order to check object
permissions, you must subclass them and implement the
method described in the section (below).

For performance reasons the generic views will not automatically apply object level permissions to each instance in a queryset when returning a list of objects.

Often when you’re using object level permissions you’ll also want to filter the queryset appropriately, to ensure that users only have visibility onto instances that they are permitted to view.

пятница, 16 марта 2012 г.

Моя настройка permissions.yml для PermissionsEX

Здесь буду тестить конфиг на ошибки.

Используемые Plugins:

  • AuthMe
  • ChatManager
  • PermissionsEX
  • WorldBorder
  • WorldEdit
  • WorldGuard
  • LWC
  • MobHealth

* permissions.manage.membership мы установим ВРЕМЕННО в группу default, это разрешение будет действовать на ВСЕ группы, т.к. идет унаследование по цепочке. Это нужно для того, чтобы себя перемещать по разным группам и тестировать их, на то или иное разрешение.

/pex user group set — Установить группу для игрока (удалит его из остальных групп)

Все что в скобках — это описание, из рабочего конфига нужно удалить.

Далее файл Permissions.yml groups: default: default: true permissions: — permissions.manage.membership.* — authme.register (регистрация) — authme.unregister (удаление пароля) — authme.changepassword (смена пароля) — authme.login (вход) — authme.logout (выход) — lwc.protect (разрешает большинство команд LWC) — modifyworld.* (ломать, строить) — MobHealth.show — worldedit.selection.pos (назначать позиции коммандой) — worldedit.selection.hpos (назначать позиции коммандой) — worldedit.selection.expand (расширяет регион в заданную сторону) — worldedit.selection.contract (уменьшает выделение региона в заданную сторону)

Цвета для префиксов: &0 — Black, &1 — Dark Blue, &2 — Dark Green, &3 — Dark Teal, &4 — Dark Red, &5 — Purple, &6 — Gold, &7 — Gray, &8 — Dark Gray, &9 — Blue, &a — Bright Green, &b — Teal, &c — Red, &d — Pink, &e — Yellow, &f — White.

Источник

Bureaucrats

Main article: Gamepedia Help Wiki:Bureaucrats

Another level of permissions within a default MediaWiki set-up is the «bureaucrat» group. Historically, the founder of any given wiki generally was accorded Bureaucrat rights, but here at Gamepedia, we have assumed this custodial role for the most part. Bureaucrat positions may be granted to admins by Wiki Managers on a case-by-case basis, with prerequisites for consideration being demonstrated admin reliability and consensus from fellow admins.

The main thing a bureaucrat can do, which Administrators and Wiki Guardians cannot, is to promote users to be Administrators and demote them to normal users. They can also promote users to be (and demote from) bureaucrats, autopatrol, bots, or other rights (see next section). In addition to modifying user rights, bureaucrats also can hide revisions from the public (see RevisionDelete).

Installation

To add PermissionsDispatcher to your project, include the following in your app module file:

dependencies {
  implementation "org.permissionsdispatcher:permissionsdispatcher:${latest.version}"
  annotationProcessor "org.permissionsdispatcher:permissionsdispatcher-processor:${latest.version}"
}

With Kotlin:

apply plugin: 'kotlin-kapt'

dependencies {
  implementation "org.permissionsdispatcher:permissionsdispatcher:${latest.version}"
  kapt "org.permissionsdispatcher:permissionsdispatcher-processor:${latest.version}"
}
repositories {
  jcenter()
  maven { url 'http://oss.jfrog.org/artifactory/oss-snapshot-local/' }
}

Gates


Gate management

A gate must be locked with a gate lock for permissions to become active on it, though the mayor may rename the gate if it is managed by a settlement without a lock. You can manage gates by right-clicking on your body and clicking on Manage > Gates. You may also right-click on a gate directly and select Manage gate. This will be under the Permissions menu if there are multiple permission options on that gate. You may only manage a gate if you have been given the Manage Item permission on that gate, have the settlement permission if the gate is managed by the settlement, or if you are the owner of the gate. Owners of settlement-managed gates without Manage Allowed Objects or Manage Item can only change the gate’s ownership.

Gate Notes

  • A gate created off-deed must have a lock attached in order to rename it or manage it in any way.
  • The owner of a gate is whomever attached the lock.
  • Anyone can attach a lock to an off-deed gate, but only citizens with can attach or replace locks on-deed.
  • Settlement May Manage allows the mayor and any citizen with the permission to manage this item.
  • Only the current owner may tick Settlement May Manage for off-deed gates, and only the mayor may remove the tick.
  • A gate created on-deed defaults to Settlement May Manage. A lock is required to manage permissions, but the mayor can rename an gate without a lock.
  • You cannot remove Settlement May Manage for on-deed gates.
  • Locked off-deed gates without Settlement May Manage may be renamed by their current owner.
  • Locked on-deed gates and off-deed gates with Settlement May Manage may only be renamed by the mayor of that settlement.
  • Settlement-managed gates with no permissions ticked can be controlled by the settlement role permission .
  • Off-deed gates, even with Settlement May Manage, must be managed to allow citizens to pass.
  • Anyone with a key to the current lock on the gate may unlock and pass through the gate.
It is important to replace locks on gates that you extend your deed over, or when you are unsure as to who may have keys to it.

Gate Permissions


Gate permissions

Manage Item
Allows managing of these permissions.
Pass Gate
Allows entry through this gate even when its locked.
(Un)Lock Gate
Allows locking (and unlocking) of this gate.
Deny All
Deny all access.
Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий