cmpa_auth 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,9 @@
1
+ == 1.0.3 released 2009-11-08
2
+
3
+ * Adicionado suporte a customiza��o do filtro de autentica��o com o m�todo <tt>cmpa_authenticate</tt>.
4
+ * Adicionada a pasta <tt>app/views/application</tt> com os arquivos de cabe�alho e login para serem utilizados em no layout padr�o.
5
+ * Removido o arquivo config/config.yml (por quest�es de seguran�a, principalmente).
6
+
1
7
  == 1.0.2 released 2009-11-08
2
8
 
3
9
  * Documenta��o melhorada.
@@ -8,7 +14,7 @@
8
14
  == 1.0.1 released 2009-11-05
9
15
 
10
16
  * Melhorias na documenta��o e cria��o do README.
11
- * Remo��o dos m�todos <tt>CmpaAuth::Authentication.in_group?</tt> e <tt>CmpaAuth::Authentication.in_groups?</tt>
17
+ * Remo��o dos m�todos <tt>CmpaAuth::Authentication.in_group?</tt> e <tt>CmpaAuth::Authentication.in_groups?</tt>.
12
18
 
13
19
  == 1.0.0 released 2009-09-10
14
20
 
data/README.rdoc CHANGED
@@ -31,14 +31,7 @@ Quando a aplica
31
31
  No arquivo <i>config/environment.rb</i> adicione a seguinte linha de c�digo no
32
32
  bloco de inicializa��o:
33
33
 
34
- config.gem 'cmpa_auth'
35
-
36
- Observe que o Rails avisar� caso a gem cmpa_auth n�o esteja instalada,
37
- entretanto n�o ser� capaz de instal�-la. No momento voc� deve copiar a �ltima
38
- vers�o da gem dispon�vel em <i>\\\\cmpa-s01\info\desenvolvimento\gems</i> para o
39
- seu computador e rodar o comando abaixo.
40
-
41
- $ sudo gem install --local path/to/gem/cmpa_auth-x.x.x.gem
34
+ config.gem 'cmpa_auth', :source => 'http://gemcutter.org'
42
35
 
43
36
 
44
37
  === Models
@@ -99,11 +92,11 @@ chamada repetidas vezes... Por exemplo, no <tt>ApplicationController</tt>.
99
92
  private
100
93
 
101
94
  def redator?
102
- current_lotacao.in_groups_of_super_and_redator?
95
+ current_lotacao.role_of_super_and_redator?
103
96
  end
104
97
 
105
98
  def fotografo?
106
- current_lotacao.in_groups_of_super_and_fotografo?
99
+ current_lotacao.role_of_super_and_fotografo?
107
100
  end
108
101
 
109
102
  Ent�o na view podemos perguntar:
@@ -122,10 +115,21 @@ Para realizar logout e supondo que o usu
122
115
  oferecer o seguinte link na view:
123
116
 
124
117
  = link_to 'sair', session_path, :method => :delete
125
-
126
- O login � feito automaticamente caso o usu�rio n�o esteja logado. Isso � feito
127
- atrav�s do before filter <tt>check_authentication</tt> que por sua vez utiliza o
128
- helper <tt>logged_in?</tt>.
129
118
 
130
119
 
120
+ === Login
121
+
122
+ A tela de login � exibida automaticamente caso o usu�rio n�o esteja logado, a
123
+ n�o ser que voc� queira que certas actions de um determinado controller n�o
124
+ rodem o <tt>before_filter</tt>. Isso � feito chamando o m�todo
125
+ <tt>check_authentication</tt>. Por exemplo:
126
+
127
+ class PostController < ApplicationController
128
+ check_authentication :except => :index
129
+ end
130
+
131
+ class NewsController < ApplicationController
132
+ check_authentication :only => [:new, :create, :edit, :update]
133
+ end
134
+
131
135
  Copyright (c) 2009 CMPA - Assessoria de Inform�tica
@@ -0,0 +1,5 @@
1
+ &copy; Assessoria de Informática CMPA
2
+ <% if logged_in? %>
3
+ &nbsp;|
4
+ <%= link_to "sair", session_url, :method => :delete %>
5
+ <% end %>
@@ -0,0 +1,10 @@
1
+ <% if logged_in? %>
2
+ <p>
3
+ <strong><%= current_user.usuario %></strong>
4
+ |
5
+ <%= link_to "sair", session_url, :method => :delete, :class => 'icon icon-door-out' %>
6
+ </p>
7
+ <em><%= current_lotacao.setor.nome %></em>
8
+ <% else %>
9
+ <%= link_to 'Login', new_session_url, :class => 'icon icon-door-in' %>
10
+ <% end %>
@@ -19,30 +19,21 @@
19
19
  <li><%= link_to 'Gerenciamento de Acesso' %></li>
20
20
  </ul>
21
21
  <div class='login'>
22
- <p>
23
- <strong><%= current_user.usuario %></strong> |
24
- <%= link_to "sair", session_url, :method => :delete, :class => 'icon icon-door-out' %>
25
- </p>
26
- <em><%= current_lotacao.setor.nome %></em>
22
+ <%= render 'application/login' %>
27
23
  </div>
28
24
  </div>
29
25
  <% end %>
30
26
  <div id='container'>
31
27
  <div id='main'>
32
- <div class='flash'>
33
- <% flash.each_pair do |k, v| %>
34
- <%= content_tag :div, v, :class => k %>
35
- <% end %>
36
- </div>
28
+ <% flash.each_pair do |k, v| %>
29
+ <%= content_tag :div, v, :class => "flash #{k}" %>
30
+ <% end %>
37
31
 
38
32
  <%= yield %>
39
33
  </div>
40
34
  </div>
41
- <% if logged_in? %>
42
- <div id='footer'>
43
- &copy; Assessoria de Informática CMPA |
44
- <%= link_to "sair", session_url, :method => :delete %>
45
- </div>
46
- <% end %>
35
+ <div id='footer'>
36
+ <%= render 'application/footer' %>
37
+ </div>
47
38
  </body>
48
39
  </html>
@@ -4,7 +4,7 @@ module CmpaAuth
4
4
  CLASS_NAMES = %w( Pessoa Estagiario Funcionario GrupoAcesso LotacaoTemporaria Setor Sistema )
5
5
 
6
6
  #
7
- # Realiza a autentica��o e retorna uma pessoa (usu�rio) caso o login e senha
7
+ # Realiza a autenticação e retorna uma pessoa (usuário) caso o login e senha
8
8
  # estejam corretos.
9
9
  #
10
10
  def self.authenticate(login, password)
@@ -13,12 +13,13 @@ module CmpaAuth
13
13
  end
14
14
 
15
15
  #
16
- # Retorna uma lista de sistemas dispon�veis para a lota��o tempor�ria em quest�o.
16
+ # Retorna uma lista de sistemas disponíveis para a lotação temporária em questão.
17
17
  #
18
18
  def self.allowed_systems(lotacao_temporaria_id)
19
19
  lotacao_temporaria = ::LotacaoTemporaria.find(lotacao_temporaria_id)
20
20
  lotacao_temporaria.grupos_acesso.inject([]) do |sistemas, grupo|
21
21
  sistemas += grupo.sistemas.select { |s| !sistemas.include?(s) && s.status == 'ativo' }
22
+ sistemas
22
23
  end
23
24
  end
24
25
  end
@@ -17,7 +17,7 @@ module CmpaAuth
17
17
  if implemented_klasses.include? klass
18
18
  klass.constantize.send(:include, module_const)
19
19
 
20
- # O modelo n�o foi definido na aplica��o, ent�o deve-se cri�-lo dinamicamente
20
+ # O modelo n�o foi definido na aplica��o, ent�o deve-se cri�-lo dinamicamente.
21
21
  else
22
22
  # Descobre qual a superclasse do modelo. Funcion�rio e Estagi�rio tem como superclasse a classe Pessoa.
23
23
  superclass = %w[Estagiario Funcionario].include?(klass) ? ::Pessoa : ActiveRecord::Base
@@ -1,12 +1,12 @@
1
1
  module CmpaAuth
2
2
 
3
3
  #
4
- # Implementa a autentica��o atrav�s de um before_filter.
5
- # Todo o controle realizado atrav�s de dois ids armazenados na
6
- # sess�o: current_user_id e lotacao_temporaria_id.
4
+ # Implementa a autenticação através de um before_filter.
5
+ # Todo o controle é realizado através de dois ids armazenados na
6
+ # sessão: current_user_id e lotacao_temporaria_id.
7
7
  #
8
- # O m�dulo tamb�m oferece suporte a algumas facilidades, como perguntar
9
- # se o usu�rio est� logado.
8
+ # O módulo também oferece suporte a algumas facilidades, como perguntar
9
+ # se o usuário está logado.
10
10
  #
11
11
  module RailsHelpers
12
12
  def self.included(receiver) #:nodoc:
@@ -19,10 +19,44 @@ module CmpaAuth
19
19
 
20
20
  #
21
21
  # Renderiza uma mensagem de erro HTML to tipo 403 (proibido) nos casos
22
- # em que a exce��o CmpaAuth::AccessDenied for disparada.
22
+ # em que a exceção CmpaAuth::AccessDenied for disparada.
23
23
  #
24
24
  def render_403
25
- render :template => "errors/error_403", :status => 403, :layout => false
25
+ render :template => "rescues/403", :status => 403, :layout => false
26
+ end
27
+
28
+ #
29
+ # Permite sobrescrever o comportamento do filtro de autenticação padrão.
30
+ #
31
+ # === Exemplos
32
+ #
33
+ # class PostController < ApplicationController
34
+ # check_authentication :except => :index
35
+ # end
36
+ #
37
+ # class NewsController < ApplicationController
38
+ # check_authentication :only => [:new, :create, :edit, :update]
39
+ # end
40
+ #
41
+ def self.cmpa_authenticate(options = {})
42
+ options.to_options!
43
+ this_controller_name = controller_name
44
+ actions = Array(options[:only] || options[:except]).map(&:to_s)
45
+
46
+ self.class_eval do
47
+ if options[:only]
48
+ define_method :check_authentication do
49
+ redirect_to new_session_url if !logged_in? && controller_name == this_controller_name && actions.include?(action_name)
50
+ end
51
+ elsif options[:except]
52
+ define_method :check_authentication do
53
+ redirect_to new_session_url if !logged_in? && controller_name == this_controller_name && !actions.include?(action_name)
54
+ end
55
+ else
56
+ # Como o método check_authentication não foi sobrescrito a sua
57
+ # implementação padrão será chamada.
58
+ end
59
+ end
26
60
  end
27
61
 
28
62
  private
@@ -32,21 +66,21 @@ module CmpaAuth
32
66
  end
33
67
 
34
68
  #
35
- # Retorna o usu�rio logado na sess�o.
69
+ # Retorna o usuário logado na sessão.
36
70
  #
37
71
  def current_user
38
72
  @current_user ||= ::Pessoa.find_by_id(session[:current_user_id])
39
73
  end
40
74
 
41
75
  #
42
- # Retorna a lota��o tempor�ria atual (aquela que o usu�rio escolheu ao
76
+ # Retorna a lotação temporária atual (aquela que o usuário escolheu ao
43
77
  # logar no sistema).
44
78
  #
45
79
  def current_lotacao
46
80
  @current_lotacao ||= ::LotacaoTemporaria.find_by_id(session[:lotacao_temporaria_id])
47
81
  end
48
82
 
49
- # Verifica se o usu�rio est� logado.
83
+ # Verifica se o usuário está logado.
50
84
  def logged_in?
51
85
  current_user && current_lotacao
52
86
  end
data/lib/cmpa_auth.rb CHANGED
@@ -16,7 +16,7 @@ require 'cmpa_auth/rails_helpers'
16
16
  require 'cmpa_auth/extensions'
17
17
 
18
18
  # Copia as imagens dos sistemas para a pasta public/images/sistemas da aplicação.
19
- images_src = File.join(File.dirname(__FILE__), '../public/images/sistemas/*')
19
+ images_src = "#{File.dirname(__FILE__)}/../public/images/sistemas/*"
20
20
  images_dst = "#{Rails.public_path}/images/sistemas/"
21
21
  FileUtils.mkdir_p images_dst
22
22
  FileUtils.cp_r Dir.glob(images_src), images_dst
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cmpa_auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - "CMPA Assessoria de Inform\xC3\xA1tica"
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-10 00:00:00 -02:00
12
+ date: 2009-12-11 00:00:00 -02:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -43,17 +43,19 @@ files:
43
43
  - lib/cmpa_auth.rb
44
44
  - app/controllers/sessions_controller.rb
45
45
  - app/helpers/sessions_helper.rb
46
- - app/views/errors/error_403.html.erb
46
+ - app/views/application/_footer.html.erb
47
+ - app/views/application/_login.html.erb
47
48
  - app/views/layouts/sessions.html.erb
49
+ - app/views/rescues/403.html.erb
48
50
  - app/views/sessions/index.html.erb
49
51
  - app/views/sessions/new.html.erb
50
52
  - app/views/sessions/selecao_lotacao_temporaria.html.erb
51
- - config/config.yml
52
53
  - config/routes.rb
53
54
  - public/images/sistemas/administrativo.png
54
55
  - public/images/sistemas/agenda.png
55
56
  - public/images/sistemas/aviso.png
56
57
  - public/images/sistemas/central_transportes.png
58
+ - public/images/sistemas/contratos.png
57
59
  - public/images/sistemas/controle_acesso.png
58
60
  - public/images/sistemas/convenios.png
59
61
  - public/images/sistemas/cotas.png
data/config/config.yml DELETED
@@ -1,7 +0,0 @@
1
- development:
2
- session_key: _camarapoa
3
- secret: 6d3fb2a0cd7a049e27f77c8ca73fd590552776e47de47e3c7a44638bd4ab8add7140c11edd892a4d9d019d643a068c88d1a30c72b544b453ccdd8774a17ac589112081c779f51834a567314b95a0cdda01fe977b16440b721f6fde71ce0130b70c5bf90d1066bdef4e5ec08dca457522b0b399cf4567603b377efb28f701fc78
4
-
5
- production:
6
- session_key: _camarapoa
7
- secret: 6d3fb2a0cd7a049e27f77c8ca73fd590552776e47de47e3c7a44638bd4ab8add7140c11edd892a4d9d019d643a068c88d1a30c72b544b453ccdd8774a17ac589112081c779f51834a567314b95a0cdda01fe977b16440b721f6fde71ce0130b70c5bf90d1066bdef4e5ec08dca457522b0b399cf4567603b377efb28f701fc78