add ynh_permission_has_user

This commit is contained in:
Kay0u 2020-03-30 19:36:41 +02:00
parent 13b510b624
commit 51a0502e91
No known key found for this signature in database
GPG key ID: AE1DCADB6415A156
4 changed files with 56 additions and 0 deletions

View file

@ -296,6 +296,15 @@ user:
help: Display all info known about each permission, including the full user list of each group it is granted to.
action: store_true
### user_permission_info()
info:
action_help: Get information about a specific permission
api: GET /users/permissions/<permission>
arguments:
permission:
help: Name of the permission to fetch info about
extra:
pattern: *pattern_username
### user_permission_update()
update:

View file

@ -367,3 +367,22 @@ ynh_permission_update() {
yunohost user permission update "$app.$permission" ${add:-} ${remove:-}
}
# Check if a permission exists
#
# usage: ynh_permission_has_user --permission=permission --user=user
# | arg: -p, --permission - the permission to check
# | arg: -u, --user - the user seek in the permission
#
# Requires YunoHost version 3.7.1 or higher.
ynh_permission_has_user() {
declare -Ar args_array=( [p]=permission= [u]=user)
local permission
ynh_handle_getopts_args "$@"
if ! ynh_permission_exists --permission $permission
return 1
fi
yunohost user permission info $permission | grep -w -q "$user"
}

View file

@ -196,6 +196,28 @@ def user_permission_reset(operation_logger, permission, sync_perm=True):
return new_permission
def user_permission_info(permission, sync_perm=True):
"""
Return informations about a specific permission
Keyword argument:
permission -- Name of the permission (e.g. mail or nextcloud or wordpress.editors)
"""
# By default, manipulate main permission
if "." not in permission:
permission = permission + ".main"
# Fetch existing permission
existing_permission = user_permission_list(full=True)["permissions"].get(permission, None)
if existing_permission is None:
raise YunohostError('permission_not_found', permission=permission)
return existing_permission
#
#
# The followings methods are *not* directly exposed.

View file

@ -780,6 +780,12 @@ def user_permission_reset(permission, sync_perm=True):
sync_perm=sync_perm)
def user_permission_info(permission, sync_perm=True):
import yunohost.permission
return yunohost.permission.user_permission_info(permission,
sync_perm=sync_perm)
#
# SSH subcategory
#