barkest_core 1.5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +13 -0
- data/Gemfile +22 -0
- data/Gemfile.lock +254 -0
- data/MIT-LICENSE +20 -0
- data/README.md +364 -0
- data/Rakefile +37 -0
- data/app/assets/fonts/barkest_core/ArchivoNarrow-Bold.ttf +0 -0
- data/app/assets/fonts/barkest_core/ArchivoNarrow-BoldItalic.ttf +0 -0
- data/app/assets/fonts/barkest_core/ArchivoNarrow-Italic.ttf +0 -0
- data/app/assets/fonts/barkest_core/ArchivoNarrow-Regular.ttf +0 -0
- data/app/assets/images/barkest_core/.keep +0 -0
- data/app/assets/images/barkest_core/barcode-B.svg +181 -0
- data/app/assets/javascripts/barkest_core/.keep +0 -0
- data/app/assets/javascripts/barkest_core/application.js +22 -0
- data/app/assets/javascripts/barkest_core/bootstrap-datepicker.js +1800 -0
- data/app/assets/javascripts/barkest_core/field_init.js +7 -0
- data/app/assets/javascripts/barkest_core/jquery.doubleScroll.js +112 -0
- data/app/assets/javascripts/barkest_core/masked_edit.js +25 -0
- data/app/assets/javascripts/barkest_core/system_status.js.erb +201 -0
- data/app/assets/stylesheets/barkest_core/.keep +0 -0
- data/app/assets/stylesheets/barkest_core/application.css +17 -0
- data/app/assets/stylesheets/barkest_core/custom.css.scss +264 -0
- data/app/assets/stylesheets/barkest_core/datepicker3.css +790 -0
- data/app/controllers/.keep +0 -0
- data/app/controllers/access_groups_controller.rb +74 -0
- data/app/controllers/account_activations_controller.rb +29 -0
- data/app/controllers/application_controller.rb +5 -0
- data/app/controllers/barkest_core/application_controller_base.rb +113 -0
- data/app/controllers/barkest_core/engine_controller_base.rb +15 -0
- data/app/controllers/barkest_core/testsub_controller.rb +21 -0
- data/app/controllers/contact_controller.rb +32 -0
- data/app/controllers/log_view_controller.rb +31 -0
- data/app/controllers/password_resets_controller.rb +126 -0
- data/app/controllers/sessions_controller.rb +64 -0
- data/app/controllers/status_controller.rb +150 -0
- data/app/controllers/system_config_controller.rb +238 -0
- data/app/controllers/system_update_controller.rb +164 -0
- data/app/controllers/test_access_controller.rb +44 -0
- data/app/controllers/test_report_controller.rb +75 -0
- data/app/controllers/users_controller.rb +218 -0
- data/app/helpers/.keep +0 -0
- data/app/helpers/barkest_core/application_helper.rb +134 -0
- data/app/helpers/barkest_core/form_helper.rb +469 -0
- data/app/helpers/barkest_core/html_helper.rb +70 -0
- data/app/helpers/barkest_core/misc_helper.rb +68 -0
- data/app/helpers/barkest_core/pdf_helper.rb +180 -0
- data/app/helpers/barkest_core/recaptcha_helper.rb +115 -0
- data/app/helpers/barkest_core/sessions_helper.rb +94 -0
- data/app/helpers/barkest_core/status_helper.rb +118 -0
- data/app/helpers/barkest_core/users_helper.rb +32 -0
- data/app/mailers/.keep +0 -0
- data/app/mailers/application_mailer.rb +5 -0
- data/app/mailers/barkest_core/application_mailer_base.rb +30 -0
- data/app/mailers/barkest_core/contact_form.rb +20 -0
- data/app/mailers/barkest_core/user_mailer.rb +44 -0
- data/app/models/.keep +0 -0
- data/app/models/access_group.rb +121 -0
- data/app/models/access_group_group_member.rb +13 -0
- data/app/models/access_group_user_member.rb +11 -0
- data/app/models/barkest_core/auth_config.rb +95 -0
- data/app/models/barkest_core/authorize_failure.rb +7 -0
- data/app/models/barkest_core/contact_message.rb +37 -0
- data/app/models/barkest_core/database_config.rb +223 -0
- data/app/models/barkest_core/db_table.rb +21 -0
- data/app/models/barkest_core/email_config.rb +132 -0
- data/app/models/barkest_core/global_status.rb +267 -0
- data/app/models/barkest_core/log_entry.rb +101 -0
- data/app/models/barkest_core/log_view_options.rb +51 -0
- data/app/models/barkest_core/ms_sql_db_definition.rb +441 -0
- data/app/models/barkest_core/ms_sql_definition.rb +221 -0
- data/app/models/barkest_core/ms_sql_function.rb +423 -0
- data/app/models/barkest_core/not_logged_in.rb +7 -0
- data/app/models/barkest_core/pdf_table_builder.rb +407 -0
- data/app/models/barkest_core/self_update_config.rb +37 -0
- data/app/models/barkest_core/user_alert.rb +29 -0
- data/app/models/barkest_core/user_alert_generators.rb +58 -0
- data/app/models/barkest_core/user_manager.rb +404 -0
- data/app/models/barkest_core/work_path.rb +74 -0
- data/app/models/disable_user.rb +18 -0
- data/app/models/ldap_access_group.rb +15 -0
- data/app/models/system_config.rb +99 -0
- data/app/models/user.rb +405 -0
- data/app/models/user_login_history.rb +11 -0
- data/app/views/.keep +0 -0
- data/app/views/access_groups/_form.html.erb +19 -0
- data/app/views/access_groups/edit.html.erb +2 -0
- data/app/views/access_groups/index.html.erb +32 -0
- data/app/views/access_groups/new.html.erb +2 -0
- data/app/views/access_groups/show.html.erb +4 -0
- data/app/views/barkest_core/contact_form/contact.html.erb +16 -0
- data/app/views/barkest_core/contact_form/contact.text.erb +13 -0
- data/app/views/barkest_core/testsub/_links.html.erb +5 -0
- data/app/views/barkest_core/testsub/page1.html.erb +3 -0
- data/app/views/barkest_core/testsub/page2.html.erb +2 -0
- data/app/views/barkest_core/testsub/page3.html.erb +2 -0
- data/app/views/barkest_core/user_mailer/account_activation.html.erb +7 -0
- data/app/views/barkest_core/user_mailer/account_activation.text.erb +6 -0
- data/app/views/barkest_core/user_mailer/invalid_password_reset.html.erb +3 -0
- data/app/views/barkest_core/user_mailer/invalid_password_reset.text.erb +5 -0
- data/app/views/barkest_core/user_mailer/password_reset.html.erb +8 -0
- data/app/views/barkest_core/user_mailer/password_reset.text.erb +7 -0
- data/app/views/contact/index.html.erb +24 -0
- data/app/views/layouts/_footer_copyright.html.erb +1 -0
- data/app/views/layouts/_menu_admin.html.erb +5 -0
- data/app/views/layouts/_menu_anon.html.erb +0 -0
- data/app/views/layouts/_menu_auth.html.erb +3 -0
- data/app/views/layouts/_menu_footer.html.erb +1 -0
- data/app/views/layouts/_nav_logo.html.erb +1 -0
- data/app/views/layouts/application.html.erb +2 -0
- data/app/views/layouts/barkest_core/_application.html.erb +24 -0
- data/app/views/layouts/barkest_core/_footer.html.erb +18 -0
- data/app/views/layouts/barkest_core/_header.html.erb +38 -0
- data/app/views/layouts/barkest_core/_html_mailer.html.erb +11 -0
- data/app/views/layouts/barkest_core/_menu_account.html.erb +14 -0
- data/app/views/layouts/barkest_core/_menu_sample.html.erb +1 -0
- data/app/views/layouts/barkest_core/_messages.html.erb +4 -0
- data/app/views/layouts/barkest_core/_shim.html.erb +4 -0
- data/app/views/layouts/barkest_core/_subheader.html.erb +1 -0
- data/app/views/layouts/barkest_core/_text_mailer.text.erb +4 -0
- data/app/views/layouts/mailer.html.erb +1 -0
- data/app/views/layouts/mailer.text.erb +1 -0
- data/app/views/log_view/index.html.erb +100 -0
- data/app/views/password_resets/edit.html.erb +20 -0
- data/app/views/password_resets/new.html.erb +14 -0
- data/app/views/sessions/new.html.erb +27 -0
- data/app/views/shared/_error_messages.html.erb +29 -0
- data/app/views/shared/_generic_user_alert.html.erb +4 -0
- data/app/views/status/current.html.erb +34 -0
- data/app/views/status/test.html.erb +50 -0
- data/app/views/system_config/index.html.erb +25 -0
- data/app/views/system_config/show_auth.html.erb +28 -0
- data/app/views/system_config/show_database.html.erb +36 -0
- data/app/views/system_config/show_email.html.erb +21 -0
- data/app/views/system_config/show_self_update.html.erb +13 -0
- data/app/views/system_update/index.html.erb +31 -0
- data/app/views/system_update/new.html.erb +2 -0
- data/app/views/test_access/allow_anon.html.erb +2 -0
- data/app/views/test_access/require_admin.html.erb +2 -0
- data/app/views/test_access/require_group_x.html.erb +2 -0
- data/app/views/test_access/require_user.html.erb +2 -0
- data/app/views/test_report/index.csv.csvrb +23 -0
- data/app/views/test_report/index.html.erb +6 -0
- data/app/views/test_report/index.pdf.prawn +50 -0
- data/app/views/test_report/index.xlsx.axlsx +28 -0
- data/app/views/users/_user.html.erb +57 -0
- data/app/views/users/_user_details.html.erb +15 -0
- data/app/views/users/_user_details_for_list.html.erb +1 -0
- data/app/views/users/_user_form.html.erb +13 -0
- data/app/views/users/disable_confirm.html.erb +19 -0
- data/app/views/users/edit.html.erb +15 -0
- data/app/views/users/index.html.erb +9 -0
- data/app/views/users/new.html.erb +10 -0
- data/app/views/users/show.html.erb +46 -0
- data/bin/rails +12 -0
- data/config/routes.rb +3 -0
- data/db/migrate/20160617172539_create_access_groups.rb +10 -0
- data/db/migrate/20160617172725_create_users.rb +26 -0
- data/db/migrate/20160617172833_create_user_login_histories.rb +12 -0
- data/db/migrate/20160622151720_create_access_group_user_members.rb +9 -0
- data/db/migrate/20160622151925_create_access_group_group_members.rb +9 -0
- data/db/migrate/20160701005706_create_ldap_access_groups.rb +11 -0
- data/db/migrate/20161108155029_create_system_configs.rb +11 -0
- data/db/seeds/barkest_core_01_create_users.rb +42 -0
- data/db/seeds.rb +53 -0
- data/lib/barkest_core/concerns/association_with_defaults.rb +55 -0
- data/lib/barkest_core/concerns/boolean_parser.rb +88 -0
- data/lib/barkest_core/concerns/date_parser.rb +181 -0
- data/lib/barkest_core/concerns/email_tester.rb +55 -0
- data/lib/barkest_core/concerns/encrypted_fields.rb +156 -0
- data/lib/barkest_core/concerns/named_model.rb +73 -0
- data/lib/barkest_core/concerns/number_parser.rb +145 -0
- data/lib/barkest_core/concerns/utc_conversion.rb +60 -0
- data/lib/barkest_core/engine.rb +105 -0
- data/lib/barkest_core/extensions/active_record_extensions.rb +120 -0
- data/lib/barkest_core/extensions/application_configuration_extensions.rb +38 -0
- data/lib/barkest_core/extensions/application_extensions.rb +50 -0
- data/lib/barkest_core/extensions/axlsx_extenstions.rb +157 -0
- data/lib/barkest_core/extensions/fixture_set_extensions.rb +107 -0
- data/lib/barkest_core/extensions/generator_extensions.rb +271 -0
- data/lib/barkest_core/extensions/main_app_extensions.rb +35 -0
- data/lib/barkest_core/extensions/prawn_document_extensions.rb +367 -0
- data/lib/barkest_core/extensions/prawn_table_extensions.rb +131 -0
- data/lib/barkest_core/extensions/router_extensions.rb +106 -0
- data/lib/barkest_core/extensions/simple_formatter_extensions.rb +66 -0
- data/lib/barkest_core/extensions/test_case_extensions.rb +348 -0
- data/lib/barkest_core/extensions/time_extensions.rb +164 -0
- data/lib/barkest_core/handlers/csv_handler.rb +30 -0
- data/lib/barkest_core/version.rb +3 -0
- data/lib/barkest_core.rb +324 -0
- data/lib/generators/barkest/install_generator.rb +102 -0
- data/lib/generators/barkest_core/actions/01_patch_application_controller.rb +55 -0
- data/lib/generators/barkest_core/actions/02_patch_application_mailer.rb +56 -0
- data/lib/generators/barkest_core/actions/03_patch_assets.rb +62 -0
- data/lib/generators/barkest_core/actions/04_patch_layouts.rb +36 -0
- data/lib/generators/barkest_core/actions/05_patch_routes.rb +93 -0
- data/lib/generators/barkest_core/actions/06_patch_seeds.rb +60 -0
- data/lib/generators/barkest_core/actions/07_copy_migrations.rb +51 -0
- data/lib/generators/barkest_core/actions/08_configure_database.rb +52 -0
- data/lib/generators/barkest_core/actions/09_configure_secrets.rb +29 -0
- data/lib/generators/barkest_core/actions/99_patch_gitignore.rb +57 -0
- data/lib/generators/barkest_core/install_generator.rb +17 -0
- data/test/barkest_core_test.rb +83 -0
- data/test/controllers/access_groups_controller_test.rb +53 -0
- data/test/controllers/contact_controller_test.rb +10 -0
- data/test/controllers/sessions_controller_test.rb +10 -0
- data/test/controllers/users_controller_test.rb +10 -0
- data/test/dummy/.gitignore +10 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/images/.keep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +14 -0
- data/test/dummy/app/assets/stylesheets/application.css +16 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/mailers/.keep +0 -0
- data/test/dummy/app/mailers/application_mailer.rb +3 -0
- data/test/dummy/app/models/.keep +0 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +1 -0
- data/test/dummy/app/views/layouts/mailer.html.erb +1 -0
- data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
- data/test/dummy/app/views/system_config/show_fake.html.erb +3 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +29 -0
- data/test/dummy/config/application.rb +27 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +47 -0
- data/test/dummy/config/environments/production.rb +79 -0
- data/test/dummy/config/environments/test.rb +44 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/db_updater_ext.rb +33 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/sys_config_ext.rb +12 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +60 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/db/schema.rb +95 -0
- data/test/dummy/db/seeds/barkest_core_01_create_users.rb +42 -0
- data/test/dummy/db/seeds.rb +51 -0
- data/test/dummy/lib/assets/.keep +0 -0
- data/test/dummy/log/.keep +0 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/sql/my_test_view.sql +3 -0
- data/test/fixtures/access_groups.yml +21 -0
- data/test/fixtures/users.yml +71 -0
- data/test/helpers/barkest_core/sessions_helper_test.rb +22 -0
- data/test/integration/access_group_mgmt_test.rb +33 -0
- data/test/integration/access_test.rb +24 -0
- data/test/integration/account_activations_access_test.rb +12 -0
- data/test/integration/contact_test.rb +98 -0
- data/test/integration/extra_partial_test.rb +41 -0
- data/test/integration/log_view_access_test.rb +12 -0
- data/test/integration/password_resets_test.rb +101 -0
- data/test/integration/reports_test.rb +53 -0
- data/test/integration/status_access_test.rb +27 -0
- data/test/integration/system_config_access_test.rb +24 -0
- data/test/integration/system_update_access_test.rb +19 -0
- data/test/integration/users_access_test.rb +34 -0
- data/test/integration/users_edit_test.rb +178 -0
- data/test/integration/users_index_test.rb +62 -0
- data/test/integration/users_login_test.rb +67 -0
- data/test/integration/users_signup_test.rb +54 -0
- data/test/mailers/.keep +0 -0
- data/test/mailers/barkest_core/contact_form_test.rb +28 -0
- data/test/mailers/barkest_core/user_mailer_test.rb +43 -0
- data/test/mailers/previews/barkest_core/contact_form_preview.rb +17 -0
- data/test/mailers/previews/barkest_core/user_mailer_preview.rb +26 -0
- data/test/models/access_group_group_member_test.rb +28 -0
- data/test/models/access_group_test.rb +114 -0
- data/test/models/access_group_user_member_test.rb +28 -0
- data/test/models/barkest_core/auth_config_test.rb +57 -0
- data/test/models/barkest_core/bool_parser_test.rb +28 -0
- data/test/models/barkest_core/contact_message_test.rb +61 -0
- data/test/models/barkest_core/database_config_test.rb +33 -0
- data/test/models/barkest_core/date_parser_test.rb +110 -0
- data/test/models/barkest_core/email_config_test.rb +57 -0
- data/test/models/barkest_core/global_status_test.rb +50 -0
- data/test/models/barkest_core/ms_sql_db_updater_test.rb +115 -0
- data/test/models/barkest_core/ms_sql_definition_test.rb +102 -0
- data/test/models/barkest_core/ms_sql_function_test.rb +131 -0
- data/test/models/barkest_core/number_parser_test.rb +29 -0
- data/test/models/barkest_core/self_update_config_test.rb +29 -0
- data/test/models/barkest_core/user_alert_test.rb +19 -0
- data/test/models/barkest_core/user_manager_test.rb +34 -0
- data/test/models/barkest_core/work_path_test.rb +26 -0
- data/test/models/disable_user_test.rb +27 -0
- data/test/models/generic_time_test.rb +66 -0
- data/test/models/ldap_access_group_test.rb +31 -0
- data/test/models/pdf_table_builder_test.rb +6 -0
- data/test/models/system_config_test.rb +78 -0
- data/test/models/user_login_history_test.rb +37 -0
- data/test/models/user_test.rb +130 -0
- data/test/test_helper.rb +63 -0
- metadata +798 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
xlsx_package.simple('Test Report') do |sheet,styles|
|
|
2
|
+
|
|
3
|
+
sheet.workbook.package.core.created = Time.zone.local(2016, 12, 8, 15, 0)
|
|
4
|
+
|
|
5
|
+
# add the header row.
|
|
6
|
+
sheet.add_combined_row [
|
|
7
|
+
[ 'Code', :bold ],
|
|
8
|
+
[ 'Name', :bold ],
|
|
9
|
+
[ 'Email', :bold ],
|
|
10
|
+
[ 'Date of Birth', :bold ],
|
|
11
|
+
[ 'Hire Date', :bold ],
|
|
12
|
+
[ 'Pay Rate', :bold ],
|
|
13
|
+
[ 'Hours', :bold ]
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
# now the data rows.
|
|
17
|
+
@data.each do |row|
|
|
18
|
+
sheet.add_combined_row [
|
|
19
|
+
row.code,
|
|
20
|
+
row.name,
|
|
21
|
+
row.email,
|
|
22
|
+
[ row.date_of_birth, :date ],
|
|
23
|
+
[ row.hire_date, :date ],
|
|
24
|
+
[ row.pay_rate, :currency ],
|
|
25
|
+
[ row.hours, :integer ]
|
|
26
|
+
]
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<%
|
|
2
|
+
display_class =
|
|
3
|
+
if current_user?(user)
|
|
4
|
+
'class="success"'
|
|
5
|
+
elsif user.enabled?
|
|
6
|
+
if user.failed_login_streak.count >= 10
|
|
7
|
+
'class="danger"'
|
|
8
|
+
elsif user.failed_login_streak.count >= 5
|
|
9
|
+
'class="warning"'
|
|
10
|
+
else
|
|
11
|
+
''
|
|
12
|
+
end
|
|
13
|
+
else
|
|
14
|
+
'class="info"'
|
|
15
|
+
end.html_safe
|
|
16
|
+
%>
|
|
17
|
+
<li <%= display_class %>>
|
|
18
|
+
<% if current_user.system_admin? %>
|
|
19
|
+
<div style="width: 5em;">
|
|
20
|
+
<% if current_user?(user) %>
|
|
21
|
+
|
|
22
|
+
<% else %>
|
|
23
|
+
<ul>
|
|
24
|
+
<% if user.enabled? %>
|
|
25
|
+
<%= link_to glyph('remove'), disable_user_path(user), class: 'btn btn-danger btn-xs', title: 'Disable user' %>
|
|
26
|
+
<% else %>
|
|
27
|
+
<%= link_to glyph('plus'), enable_user_path(user), class: 'btn btn-primary btn-xs', method: :patch, title: 'Enable user' %>
|
|
28
|
+
<%= link_to glyph('trash'), user, method: :delete, class: 'btn btn-danger btn-xs', title: 'Delete user', data: { confirm: "Are you sure you want to permanently delete #{user.name}?" } %>
|
|
29
|
+
<% end %>
|
|
30
|
+
</ul>
|
|
31
|
+
<% end %>
|
|
32
|
+
</div>
|
|
33
|
+
<% end %>
|
|
34
|
+
<%= gravatar_for user, size: 50 %>
|
|
35
|
+
<%= link_to user.name, user %>
|
|
36
|
+
<p style="width: 35%;">
|
|
37
|
+
<% if user.enabled? %>
|
|
38
|
+
<% if user.failed_login_streak.count > 1 %>
|
|
39
|
+
Failed Login Streak: <%= user.failed_login_streak.count %><br />
|
|
40
|
+
Most Recent Attempt: <%= user.last_failed_login.created_at.in_time_zone.strftime('%m/%d/%Y') %> from <%= user.last_failed_login.ip_address %><br />
|
|
41
|
+
<% elsif user.failed_login_streak.count == 1 %>
|
|
42
|
+
Failed Login Attempt: <%= user.last_failed_login.created_at.in_time_zone.strftime('%m/%d/%Y') %> from <%= user.last_failed_login.ip_address %><br />
|
|
43
|
+
<% end %>
|
|
44
|
+
<% if user.last_successful_login %>
|
|
45
|
+
Most Recent Login: <%= user.last_successful_login.created_at.in_time_zone.strftime('%m/%d/%Y') %> from <%= user.last_successful_login.ip_address %>
|
|
46
|
+
<% else %>
|
|
47
|
+
Most Recent Login: Never
|
|
48
|
+
<% end %>
|
|
49
|
+
<% else %>
|
|
50
|
+
Disabled <%= user.disabled_at ? user.disabled_at.in_time_zone.strftime('%m/%d/%Y') : 'some time in the past' %> by <%= user.disabled_by ? user.disabled_by.name : 'Unknown User' %>.<br />
|
|
51
|
+
<%= user.disabled_reason %>
|
|
52
|
+
<% end %>
|
|
53
|
+
</p>
|
|
54
|
+
<p style="width: 35%;">
|
|
55
|
+
<%= render 'users/user_details_for_list' %>
|
|
56
|
+
</p>
|
|
57
|
+
</li>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<label>Email</label>
|
|
2
|
+
<p><%= user.email %></p>
|
|
3
|
+
|
|
4
|
+
<label>Account Created</label>
|
|
5
|
+
<p><%= user.created_at.in_time_zone.strftime('%Y-%m-%d %H:%M') %></p>
|
|
6
|
+
|
|
7
|
+
<label>Account Type</label>
|
|
8
|
+
<p><%= user.ldap? ? 'Directory' : 'Local' %></p>
|
|
9
|
+
|
|
10
|
+
<p>
|
|
11
|
+
This section can be filled in with whatever information you desire.
|
|
12
|
+
Simply create a <code>users/_user_details.html.erb</code> view and fill in your information.
|
|
13
|
+
Within this view you can access the user's details via the <code>user</code> variable.
|
|
14
|
+
</p>
|
|
15
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!-- Fill in this section by editing the 'users/_user_details_for_list.html.erb' view. -->
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<%= form_for(@user) do |f| %>
|
|
2
|
+
<%= text_form_group f, :name, field_maxlength: '100' %>
|
|
3
|
+
|
|
4
|
+
<%= text_form_group f, :email, field_type: 'email' %>
|
|
5
|
+
|
|
6
|
+
<%= text_form_group f, :password, field_type: 'password' %>
|
|
7
|
+
|
|
8
|
+
<%= text_form_group f, :password_confirmation, field_type: 'password' %>
|
|
9
|
+
|
|
10
|
+
<%= @user.new_record? ? add_recaptcha_challenge : '' %>
|
|
11
|
+
|
|
12
|
+
<%= f.submit current_user?(@user) ? (@user.new_record? ? 'Create my account' : 'Update my account') : 'Update account', class: 'btn btn-primary' %>
|
|
13
|
+
<% end %>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<% provide(:title, 'Disable user') %>
|
|
2
|
+
<%= error_summary @disable %>
|
|
3
|
+
<div class="row">
|
|
4
|
+
<div class="col-md-4 col-md-offset-4">
|
|
5
|
+
<div class="panel panel-default">
|
|
6
|
+
<div class="panel-heading">
|
|
7
|
+
<h4 class="panel-title">Disable <%= @user.name %></h4>
|
|
8
|
+
</div>
|
|
9
|
+
<div class="panel-body">
|
|
10
|
+
<%= form_for @disable, url: disable_user_path(@user), method: :patch do |f| %>
|
|
11
|
+
<%= textarea_form_group f, :reason %>
|
|
12
|
+
|
|
13
|
+
<%= f.submit 'Disable', class: 'btn btn-danger' %>
|
|
14
|
+
<%= link_to 'Cancel', users_path, class: 'btn btn-default' %>
|
|
15
|
+
<% end %>
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<% provide(:title, 'Edit profile') %>
|
|
2
|
+
<h1>Update <%= current_user?(@user) ? 'your' : '' %> profile</h1>
|
|
3
|
+
|
|
4
|
+
<%= error_summary(@user) %>
|
|
5
|
+
|
|
6
|
+
<div class="row">
|
|
7
|
+
<div class="col-md-4 col-md-offset-4">
|
|
8
|
+
<%= render 'user_form' %>
|
|
9
|
+
|
|
10
|
+
<div class="gravatar_edit">
|
|
11
|
+
<%= gravatar_for @user %><br />
|
|
12
|
+
<a href="https://gravatar.com/emails" target="_blank" title="Change your image">change</a>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<% provide(:title, @user.name) %>
|
|
2
|
+
|
|
3
|
+
<div class="row">
|
|
4
|
+
<h1>
|
|
5
|
+
<%= gravatar_for @user %>
|
|
6
|
+
<%= @user.name %>
|
|
7
|
+
</h1>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<div class="row">
|
|
11
|
+
<div class="col-md-6 col-md-offset-2">
|
|
12
|
+
<%= render 'users/user_details', user: @user %>
|
|
13
|
+
</div>
|
|
14
|
+
<div class="col-md-4">
|
|
15
|
+
<div class="panel panel-default">
|
|
16
|
+
<div class="panel-heading">
|
|
17
|
+
<h4 class="panel-title">Login History</h4>
|
|
18
|
+
</div>
|
|
19
|
+
<% hist = @user.login_histories.order(created_at: :desc).limit(10).to_a %>
|
|
20
|
+
<table class="table table-condensed">
|
|
21
|
+
<thead>
|
|
22
|
+
<tr>
|
|
23
|
+
<th>Date/Time</th>
|
|
24
|
+
<th>IP Address</th>
|
|
25
|
+
<th>Success</th>
|
|
26
|
+
<th>Notes</th>
|
|
27
|
+
</tr>
|
|
28
|
+
</thead>
|
|
29
|
+
<tbody>
|
|
30
|
+
<% if hist && hist.count > 0 %>
|
|
31
|
+
<% hist.each do |rec| %>
|
|
32
|
+
<tr>
|
|
33
|
+
<td><%= rec.created_at.in_time_zone.strftime("%Y-%m-%d %H:%M:%S") %></td>
|
|
34
|
+
<td><%= rec.ip_address %></td>
|
|
35
|
+
<td><%= check_if rec.successful %></td>
|
|
36
|
+
<td><%= rec.message %></td>
|
|
37
|
+
</tr>
|
|
38
|
+
<% end %>
|
|
39
|
+
<% else %>
|
|
40
|
+
<tr><td colspan="4" style="text-align: center;">No History</td></tr>
|
|
41
|
+
<% end %>
|
|
42
|
+
</tbody>
|
|
43
|
+
</table>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
data/bin/rails
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# This command will automatically be run when you run "rails" with Rails 4 gems installed from the root of your application.
|
|
3
|
+
|
|
4
|
+
ENGINE_ROOT = File.expand_path('../..', __FILE__)
|
|
5
|
+
ENGINE_PATH = File.expand_path('../../lib/barkest_core/engine', __FILE__)
|
|
6
|
+
|
|
7
|
+
# Set up gems listed in the Gemfile.
|
|
8
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
|
9
|
+
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
|
10
|
+
|
|
11
|
+
require 'rails/all'
|
|
12
|
+
require 'rails/engine/commands'
|
data/config/routes.rb
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
class CreateAccessGroups < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :access_groups do |t|
|
|
4
|
+
t.string :name, null: false, limit: 100
|
|
5
|
+
|
|
6
|
+
t.timestamps null: false
|
|
7
|
+
end
|
|
8
|
+
add_index :access_groups, :name, unique: true, name: :unique_access_groups
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
class CreateUsers < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :users do |t|
|
|
4
|
+
t.string :name, null: false, limit: 100
|
|
5
|
+
t.string :email, null: false, limit: 255
|
|
6
|
+
t.boolean :ldap, default: false
|
|
7
|
+
t.boolean :activated, default: false
|
|
8
|
+
t.boolean :enabled, default: true
|
|
9
|
+
t.boolean :system_admin, default: false
|
|
10
|
+
t.string :activation_digest
|
|
11
|
+
t.string :password_digest
|
|
12
|
+
t.string :remember_digest
|
|
13
|
+
t.string :reset_digest
|
|
14
|
+
t.datetime :activated_at
|
|
15
|
+
t.datetime :reset_sent_at
|
|
16
|
+
t.integer :disabled_by_id
|
|
17
|
+
t.datetime :disabled_at
|
|
18
|
+
t.string :disabled_reason, limit: 200
|
|
19
|
+
t.datetime :last_login
|
|
20
|
+
t.string :last_ip, limit: 64
|
|
21
|
+
|
|
22
|
+
t.timestamps null: false
|
|
23
|
+
end
|
|
24
|
+
add_index :users, :email, unique: true, name: :unique_users
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
class CreateUserLoginHistories < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :user_login_histories do |t|
|
|
4
|
+
t.integer :user_id, null: false, index: true
|
|
5
|
+
t.string :ip_address, null: false, limit: 64
|
|
6
|
+
t.boolean :successful
|
|
7
|
+
t.string :message, limit: 200
|
|
8
|
+
|
|
9
|
+
t.timestamps null: false
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
class CreateAccessGroupUserMembers < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :access_group_user_members do |t|
|
|
4
|
+
t.integer :group_id, null: false, index: true
|
|
5
|
+
t.integer :member_id, null: false, index: true
|
|
6
|
+
end
|
|
7
|
+
add_index :access_group_user_members, [:group_id, :member_id], unique: true, name: :unique_access_group_user_members
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
class CreateAccessGroupGroupMembers < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :access_group_group_members do |t|
|
|
4
|
+
t.integer :group_id, null: false, index: true
|
|
5
|
+
t.integer :member_id, null: false, index: true
|
|
6
|
+
end
|
|
7
|
+
add_index :access_group_group_members, [ :group_id, :member_id ], unique: true, name: :unique_access_group_group_members
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
class CreateLdapAccessGroups < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :ldap_access_groups do |t|
|
|
4
|
+
t.integer :group_id, null: false
|
|
5
|
+
t.string :name, null: false, limit: 200
|
|
6
|
+
|
|
7
|
+
t.timestamps null: false
|
|
8
|
+
end
|
|
9
|
+
add_index :ldap_access_groups, [:group_id, :name], unique: true, name: :unique_ldap_access_groups
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
class CreateSystemConfigs < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :system_configs do |t|
|
|
4
|
+
t.string :key, null: false, limit: 128
|
|
5
|
+
t.text :value
|
|
6
|
+
|
|
7
|
+
t.timestamps null: false
|
|
8
|
+
end
|
|
9
|
+
add_index :system_configs, :key, unique: true, name: :unique_system_configs
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Create the default admin if no other enabled admin exists.
|
|
2
|
+
User.ensure_admin_exists!
|
|
3
|
+
|
|
4
|
+
# For development purposes, we want to add a bunch of enabled users and a handful of disabled users.
|
|
5
|
+
if Rails.env.development?
|
|
6
|
+
admin_user = User.where(system_admin: true, enabled: true).first
|
|
7
|
+
unless User.where(enabled: true).count >= 100
|
|
8
|
+
print "Creating enabled test users...\n"
|
|
9
|
+
100.times do |n|
|
|
10
|
+
name = Faker::Name.name
|
|
11
|
+
email = "user-#{n+1}@barkerest.com"
|
|
12
|
+
password = 'password'
|
|
13
|
+
User.create!(
|
|
14
|
+
name: name,
|
|
15
|
+
email: email,
|
|
16
|
+
password: password,
|
|
17
|
+
password_confirmation: password,
|
|
18
|
+
activated: (n % 5 < 3),
|
|
19
|
+
activated_at: (n % 5 < 3) ? Time.zone.now : nil
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
unless User.where(enabled: false).count >= 5
|
|
24
|
+
print "Creating disabled test users...\n"
|
|
25
|
+
5.times do |n|
|
|
26
|
+
name = Faker::Name.name
|
|
27
|
+
email = "disabled-#{n+1}@barkerest.com"
|
|
28
|
+
password = 'password'
|
|
29
|
+
User.create!(
|
|
30
|
+
name: name,
|
|
31
|
+
email: email,
|
|
32
|
+
password: password,
|
|
33
|
+
password_confirmation: password,
|
|
34
|
+
enabled: false,
|
|
35
|
+
disabled_by_id: admin_user.id,
|
|
36
|
+
disabled_at: Time.zone.now - (n + 1).weeks,
|
|
37
|
+
disabled_reason: 'For testing'
|
|
38
|
+
)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
data/db/seeds.rb
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
##
|
|
2
|
+
# This class initializes the seeds for the database.
|
|
3
|
+
# To seed your database tables, create files in the db/seeds directory.
|
|
4
|
+
#
|
|
5
|
+
# Make sure the seeds can be reseeded safely.
|
|
6
|
+
# ie - After a migration we may want to add more seeded data, but previously seeded data should
|
|
7
|
+
# not be reprocessed.
|
|
8
|
+
#
|
|
9
|
+
# Seed files should be named as such #{library}_#{index}_#{desc} where #{index} is a number that
|
|
10
|
+
# can be sorted to ensure the order is processed correctly. For instance, you would want to use
|
|
11
|
+
# a 2-digit number ('00' => '99') if you have more than 10 seed files to process.
|
|
12
|
+
# "barkest_core_01_create_users" => { :library => 'barkest_core', :index => 1, :desc => 'create users' }
|
|
13
|
+
#
|
|
14
|
+
class Seeds
|
|
15
|
+
# :nodoc:
|
|
16
|
+
def self.process
|
|
17
|
+
list = []
|
|
18
|
+
BarkestCore.send(:db_seed_path_registry) { |path| list += Dir.glob(path) }
|
|
19
|
+
list.sort do |a,b|
|
|
20
|
+
a = File.basename(a)
|
|
21
|
+
b = File.basename(b)
|
|
22
|
+
a_core = (a.index('barkest_core') == 0)
|
|
23
|
+
b_core = (b.index('barkest_core') == 0)
|
|
24
|
+
if a_core && b_core
|
|
25
|
+
a <=> b
|
|
26
|
+
elsif a_core
|
|
27
|
+
-1
|
|
28
|
+
elsif b_core
|
|
29
|
+
1
|
|
30
|
+
else
|
|
31
|
+
a <=> b
|
|
32
|
+
end
|
|
33
|
+
end.each do |seed_file|
|
|
34
|
+
file_name = File.basename(seed_file)[0...-3]
|
|
35
|
+
data = /^(?<library>[^\d_][^_]*(_[^\d_][^_]*)*)_(?<index>\d+)_(?<desc>.*)$/.match(file_name)
|
|
36
|
+
label_prefix = '== ' +
|
|
37
|
+
if data
|
|
38
|
+
data['library'].camelcase + ' (' + data['desc'].humanize + ')'
|
|
39
|
+
else
|
|
40
|
+
file_name.camelcase
|
|
41
|
+
end
|
|
42
|
+
label = label_prefix + ': seeding '
|
|
43
|
+
puts label + ('=' * (79 - label.length))
|
|
44
|
+
start_time = Time.now
|
|
45
|
+
require seed_file
|
|
46
|
+
elapsed_time = Time.now - start_time
|
|
47
|
+
label = label_prefix + sprintf(': seeded (%0.4fs) ', elapsed_time)
|
|
48
|
+
puts label + ('=' * (79 - label.length))
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
Seeds.process
|