Skip to content
Snippets Groups Projects
Unverified Commit bebe607d authored by Khemissi Amir's avatar Khemissi Amir Committed by GitHub
Browse files

V3 Migrations: Optimized `Migrations::ExternalController::create_role` API. (#4720)

parent f72af5e9
No related branches found
No related tags found
No related merge requests found
...@@ -39,13 +39,16 @@ module Api ...@@ -39,13 +39,16 @@ module Api
return render_data status: :created unless role_hash[:role_permissions].any? return render_data status: :created unless role_hash[:role_permissions].any?
# Finds all the RolePermissions that need to be updated # Finds all the RolePermissions that need to be updated
role_permissions_temp = RolePermission.includes(:permission) role_permissions_joined = RolePermission.includes(:permission)
.where(role_id: role.id, 'permissions.name': role_hash[:role_permissions].keys) .where(role_id: role.id, 'permissions.name': role_hash[:role_permissions].keys)
.pluck(:id, :'permissions.name')
.to_h okay = true
# Re-structure the data so it is in the format: { <role_permission_id>: { value: <role_permission_new_value> } } role_permissions_joined.each do |role_permission|
role_permissions = role_permissions_temp.transform_values { |v| { value: role_hash[:role_permissions][v.to_sym] } } permission_name = role_permission.permission.name
RolePermission.update!(role_permissions.keys, role_permissions.values) okay = false unless role_permission.update(value: role_hash[:role_permissions][permission_name])
end
return render_error status: :bad_request, errors: 'Something went wrong when migrating the role permissions.' unless okay
render_data status: :created render_data status: :created
end end
...@@ -159,7 +162,9 @@ module Api ...@@ -159,7 +162,9 @@ module Api
private private
def role_params def role_params
decrypted_params.require(:role).permit(:name, role_permissions: {}) decrypted_params.require(:role).permit(:name,
role_permissions: %w[CreateRoom CanRecord ManageUsers ManageRoles ManageRooms ManageRecordings
ManageSiteSettings])
end end
def user_params def user_params
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment