From 3a62fc9bda90c5b530caf454f2d60d1c3a5b5929 Mon Sep 17 00:00:00 2001 From: iagirre Date: Fri, 23 Mar 2018 09:17:48 +0100 Subject: [PATCH] Add UI to let manager change users password A submenu has been added to the side menu's 'Edit user account' option. This submenu has two options: - Reset password via email: an email is send so that the user can change their password by themselves. - Reset password manually: the manager has to write the password manually (or generate a random one). The passwords generated by the random password generator don't contain characters like $ or !. It uses some capital letters, some other lower case letters and some numbers. Ambiguous characters like 1, l, I has been removed. --- app/assets/javascripts/application.js | 2 ++ app/assets/javascripts/managers.js.coffee | 25 +++++++++++++++++++ app/assets/stylesheets/admin.scss | 4 +++ app/views/management/_menu.html.erb | 20 +++++++++++---- .../account/edit_password_email.html.erb | 3 +++ .../account/edit_password_manually.html.erb | 20 +++++++++++++++ .../account/print_password.html.erb | 21 ++++++++++++++++ config/locales/en/management.yml | 15 +++++++++++ config/locales/es/management.yml | 15 +++++++++++ 9 files changed, 120 insertions(+), 5 deletions(-) create mode 100644 app/assets/javascripts/managers.js.coffee create mode 100644 app/views/management/account/edit_password_email.html.erb create mode 100644 app/views/management/account/edit_password_manually.html.erb create mode 100644 app/views/management/account/print_password.html.erb diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index b29eeecb0..7a110aa18 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -76,6 +76,7 @@ //= require table_sortable //= require investment_report_alert //= require send_newsletter_alert +//= require managers var initialize_modules = function() { App.Comments.initialize(); @@ -119,6 +120,7 @@ var initialize_modules = function() { App.TableSortable.initialize(); App.InvestmentReportAlert.initialize(); App.SendNewsletterAlert.initialize(); + App.Managers.initialize(); }; $(function(){ diff --git a/app/assets/javascripts/managers.js.coffee b/app/assets/javascripts/managers.js.coffee new file mode 100644 index 000000000..7d4d702a1 --- /dev/null +++ b/app/assets/javascripts/managers.js.coffee @@ -0,0 +1,25 @@ +App.Managers = + + generatePassword: -> + chars = 'aAbcdeEfghiJkmnpqrstuUvwxyz23456789' + pass = '' + x = 0 + while x < 12 + i = Math.floor(Math.random() * chars.length) + pass += chars.charAt(i) + x++ + return pass + + togglePassword: (type) -> + $('#user_password').prop 'type', type + + initialize: -> + $(".generate-random-value").on "click", (event) -> + password = App.Managers.generatePassword() + $('#user_password').val(password) + + $(".show-password").on "click", (event) -> + if $("#user_password").is("input[type='password']") + App.Managers.togglePassword('text') + else + App.Managers.togglePassword('password') diff --git a/app/assets/stylesheets/admin.scss b/app/assets/stylesheets/admin.scss index 827ba0c8b..5538a2c59 100644 --- a/app/assets/stylesheets/admin.scss +++ b/app/assets/stylesheets/admin.scss @@ -278,6 +278,10 @@ $sidebar-active: #f4fcd0; cursor: pointer; } +.no-margin-bottom { + margin-bottom: 0 !important; +} + // 02. Sidebar // ----------- diff --git a/app/views/management/_menu.html.erb b/app/views/management/_menu.html.erb index b01bbaf0c..75e832a24 100644 --- a/app/views/management/_menu.html.erb +++ b/app/views/management/_menu.html.erb @@ -1,5 +1,5 @@
-