Sha256: 377fa0a2556bcfaf8485678b9865267b63b8d14834556d7221e6a00ecf5d39cd

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

module Utils
  # piggy back on cratus for ldap work
  module Cratususer
    def cratus_connect
      options = {
        host: config.host,
        port: config.port,
        user_basedn: config.user_basedn,
        group_basedn: config.group_basedn,
        basedn: config.basedn,
        username: config.username,
        password: config.password
      }
      Cratus.config.merge(options)
      Cratus::LDAP.connect
    end

    def user_query(username)
      cratus_connect
      user = begin
        Cratus::User.new(username.to_s)
      rescue
        nil
      end
      user ? user.locked? : user
    end

    def user_groups_query(username)
      cratus_connect
      begin
        user = Cratus::User.new(username.to_s)
        raise 'NoGroups' unless user
        groups = user.member_of
        groups.map(&:name).join("\n")
      rescue
        nil
      end
    end

    def group_mem_query(groupname)
      cratus_connect
      begin
        group = Cratus::Group.new(groupname.to_s)
        raise 'InvalidGroup' unless group
        members = group.members
        members.map(&:fullname).join("\n")
      rescue
        nil
      end
    end

    def unlock_user(username)
      ldap = Cratus::LDAP.connection
      ldap.replace_attribute Cratus::User.new(username.to_s).dn, :lockouttime, '0'
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lita-activedirectory-1.0.0 lib/utils/cratususer.rb