diff --git a/app/services/ldap_service.rb b/app/services/ldap_service.rb index a286314..91b6dd9 100644 --- a/app/services/ldap_service.rb +++ b/app/services/ldap_service.rb @@ -34,14 +34,17 @@ class LdapService < ApplicationService client.delete dn: dn client.get_operation_result.code end + + def delete_all_users! + delete_all_entries!(objectclass: "person") end - def delete_all_entries! + def delete_all_entries!(objectclass: "*") if Rails.env.production? raise "Mass deletion of entries not allowed in production" end - filter = Net::LDAP::Filter.eq("objectClass", "*") + filter = Net::LDAP::Filter.eq("objectClass", objectclass) entries = client.search(base: @suffix, filter: filter, attributes: %w{dn}) entries.sort_by!{ |e| e.dn.length }.reverse! diff --git a/db/seeds.rb b/db/seeds.rb index fa957a6..4c27d94 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -3,6 +3,8 @@ require 'sidekiq/testing' ldap = LdapService.new Sidekiq::Testing.inline! do + ldap.delete_all_users! + CreateAccount.call(account: { username: "admin", domain: "kosmos.org", email: "admin@example.com", password: "admin is admin", confirmed: true