LDAP: add delete_all_users method, use in seeds

This commit is contained in:
Râu Cao 2024-03-13 14:27:39 +01:00
parent 38b3d68fd5
commit 06521d1c34
Signed by: raucao
GPG Key ID: 37036C356E56CC51
2 changed files with 7 additions and 2 deletions

View File

@ -34,14 +34,17 @@ class LdapService < ApplicationService
client.delete dn: dn client.delete dn: dn
client.get_operation_result.code client.get_operation_result.code
end end
def delete_all_users!
delete_all_entries!(objectclass: "person")
end end
def delete_all_entries! def delete_all_entries!(objectclass: "*")
if Rails.env.production? if Rails.env.production?
raise "Mass deletion of entries not allowed in production" raise "Mass deletion of entries not allowed in production"
end 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 = client.search(base: @suffix, filter: filter, attributes: %w{dn})
entries.sort_by!{ |e| e.dn.length }.reverse! entries.sort_by!{ |e| e.dn.length }.reverse!

View File

@ -3,6 +3,8 @@ require 'sidekiq/testing'
ldap = LdapService.new ldap = LdapService.new
Sidekiq::Testing.inline! do Sidekiq::Testing.inline! do
ldap.delete_all_users!
CreateAccount.call(account: { CreateAccount.call(account: {
username: "admin", domain: "kosmos.org", email: "admin@example.com", username: "admin", domain: "kosmos.org", email: "admin@example.com",
password: "admin is admin", confirmed: true password: "admin is admin", confirmed: true