我有一个用户:
'cn=example_user, ou=Person, dc=example, dc=com'
使用 ActiveLdap,我想将容器更改为:
'cn=example_user, ou=Inactive, dc=example, dc=com'
我遗漏了一些东西......我已经搜索并查看了源代码,并且这种可能性似乎存在,但我没有看到它是如何完成的。谢谢!
我有一个用户:
'cn=example_user, ou=Person, dc=example, dc=com'
使用 ActiveLdap,我想将容器更改为:
'cn=example_user, ou=Inactive, dc=example, dc=com'
我遗漏了一些东西......我已经搜索并查看了源代码,并且这种可能性似乎存在,但我没有看到它是如何完成的。谢谢!
为此,请使用 MODIFY DN 操作。也可以看看:
终于想通了。这是我所做的:
运行后setup_connection
ActiveLdap::Base.setup_connection(host: host, port: port, etc.)
调用modify_rdn
方法connection
ActiveLdap::Base.connection.modify_rdn(dn, new_rdn, remove_old_rdn, new_superior, options={})
我在change_ou(new_ou)
模型上创建了一个实例方法ldap_mapping
,所以我通过了:
dn
为了dn
"cn=#{cn}"
为了new_rdn
true
为了remove_old_rdn
"ou=#{new_ou},dc=example,dc=com"
为了new_superior
该变量new_ou
当然是新容器的名称(在我上面的示例中为“非活动”)。我没有为选项传递任何东西,因为它默认为任何空哈希。
下面是该modify_rdn
方法源代码的链接。我很难弄清楚它需要从以下位置调用ActiveLdap::Base.connection
:
https://github.com/activeldap/activeldap/blob/master/lib/active_ldap/adapter/base.rb#L236