Merge pull request #763 from YunoHost/fix_group_permissions

Fix variable definition for permission in backup
This commit is contained in:
Alexandre Aubin 2019-08-03 20:46:42 +02:00 committed by GitHub
commit f07be378e9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1250,7 +1250,9 @@ class RestoreManager():
'(&(objectClass=permissionYnh)(!(cn=main.mail))(!(cn=main.metronome))(!(cn=main.sftp)))', '(&(objectClass=permissionYnh)(!(cn=main.mail))(!(cn=main.metronome))(!(cn=main.sftp)))',
['cn']): ['cn']):
if not ldap.remove('cn=%s,ou=permission' % per['cn'][0]): if not ldap.remove('cn=%s,ou=permission' % per['cn'][0]):
raise YunohostError('permission_deletion_failed', permission=permission, app=app) raise YunohostError('permission_deletion_failed',
permission=per['cn'][0].split('.')[0],
app=per['cn'][0].split('.')[1])
# Restore permission for the app which is installed # Restore permission for the app which is installed
for per in old_apps_permission: for per in old_apps_permission:
@ -1370,7 +1372,7 @@ class RestoreManager():
# Restore permissions # Restore permissions
if os.path.isfile(app_settings_in_archive + '/permission.ldif'): if os.path.isfile(app_settings_in_archive + '/permission.ldif'):
filtred_entries = ['entryUUID', 'creatorsName', 'createTimestamp', 'entryCSN', 'structuralObjectClass', filtred_entries = ['entryUUID', 'creatorsName', 'createTimestamp', 'entryCSN', 'structuralObjectClass',
'modifiersName', 'modifyTimestamp', 'inheritPermission', 'memberUid'] 'modifiersName', 'modifyTimestamp', 'inheritPermission', 'memberUid']
entries = read_ldif('%s/permission.ldif' % app_settings_in_archive, filtred_entries) entries = read_ldif('%s/permission.ldif' % app_settings_in_archive, filtred_entries)
group_list = user_group_list(['cn'])['groups'] group_list = user_group_list(['cn'])['groups']
for dn, entry in entries: for dn, entry in entries:
@ -1379,9 +1381,10 @@ class RestoreManager():
group_name = group.split(',')[0].split('=')[1] group_name = group.split(',')[0].split('=')[1]
if group_name not in group_list: if group_name not in group_list:
entry['groupPermission'].remove(group) entry['groupPermission'].remove(group)
print(entry)
if not ldap.add('cn=%s,ou=permission' % entry['cn'][0], entry): if not ldap.add('cn=%s,ou=permission' % entry['cn'][0], entry):
raise YunohostError('apps_permission_restoration_failed', permission=permission_name, app=app_name) raise YunohostError('apps_permission_restoration_failed',
permission=entry['cn'][0].split('.')[0],
app=entry['cn'][0].split('.')[1])
else: else:
from yunohost.tools import _get_migration_by_name from yunohost.tools import _get_migration_by_name
setup_group_permission = _get_migration_by_name("setup_group_permission") setup_group_permission = _get_migration_by_name("setup_group_permission")
@ -1435,7 +1438,7 @@ class RestoreManager():
# Remove all permission in LDAP # Remove all permission in LDAP
result = ldap.search(base='ou=permission,dc=yunohost,dc=org', result = ldap.search(base='ou=permission,dc=yunohost,dc=org',
filter='(&(objectclass=permissionYnh)(cn=*.%s))' % app_instance_name, attrs=['cn']) filter='(&(objectclass=permissionYnh)(cn=*.%s))' % app_instance_name, attrs=['cn'])
permission_list = [p['cn'][0] for p in result] permission_list = [p['cn'][0] for p in result]
for l in permission_list: for l in permission_list:
permission_remove(app_instance_name, l.split('.')[0], force=True) permission_remove(app_instance_name, l.split('.')[0], force=True)