Add tasks for modifying schema, first custom attributes
refs #172, #173
This commit is contained in:
parent
8de0a2e26e
commit
de20931d30
@ -1,6 +1,6 @@
|
|||||||
namespace :ldap do
|
namespace :ldap do
|
||||||
desc "Reset the LDAP directory and set up base entries and default org"
|
desc "Reset the LDAP directory and set up base entries and default org"
|
||||||
task setup: :environment do |t, args|
|
task setup: [:environment, :add_custom_attributes] do |t, args|
|
||||||
ldap = LdapService.new
|
ldap = LdapService.new
|
||||||
|
|
||||||
ldap.delete_entry "cn=admin_role,ou=kosmos.org,cn=users,dc=kosmos,dc=org", true
|
ldap.delete_entry "cn=admin_role,ou=kosmos.org,cn=users,dc=kosmos,dc=org", true
|
||||||
@ -19,6 +19,42 @@ namespace :ldap do
|
|||||||
}, true
|
}, true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
desc "Add custom attributes to schema"
|
||||||
|
task add_custom_attributes: :environment do |t, args|
|
||||||
|
%w[ admin service_enabled nostr_key ].each do |name|
|
||||||
|
Rake::Task["ldap:modify_ldap_schema"].invoke(name, "add")
|
||||||
|
Rake::Task['ldap:modify_ldap_schema'].reenable
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Delete custom attributes from schema"
|
||||||
|
task delete_custom_attributes: :environment do |t, args|
|
||||||
|
%w[ admin service_enabled nostr_key ].each do |name|
|
||||||
|
Rake::Task["ldap:modify_ldap_schema"].invoke(name, "delete")
|
||||||
|
Rake::Task['ldap:modify_ldap_schema'].reenable
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Modify LDAP schema"
|
||||||
|
task :modify_ldap_schema, [:name, :operation] => [:environment] do |t, args|
|
||||||
|
puts "Modify schema: #{args[:operation]} #{args[:name]}"
|
||||||
|
|
||||||
|
filename = "#{Rails.root}/schemas/ldap/#{args[:name]}.ldif"
|
||||||
|
ldif = YAML.safe_load(File.read(filename))
|
||||||
|
dn = ldif["dn"]
|
||||||
|
attribute = ldif["add"]
|
||||||
|
value = ldif[attribute]
|
||||||
|
operation = [ args[:operation].to_sym, attribute.to_sym, value ]
|
||||||
|
|
||||||
|
ldap = LdapService.new
|
||||||
|
res = ldap.modify dn, [ operation ]
|
||||||
|
|
||||||
|
if res != 0
|
||||||
|
puts "Result code: #{res}"
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
desc "List user domains/organizations"
|
desc "List user domains/organizations"
|
||||||
task list_organizations: :environment do |t, args|
|
task list_organizations: :environment do |t, args|
|
||||||
ldap = LdapService.new
|
ldap = LdapService.new
|
||||||
|
9
schemas/ldap/admin.ldif
Normal file
9
schemas/ldap/admin.ldif
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
dn: cn=schema
|
||||||
|
changetype: modify
|
||||||
|
add: attributeTypes
|
||||||
|
attributeTypes: ( 1.3.6.1.4.1.61554.1.1.2.1.1
|
||||||
|
NAME 'admin'
|
||||||
|
DESC 'Admin flag'
|
||||||
|
EQUALITY booleanMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
|
||||||
|
SINGLE-VALUE )
|
9
schemas/ldap/nostr_key.ldif
Normal file
9
schemas/ldap/nostr_key.ldif
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
dn: cn=schema
|
||||||
|
changetype: modify
|
||||||
|
add: attributeTypes
|
||||||
|
attributeTypes: ( 1.3.6.1.4.1.61554.1.1.2.1.21
|
||||||
|
NAME 'nostrKey'
|
||||||
|
DESC 'Nostr public key'
|
||||||
|
EQUALITY caseIgnoreMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||||||
|
SINGLE-VALUE )
|
8
schemas/ldap/service_enabled.ldif
Normal file
8
schemas/ldap/service_enabled.ldif
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
dn: cn=schema
|
||||||
|
changetype: modify
|
||||||
|
add: attributeTypes
|
||||||
|
attributeTypes: ( 1.3.6.1.4.1.61554.1.1.2.1.2
|
||||||
|
NAME 'serviceEnabled'
|
||||||
|
DESC 'Services enabled for account'
|
||||||
|
EQUALITY caseExactMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
|
Loading…
x
Reference in New Issue
Block a user