module CmpaAuth module Authentication CLASS_NAMES = %w( Pessoa Estagiario Funcionario GrupoAcesso LotacaoTemporaria Setor Sistema ) # Realiza a autenticação via LDAP. Se a autenticação for bem sucedida é realizada uma # consulta pelo +username+ na tabela +pessoas+ e uma instância de +Pessoa+ é retornada. # Caso contrário, retorna +nil+. def self.authenticate(username, password) ldap_options = { :host => '200.169.19.93', :port => 389, :base => 'DC=cmpa,DC=local', :auth => { :method => :simple, :username => "#{username}@cmpa.local", :password => password } } Net::LDAP.open ldap_options do |ldap| Pessoa.first(:conditions => { :username => username }) if ldap.bind end end # # Retorna uma lista de sistemas disponíveis para a lotação temporária em questão. # def self.allowed_systems(lotacao_temporaria_id) lotacao_temporaria = ::LotacaoTemporaria.find(lotacao_temporaria_id) lotacao_temporaria.grupos_acesso.inject([]) do |sistemas, grupo| sistemas += grupo.sistemas.select { |s| !sistemas.include?(s) && s.status == 'ativo' } sistemas end end end end