cmpa_auth 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,7 @@
1
+ == 1.0.6 released 2010-09-03
2
+
3
+ * Autentica��o via LDAP.
4
+
1
5
  == 1.0.5 released 2010-04-03
2
6
 
3
7
  * Atualiza��o de layout. Agora as telas de autentica��o, sele��o de lota��es tempor�rias e de sistemas s�o independentes do projeto em uso.
data/lib/cmpa_auth.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'digest/sha2'
2
+ require 'net/ldap'
2
3
 
3
4
  require 'cmpa_auth/models/estagiario'
4
5
  require 'cmpa_auth/models/funcionario'
@@ -3,13 +3,23 @@ module CmpaAuth
3
3
 
4
4
  CLASS_NAMES = %w( Pessoa Estagiario Funcionario GrupoAcesso LotacaoTemporaria Setor Sistema )
5
5
 
6
- #
7
- # Realiza a autenticação e retorna uma pessoa (usuário) caso o login e senha
8
- # estejam corretos.
9
- #
10
- def self.authenticate(login, password)
11
- user = ::Pessoa.first(:conditions => { :usuario => login })
12
- user if user && login.present? && password.present? && Digest::SHA256.hexdigest(password + user.senha_salt) == user.senha_hash
6
+ # Realiza a autenticação via LDAP. Se a autenticação for bem sucedida é realizada uma
7
+ # consulta pelo +username+ na tabela +pessoas+ e uma instância de +Pessoa+ é retornada.
8
+ # Caso contrário, retorna +nil+.
9
+ def self.authenticate(username, password)
10
+ ldap_options = {
11
+ :host => '200.169.19.93',
12
+ :port => 389,
13
+ :base => 'DC=cmpa,DC=local',
14
+ :auth => {
15
+ :method => :simple,
16
+ :username => "#{username}@cmpa.local",
17
+ :password => password
18
+ }
19
+ }
20
+ Net::LDAP.open ldap_options do |ldap|
21
+ Pessoa.first(:conditions => { :username => username }) if ldap.bind
22
+ end
13
23
  end
14
24
 
15
25
  #
@@ -3,12 +3,9 @@ module CmpaAuth
3
3
  module GrupoAcesso
4
4
  def self.included(receiver) #:nodoc:
5
5
  receiver.class_eval do
6
-
7
- include CmpaAuth::PortalConnection
8
-
6
+ include CmpaAuth::PortalConnection
9
7
  has_and_belongs_to_many :lotacoes_temporarias, :join_table => :grupoacessos_lotacoestemporarias, :foreign_key => :grupoacesso_id, :association_foreign_key => :lotacoestemporaria_id, :class_name => '::LotacaoTemporaria'
10
8
  has_and_belongs_to_many :sistemas, :join_table => :grupoacessos_sistemas, :foreign_key => :grupoacesso_id, :class_name => '::Sistema'
11
-
12
9
  set_table_name :grupoacessos
13
10
  end
14
11
  end
@@ -3,14 +3,10 @@ module CmpaAuth
3
3
  module LotacaoTemporaria
4
4
  def self.included(receiver) #:nodoc:
5
5
  receiver.class_eval do
6
-
7
- include CmpaAuth::PortalConnection
8
-
6
+ include CmpaAuth::PortalConnection
9
7
  belongs_to :setor, :class_name => '::Setor'
10
8
  belongs_to :pessoa, :class_name => '::Pessoa'
11
-
12
9
  has_and_belongs_to_many :grupos_acesso, :join_table => :grupoacessos_lotacoestemporarias, :foreign_key => :lotacoestemporaria_id, :association_foreign_key => :grupoacesso_id, :class_name => '::GrupoAcesso'
13
-
14
10
  set_table_name :lotacoestemporarias
15
11
 
16
12
  #
@@ -3,24 +3,14 @@ module CmpaAuth
3
3
  module Pessoa
4
4
  def self.included(receiver) #:nodoc:
5
5
  receiver.class_eval do
6
-
7
6
  include CmpaAuth::PortalConnection
8
-
9
7
  set_table_name :pessoas
10
8
 
11
9
  def lotacoes_temporarias_ativas
12
10
  ::LotacaoTemporaria.scoped(:conditions => {:fim => nil, :pessoa_id => id})
13
11
  end
14
-
15
- def senha=(pass)
16
- if pass != "senhaantiga" && pass.present?
17
- salt = [Array.new(6){rand(256).chr}.join].pack("m").chomp
18
- self.senha_salt = salt
19
- self.senha_hash = Digest::SHA256.hexdigest(pass + salt)
20
- end
21
- end
22
12
  end
23
13
  end
24
14
  end
25
15
  end
26
- end
16
+ end
@@ -3,12 +3,9 @@ module CmpaAuth
3
3
  module Setor
4
4
  def self.included(receiver) #:nodoc:
5
5
  receiver.class_eval do
6
-
7
6
  include CmpaAuth::PortalConnection
8
-
9
7
  has_many :lotacoes_temporarias, :foreign_key => :setor_id, :class_name => '::LotacaoTemporaria'
10
8
  has_many :funcionarios, :through => :lotacoes_temporarias, :source => :pessoa
11
-
12
9
  set_table_name :setores
13
10
  end
14
11
  end
@@ -3,13 +3,9 @@ module CmpaAuth
3
3
  module Sistema
4
4
  def self.included(receiver) #:nodoc:
5
5
  receiver.class_eval do
6
-
7
- include CmpaAuth::PortalConnection
8
-
6
+ include CmpaAuth::PortalConnection
9
7
  default_scope :order => :nome
10
-
11
8
  has_and_belongs_to_many :grupos_acesso, :join_table => :grupoacessos_sistemas, :association_foreign_key => :grupoacesso_id, :class_name => '::GrupoAcesso'
12
-
13
9
  set_table_name :sistemas
14
10
  end
15
11
  end
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cmpa_auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ - 6
9
+ version: 1.0.6
5
10
  platform: ruby
6
11
  authors:
7
12
  - "CMPA Assessoria de Inform\xC3\xA1tica"
@@ -9,10 +14,23 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-04-04 00:00:00 -03:00
17
+ date: 2010-04-15 00:00:00 -03:00
13
18
  default_executable:
14
- dependencies: []
15
-
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: net-ldap
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ - 1
30
+ - 1
31
+ version: 0.1.1
32
+ type: :runtime
33
+ version_requirements: *id001
16
34
  description: "Biblioteca de autentica\xC3\xA7\xC3\xA3o para a Assessoria de Inform\xC3\xA1tica (CMPA)."
17
35
  email: icaro.ldm@gmail.com
18
36
  executables: []
@@ -88,18 +106,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
88
106
  requirements:
89
107
  - - ">="
90
108
  - !ruby/object:Gem::Version
109
+ segments:
110
+ - 0
91
111
  version: "0"
92
- version:
93
112
  required_rubygems_version: !ruby/object:Gem::Requirement
94
113
  requirements:
95
114
  - - ">="
96
115
  - !ruby/object:Gem::Version
116
+ segments:
117
+ - 0
97
118
  version: "0"
98
- version:
99
119
  requirements: []
100
120
 
101
121
  rubyforge_project:
102
- rubygems_version: 1.3.5
122
+ rubygems_version: 1.3.6
103
123
  signing_key:
104
124
  specification_version: 3
105
125
  summary: "Adiciona uma solu\xC3\xA7\xC3\xA3o completa de autentica\xC3\xA7\xC3\xA3o e permiss\xC3\xB5es."