From d800b55ac65aa3a17fbfa8c83a24b953eae49328 Mon Sep 17 00:00:00 2001 From: Sojan Jose Date: Mon, 20 Jul 2020 18:28:14 +0530 Subject: [PATCH] Chore: Add display name to the user (#1067) * Chore: Adding browser info to web widget triggered event fixes: #970 * Chore: Rename nickname to display name references: #972 * Chore: Change nickname in code * chore: fix errors * Chore: update nginx config fixes: #1057 * Chore: Fix specs --- app/controllers/api/v1/widget/base_controller.rb | 10 ++++++++++ app/controllers/api/v1/widget/events_controller.rb | 3 ++- app/controllers/api/v1/widget/messages_controller.rb | 10 ---------- app/dashboards/user_dashboard.rb | 6 +++--- app/models/user.rb | 6 +++++- app/views/api/v1/models/_user.json.jbuilder | 2 +- .../20200719171437_rename_nick_name_to_display_name.rb | 5 +++++ db/schema.rb | 4 ++-- docs/deployment/production/linux-vm.md | 1 + .../api/v1/widget/events_controller_spec.rb | 2 +- spec/factories/users.rb | 4 ++-- swagger/definitions/resource/user.yml | 2 +- swagger/swagger.json | 2 +- 13 files changed, 34 insertions(+), 23 deletions(-) create mode 100644 db/migrate/20200719171437_rename_nick_name_to_display_name.rb diff --git a/app/controllers/api/v1/widget/base_controller.rb b/app/controllers/api/v1/widget/base_controller.rb index 45cf3fc4f..4aa2ec138 100644 --- a/app/controllers/api/v1/widget/base_controller.rb +++ b/app/controllers/api/v1/widget/base_controller.rb @@ -30,4 +30,14 @@ class Api::V1::Widget::BaseController < ApplicationController ) @contact = @contact_inbox.contact end + + def browser_params + { + browser_name: browser.name, + browser_version: browser.full_version, + device_name: browser.device.name, + platform_name: browser.platform.name, + platform_version: browser.platform.version + } + end end diff --git a/app/controllers/api/v1/widget/events_controller.rb b/app/controllers/api/v1/widget/events_controller.rb index ea5326d6f..374541a10 100644 --- a/app/controllers/api/v1/widget/events_controller.rb +++ b/app/controllers/api/v1/widget/events_controller.rb @@ -11,7 +11,8 @@ class Api::V1::Widget::EventsController < Api::V1::Widget::BaseController def event_info { widget_language: params[:locale], - browser_language: browser.accept_language.first&.code + browser_language: browser.accept_language.first&.code, + browser: browser_params } end diff --git a/app/controllers/api/v1/widget/messages_controller.rb b/app/controllers/api/v1/widget/messages_controller.rb index 42cd313e2..afc0d71b2 100644 --- a/app/controllers/api/v1/widget/messages_controller.rb +++ b/app/controllers/api/v1/widget/messages_controller.rb @@ -66,16 +66,6 @@ class Api::V1::Widget::MessagesController < Api::V1::Widget::BaseController } end - def browser_params - { - browser_name: browser.name, - browser_version: browser.full_version, - device_name: browser.device.name, - platform_name: browser.platform.name, - platform_version: browser.platform.version - } - end - def timestamp_params { timestamp: permitted_params[:message][:timestamp] diff --git a/app/dashboards/user_dashboard.rb b/app/dashboards/user_dashboard.rb index 8ed132c61..f34f48257 100644 --- a/app/dashboards/user_dashboard.rb +++ b/app/dashboards/user_dashboard.rb @@ -24,7 +24,7 @@ class UserDashboard < Administrate::BaseDashboard confirmation_sent_at: Field::DateTime, unconfirmed_email: Field::String, name: Field::String, - nickname: Field::String, + display_name: Field::String, email: Field::String, tokens: Field::String.with_options(searchable: false), created_at: Field::DateTime, @@ -53,7 +53,7 @@ class UserDashboard < Administrate::BaseDashboard avatar_url unconfirmed_email name - nickname + display_name email created_at updated_at @@ -65,7 +65,7 @@ class UserDashboard < Administrate::BaseDashboard # on the model's form (`new` and `edit`) pages. FORM_ATTRIBUTES = %i[ name - nickname + display_name email password ].freeze diff --git a/app/models/user.rb b/app/models/user.rb index 6a1c53eed..577fba7b4 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -9,12 +9,12 @@ # confirmed_at :datetime # current_sign_in_at :datetime # current_sign_in_ip :string +# display_name :string # email :string # encrypted_password :string default(""), not null # last_sign_in_at :datetime # last_sign_in_ip :string # name :string not null -# nickname :string # provider :string default("email"), not null # pubsub_token :string # remember_created_at :datetime @@ -96,6 +96,10 @@ class User < ApplicationRecord account_users.find_by(account_id: Current.account.id) if Current.account end + def display_name + self[:display_name].presence || name + end + def account current_account_user&.account end diff --git a/app/views/api/v1/models/_user.json.jbuilder b/app/views/api/v1/models/_user.json.jbuilder index 3efb6470b..6caf4d4bb 100644 --- a/app/views/api/v1/models/_user.json.jbuilder +++ b/app/views/api/v1/models/_user.json.jbuilder @@ -2,7 +2,7 @@ json.id resource.id json.provider resource.provider json.uid resource.uid json.name resource.name -json.nickname resource.nickname +json.display_name resource.display_name json.email resource.email json.account_id resource.active_account_user&.account_id json.pubsub_token resource.pubsub_token diff --git a/db/migrate/20200719171437_rename_nick_name_to_display_name.rb b/db/migrate/20200719171437_rename_nick_name_to_display_name.rb new file mode 100644 index 000000000..35a53a3c1 --- /dev/null +++ b/db/migrate/20200719171437_rename_nick_name_to_display_name.rb @@ -0,0 +1,5 @@ +class RenameNickNameToDisplayName < ActiveRecord::Migration[6.0] + def change + rename_column :users, :nickname, :display_name + end +end diff --git a/db/schema.rb b/db/schema.rb index b5f354e5d..c28dc946c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_07_09_145000) do +ActiveRecord::Schema.define(version: 2020_07_19_171437) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" @@ -407,7 +407,7 @@ ActiveRecord::Schema.define(version: 2020_07_09_145000) do t.datetime "confirmation_sent_at" t.string "unconfirmed_email" t.string "name", null: false - t.string "nickname" + t.string "display_name" t.string "email" t.json "tokens" t.datetime "created_at", null: false diff --git a/docs/deployment/production/linux-vm.md b/docs/deployment/production/linux-vm.md index 79e940074..3ae5da258 100644 --- a/docs/deployment/production/linux-vm.md +++ b/docs/deployment/production/linux-vm.md @@ -32,6 +32,7 @@ server { server_name yourdomain.com; # where rails app is running set $upstream 127.0.0.1:3000; + underscores_in_headers on; # Here we define the web-root for our SSL proof location /.well-known { diff --git a/spec/controllers/api/v1/widget/events_controller_spec.rb b/spec/controllers/api/v1/widget/events_controller_spec.rb index a1b8e4af9..e2c45ab6e 100644 --- a/spec/controllers/api/v1/widget/events_controller_spec.rb +++ b/spec/controllers/api/v1/widget/events_controller_spec.rb @@ -32,7 +32,7 @@ RSpec.describe '/api/v1/widget/events', type: :request do expect(response).to have_http_status(:success) expect(Rails.configuration.dispatcher).to have_received(:dispatch) .with(params[:name], anything, contact_inbox: contact_inbox, - event_info: { browser_language: nil, widget_language: nil }) + event_info: { browser_language: nil, widget_language: nil, browser: anything }) end end end diff --git a/spec/factories/users.rb b/spec/factories/users.rb index 5112a8a51..bbe1e6acd 100644 --- a/spec/factories/users.rb +++ b/spec/factories/users.rb @@ -12,8 +12,8 @@ FactoryBot.define do provider { 'email' } uid { SecureRandom.uuid } name { Faker::Name.name } - nickname { Faker::Name.first_name } - email { nickname + "@#{SecureRandom.uuid}.com" } + display_name { Faker::Name.first_name } + email { display_name + "@#{SecureRandom.uuid}.com" } password { 'password' } after(:build) do |user, evaluator| diff --git a/swagger/definitions/resource/user.yml b/swagger/definitions/resource/user.yml index 049e2478e..ecdcbe30a 100644 --- a/swagger/definitions/resource/user.yml +++ b/swagger/definitions/resource/user.yml @@ -15,5 +15,5 @@ properties: enum: ['agent', 'administrator'] confirmed: type: boolean - nickname: + display_name: type: string diff --git a/swagger/swagger.json b/swagger/swagger.json index 2ac8cc1f2..9fc9a31df 100644 --- a/swagger/swagger.json +++ b/swagger/swagger.json @@ -1087,7 +1087,7 @@ "confirmed": { "type": "boolean" }, - "nickname": { + "display_name": { "type": "string" } }