mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Improve permission helpers
This commit is contained in:
parent
6d5b90cc23
commit
c826a37aaa
1 changed files with 30 additions and 1 deletions
|
@ -257,6 +257,7 @@ ynh_webpath_register () {
|
||||||
# re:/api/[A-Z]*$ -> domain.tld/app/api/[A-Z]*$
|
# re:/api/[A-Z]*$ -> domain.tld/app/api/[A-Z]*$
|
||||||
# re:domain.tld/app/api/[A-Z]*$ -> domain.tld/app/api/[A-Z]*$
|
# re:domain.tld/app/api/[A-Z]*$ -> domain.tld/app/api/[A-Z]*$
|
||||||
#
|
#
|
||||||
|
# Requires YunoHost version 3.7.0 or higher.
|
||||||
ynh_permission_create() {
|
ynh_permission_create() {
|
||||||
declare -Ar args_array=( [p]=permission= [u]=url= [a]=allowed= )
|
declare -Ar args_array=( [p]=permission= [u]=url= [a]=allowed= )
|
||||||
local permission
|
local permission
|
||||||
|
@ -274,7 +275,18 @@ ynh_permission_create() {
|
||||||
allowed=",allowed=['${allowed//';'/"','"}']"
|
allowed=",allowed=['${allowed//';'/"','"}']"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Check if permission already exists
|
||||||
|
if ynh_permission_exists --permission $permission; then
|
||||||
|
# If permission exits, update it
|
||||||
|
local add
|
||||||
|
if [[ -n ${add:-} ]]; then
|
||||||
|
add="--add ${allowed//';'/" "}"
|
||||||
|
fi
|
||||||
|
ynh_exec_warn_less ynh_permission_update --permission $permission ${add:-}
|
||||||
|
else
|
||||||
|
# If not, create it
|
||||||
yunohost tools shell -c "from yunohost.permission import permission_create; permission_create('$app.$permission', url=$url ${allowed:-} , sync_perm=False)"
|
yunohost tools shell -c "from yunohost.permission import permission_create; permission_create('$app.$permission', url=$url ${allowed:-} , sync_perm=False)"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Remove a permission for the app (note that when the app is removed all permission is automatically removed)
|
# Remove a permission for the app (note that when the app is removed all permission is automatically removed)
|
||||||
|
@ -284,6 +296,7 @@ ynh_permission_create() {
|
||||||
# usage: ynh_permission_delete --permission "permission"
|
# usage: ynh_permission_delete --permission "permission"
|
||||||
# | arg: permission - the name for the permission (by default a permission named "main" is removed automatically when the app is removed)
|
# | arg: permission - the name for the permission (by default a permission named "main" is removed automatically when the app is removed)
|
||||||
#
|
#
|
||||||
|
# Requires YunoHost version 3.7.0 or higher.
|
||||||
ynh_permission_delete() {
|
ynh_permission_delete() {
|
||||||
declare -Ar args_array=( [p]=permission= )
|
declare -Ar args_array=( [p]=permission= )
|
||||||
local permission
|
local permission
|
||||||
|
@ -292,12 +305,27 @@ ynh_permission_delete() {
|
||||||
yunohost tools shell -c "from yunohost.permission import permission_delete; permission_delete('$app.$permission', sync_perm=False)"
|
yunohost tools shell -c "from yunohost.permission import permission_delete; permission_delete('$app.$permission', sync_perm=False)"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Check if a permission exists
|
||||||
|
#
|
||||||
|
# usage: ynh_permission_exists --permission=permission
|
||||||
|
# | arg: -p, --permission - the permission to check
|
||||||
|
#
|
||||||
|
# Requires YunoHost version 3.7.0 or higher.
|
||||||
|
ynh_permission_exists() {
|
||||||
|
declare -Ar args_array=( [p]=permission= )
|
||||||
|
local permission
|
||||||
|
ynh_handle_getopts_args "$@"
|
||||||
|
|
||||||
|
yunohost user permission list -s | grep -w -q "$app.$permission"
|
||||||
|
}
|
||||||
|
|
||||||
# Redefine the url associated to a permission
|
# Redefine the url associated to a permission
|
||||||
#
|
#
|
||||||
# usage: ynh_permission_url --permission "permission" --url "url"
|
# usage: ynh_permission_url --permission "permission" --url "url"
|
||||||
# | arg: permission - the name for the permission (by default a permission named "main" is removed automatically when the app is removed)
|
# | arg: permission - the name for the permission (by default a permission named "main" is removed automatically when the app is removed)
|
||||||
# | arg: url - (optional) URL for which access will be allowed/forbidden
|
# | arg: url - (optional) URL for which access will be allowed/forbidden
|
||||||
#
|
#
|
||||||
|
# Requires YunoHost version 3.7.0 or higher.
|
||||||
ynh_permission_url() {
|
ynh_permission_url() {
|
||||||
declare -Ar args_array=([p]=permission= [u]=url=)
|
declare -Ar args_array=([p]=permission= [u]=url=)
|
||||||
local permission
|
local permission
|
||||||
|
@ -322,6 +350,7 @@ ynh_permission_url() {
|
||||||
# | arg: remove - the list of group or users to remove from the permission
|
# | arg: remove - the list of group or users to remove from the permission
|
||||||
#
|
#
|
||||||
# example: ynh_permission_update --permission admin --add samdoe --remove all_users
|
# example: ynh_permission_update --permission admin --add samdoe --remove all_users
|
||||||
|
# Requires YunoHost version 3.7.0 or higher.
|
||||||
ynh_permission_update() {
|
ynh_permission_update() {
|
||||||
declare -Ar args_array=( [p]=permission= [a]=add= [r]=remove= )
|
declare -Ar args_array=( [p]=permission= [a]=add= [r]=remove= )
|
||||||
local permission
|
local permission
|
||||||
|
|
Loading…
Add table
Reference in a new issue