Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
GEM
remote: https://rubygems.org/
specs:
actionpack (4.0.0)
activesupport (= 4.0.0)
builder (~> 3.1.0)
erubis (~> 2.7.0)
rack (~> 1.5.2)
rack-test (~> 0.6.2)
activesupport (4.0.0)
i18n (~> 0.6, >= 0.6.4)
minitest (~> 4.2)
multi_json (~> 1.3)
thread_safe (~> 0.1)
tzinfo (~> 0.3.37)
atomic (1.1.14)
attr_encryptor (2.0.0)
encryptor2 (>= 1.0.0)
builder (3.1.4)
diff-lcs (1.1.3)
docile (1.1.3)
encryptor2 (1.0.0)
erubis (2.7.0)
i18n (0.6.9)
minitest (4.7.5)
multi_json (1.10.1)
rack (1.5.2)
rack-test (0.6.2)
rack (>= 1.0)
railties (4.0.0)
actionpack (= 4.0.0)
activesupport (= 4.0.0)
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rake (10.1.1)
rspec (2.11.0)
rspec-core (~> 2.11.0)
rspec-expectations (~> 2.11.0)
rspec-mocks (~> 2.11.0)
rspec-core (2.11.1)
rspec-expectations (2.11.3)
diff-lcs (~> 1.1.3)
rspec-mocks (2.11.3)
rspec-rails (2.11.4)
actionpack (>= 3.0)
activesupport (>= 3.0)
railties (>= 3.0)
rspec (~> 2.11.0)
rspec_junit_formatter (0.2.0)
builder (< 4)
rspec (>= 2, < 4)
rspec-core (!= 2.12.0)
simplecov (0.8.2)
docile (~> 1.1.0)
multi_json
simplecov-html (~> 0.8.0)
simplecov-html (0.8.0)
thor (0.19.1)
thread_safe (0.1.3)
atomic
tzinfo (0.3.39)

PLATFORMS
ruby

DEPENDENCIES
attr_encryptor (~> 2.0.0)
rspec (~> 2.11.0)
rspec-rails (~> 2.11.0)
rspec_junit_formatter
simplecov (~> 0.6)
6 changes: 6 additions & 0 deletions app/controllers/password_instances_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ def safe_params

def index

@limite = 5 #per_page_option
@password_instance_pages = Paginator.new @password_instances.count, @limite, params['page']
@password_instances = @password_instances.limit(@limite).offset(@password_instance_pages.offset)

end

def set
Expand All @@ -60,6 +64,7 @@ def edit

def update
@password_instance.update_attributes(params[:password_instance])
@password_instance.update_attribute(:user_update, User.current)
@password_instance.data_plain = JSON.generate(params[:password_instance]['data'])

if request.put? and @password_instance.save
Expand All @@ -84,6 +89,7 @@ def create

@password_instance = PasswordInstance.new (params[:password_instance])
@password_instance.data_plain = JSON.generate(params[:password_instance]['data'])
@password_instance.user_create = User.current
@password_instance.project = @project


Expand Down
3 changes: 3 additions & 0 deletions app/helpers/password_instances_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ def find_password_instance

def find_password_instances
@password_instances = PasswordInstance.where(["project_id = ?", @project.id])
unless (params[:tags].nil? )
@password_instances = @password_instances.where(["tags like ?", '%' + params[:tags] + '%'])
end
end


Expand Down
2 changes: 2 additions & 0 deletions app/models/password_instance.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ class PasswordInstance < ActiveRecord::Base

belongs_to :password_template
belongs_to :project
belongs_to :user_create, :class_name => 'User', :foreign_key => "user_create"
belongs_to :user_update, :class_name => 'User', :foreign_key => "user_update"

# TODO: Load key from file
attr_encrypted :data_plain, :key => :get_secret, :attribute => 'data_encrypted'
Expand Down
2 changes: 1 addition & 1 deletion app/models/password_schema_field.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ class PasswordSchemaField

include ActiveModel::Validations

attr_accessor :type, :name, :validate, :caption, :value
attr_accessor :type, :name, :validate, :caption, :value, :obs

attr_reader :errors_data

Expand Down
27 changes: 22 additions & 5 deletions app/views/password_instances/_form.html.erb
Original file line number Diff line number Diff line change
@@ -1,15 +1,32 @@
<%= error_messages_for 'password_instance' %>

<div class="box tabular">
<p><%= f.select :password_template_id, options_for_select(PasswordTemplate.template_options_for_form,@password_instance.password_template_id),{}, :onchange => 'changedPasswordInstanceTemplate(this)' %></p>
<p><%= f.select :parent_id, options_for_select( password_instance_tree_options(@password_instances),@password_instance.parent_id),{:label => :label_pt_parent}, :disabled => true %></p>
<p <%= Setting.plugin_redmine_password_tool['password_tool_use_template'] == 'false' ? "style=visibility:hidden" : nil %>><%= f.select :password_template_id, options_for_select(PasswordTemplate.template_options_for_form,@password_instance.password_template_id),{}, :onchange => 'changedPasswordInstanceTemplate(this)' %></p>
<p <%= Setting.plugin_redmine_password_tool['password_tool_use_parent'] == 'false' ? "style=visibility:hidden" : nil %>><%= f.select :parent_id, options_for_select( password_instance_tree_options(@password_instances),@password_instance.parent_id),{:label => :label_pt_parent}, :disabled => true %></p>
<p><%= f.text_field :name, :required => true, :label => :label_pt_name, :disabled => true %></p>
<p><%= f.text_field :tags, :size => 60 %></p>
<p><%= f.text_area :obs, :size => "30x6" %></p>
<% if params[:action] == "edit" %>
<p><%= 'Criação em: ' + format_time(@password_instance.created_on) + (!@password_instance.user_create.nil? ? ' por ' + @password_instance.user_create.login : '') %></p>
<p><%= 'Última atualização em: ' + format_time(@password_instance.updated_on) + (!@password_instance.user_update.nil? ? ' por ' + @password_instance.user_update.login : '') %></p>
<% end %>

</div>

<% if params[:action] == "create" or params[:action] == "edit" %>
<% if params[:action] == "create" or params[:action] == "edit" %>
<script type="text/javascript">
$(document).ready(function() {
initPasswordInstanceForm(<%= @password_instance.password_template.schema_obj.form_json(@password_instance.data_plain).html_safe %>)
});
initPasswordInstanceForm(<%= @password_instance.password_template.schema_obj.form_json(@password_instance.data_plain).html_safe %>);
});
</script>
<% end %>

<% if params[:action] == "new" %>
<script type="text/javascript">
$(document).ready(function() {
var selectElement = $('#password_instance_password_template_id');
selectElement.val($(selectElement.find('option')[1]).val());
selectElement.trigger('change');
});
</script>
<% end %>
42 changes: 33 additions & 9 deletions app/views/password_instances/index.html.erb
Original file line number Diff line number Diff line change
@@ -1,12 +1,24 @@
<h2><%=l(:label_password_instances)%></h2>


<%= form_tag({ :controller => 'password_instances', :action => 'index', :project_id => @project },
:method => :get, :id => 'query_form') do %>
<%= label_tag :tags %>
<%= text_field_tag :tags, params[:tags] %>
<p><%= submit_tag 'Busca' %></p>

<% end %>

<%= error_messages_for 'query' %>

<div class="contextual">
<% if User.current.allowed_to?({ controller: "password_instances", action: "new" },@project) -%>
<%= link_to l(:label_password_instance_new), { controller: "password_instances", action: "new" }, class: 'icon icon-add' %>
<% end -%>
<%= link_to l(:label_pt_show_all), "#", onclick:"showPasswordInstanceAllContent()", class: 'icon icon-unlock' %>
<%= link_to l(:label_pt_hide_all), "#", onclick:"hidePasswordInstanceAllContent()", class: 'icon icon-lock' %>
</div>

<h2><%=l(:label_password_instances)%></h2>
<div style="clear:both;"></div>


<%# Register JS Event Listener -%>
Expand All @@ -20,30 +32,38 @@
});
<% end -%>

<%
use_model_password = Setting.plugin_redmine_password_tool['password_tool_use_template'] == 'true'

# config_test = Redmine::Configuration['secret_token']
%>
<%#= @password_instances %>

<div class="autoscroll">
<table class="list pw-table">
<thead><tr>
<th><%=l(:label_pt_name)%></th>
<th><%=l(:field_password_template)%></th>
<% if use_model_password %>
<th><%=l(:field_password_template)%></th>
<% end %>
<th><%=l(:label_pt_data) %></th>
<th><%=l(:field_updated_on)%></th>
<th><%=l(:field_created_on)%></th>
<th><%=l(:label_pt_obs) %></th>
<th><%=l(:label_pt_tags) %></th>
<th></th>
</tr></thead>
<tbody>
<% PasswordInstance.password_instance_tree(@password_instances) do |pw_instance, level| %>
<tr class="<%= cycle("odd", "even") %> <%= pw_instance.css_classes %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
<td class="name"><span><%= link_to pw_instance.name, { controller: "password_instances", action:"show", id: pw_instance.id } %></span></td>
<td><%= pw_instance.password_template.name %></td>
<td width="500px">
<% if use_model_password %>
<td><%= pw_instance.password_template.name %></td>
<% end %>
<td width="300px">
<%= link_to(l(:button_show), "##{pw_instance.id}", :class => 'icon icon-unlock pw-show') %>
<%= link_to(l(:button_hide), "##{pw_instance.id}", :style => 'display:none;', :class => 'icon icon-lock pw-hide') %>
</td>
<td align="center"><%= format_time(pw_instance.updated_on) %></td>
<td align="center"><%= format_time(pw_instance.created_on) %></td>
<td align="center"><%= pw_instance.obs %></td>
<td align="center"><%= pw_instance.tags %></td>
<td class="buttons">
<% if User.current.allowed_to?({ controller: "password_instances", action: "edit" },@project) -%>
<%= link_to(l(:button_edit), { controller: "password_instances", action:"edit", id: pw_instance.id}, :class => 'icon icon-edit') %>
Expand All @@ -58,5 +78,9 @@
</table>
</div>
<%= %>
<p class="pagination"><%= pagination_links_full @password_instance_pages, @password_instances.count %></p>
<div style="clear:both;"></div>

<p>Registros: <%= @password_instances.count %></p>

<% html_title(l(:label_project_plural)) -%>
1 change: 0 additions & 1 deletion app/views/password_instances/new.html.erb
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
<h2><%=l(:label_password_instance_new)%></h2>

<%= labelled_form_for @password_instance, {:url => project_password_instances_path(@project), :html => {:class => 'password_instance_form'}} do |f| %>
<%= render :partial => 'form', :locals => {:f => f} %>
<p><%= submit_tag l(:button_create) %></p>
Expand Down
26 changes: 26 additions & 0 deletions app/views/settings/_redmine_password_tool.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<%= stylesheet_link_tag('application', :plugin => 'redmine_password_tool')%>

<br/>
<div class="tabular settings">
<h3><%= l(:label_password_tool_settings)%></h3>
<p>
<label><%= l(:label_password_tool_template_default)%></label>
<%= select_tag "settings[password_template_default_id]",
options_for_select(PasswordTemplate.template_options_for_form,@settings['password_template_default_id']) %>
</p>
<p>
<label><%= l(:label_password_tool_use_template)%></label>
<%= select_tag "settings[password_tool_use_template]",
options_for_select([
[l(:general_text_yes), 'true'],
[l(:general_text_no), 'false']], @settings['password_tool_use_template']) %>
</p>
<p>
<label><%= l(:label_password_tool_use_parent)%></label>
<%= select_tag "settings[password_tool_use_parent]",
options_for_select([
[l(:general_text_yes), 'true'],
[l(:general_text_no), 'false']], @settings['password_tool_use_parent']) %>
</p>
</div>

34 changes: 34 additions & 0 deletions config/locales/pt-br.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
pt-br:
## Allgemein
label_password_instances: Senhas
label_passwort_instance: Senha
label_pt_select: Selecionado
label_pt_root: Administrador
field_password_template: Modelo
label_pt_name: Nome
label_pt_passwordtool: Password Tool
label_pt_data: Conteúdo
label_pt_parent: Senha pai
label_pt_obs: Observações
field_obs: Observações
label_pt_tags: Tags
field_tags: Tags

text_pt_instance_destroy_warning: "Você tem certeza que deseja apagar essa senha '%{value}'?"

label_pt_show_all: "Exbibir"
label_pt_hide_all: "Ocultar"

## Permissions
permission_pt_read: Ver senhas registradas
permission_pt_modify: Cadastrar/Alterar/Apagar senhas registradas

## Settings

## Password Instances
label_password_instance_new: Cadastrar nova senha

#Settings
label_password_tool_settings: Configurações do plugin
label_password_tool_use_template: Usar modelos
label_password_tool_template_default: Modelo padrão
Binary file added db/migrate/.DS_Store
Binary file not shown.
11 changes: 11 additions & 0 deletions db/migrate/20140612135138_add_column_to_password_instance.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class AddColumnToPasswordInstance < ActiveRecord::Migration
def up
add_column :password_instances, :obs, :string
add_column :password_instances, :tags, :string
end

def down
remove_column :password_instances, :obs
remove_column :password_instances, :tags
end
end
11 changes: 11 additions & 0 deletions db/migrate/20140613170816_add_user_data_to_password_instance.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class AddUserDataToPasswordInstance < ActiveRecord::Migration
def up
add_column :password_instances, :user_create, :integer
add_column :password_instances, :user_update, :integer
end

def down
remove_column :password_instances, :user_create
remove_column :password_instances, :user_update
end
end