ActiveLdap - 将用户从一个容器移动到另一个容器

时间:2013-09-04 03:05:52

标签: ruby-on-rails ruby ldap

我有一位拥有以下内容的用户:

'cn=example_user, ou=Person, dc=example, dc=com'

使用ActiveLdap,我想将容器更改为:

'cn=example_user, ou=Inactive, dc=example, dc=com'

我错过了一些东西......我已经搜索并查看了源代码,可能性似乎存在,但我没看到它是如何完成的。谢谢!

2 个答案:

答案 0 :(得分:1)

为此目的使用MODIFY DN操作。另见:

答案 1 :(得分:0)

终于弄明白了。这是我做的:

  1. 运行setup_connection

    ActiveLdap::Base.setup_connection(host: host, port: port, etc.) 
    
  2. modify_rdn

    上调用connection方法
    ActiveLdap::Base.connection.modify_rdn(dn, new_rdn, remove_old_rdn, new_superior, options={})
    
  3. 我使用change_ou(new_ou)在模型上创建了ldap_mapping实例方法,所以我通过了:

      {li> dn dn {li> "cn=#{cn}" new_rdn {li> true remove_old_rdn {li> "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