diff --git a/Gemfile b/Gemfile index 4cb34da..5276ff7 100644 --- a/Gemfile +++ b/Gemfile @@ -32,13 +32,12 @@ gem 'jbuilder', '~> 2.5' # Reduces boot times through caching; required in config/boot.rb gem 'bootsnap', '>= 1.1.0', require: false +# Faker is used to easily generate fake data: names, addresses, phone numbers, etc. +gem 'faker' # Client library for Amazon's Simple Email Service's REST API gem 'fast_jsonapi', '~> 1.1', '>= 1.1.1' -# Random name generator -gem 'random_name_generator' - # Pagination library for Rails, Sinatra, Merb, DataMapper, and more gem 'will_paginate', '~> 3.1.0' diff --git a/Gemfile.lock b/Gemfile.lock index 8c07baa..62c6b79 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -53,6 +53,8 @@ GEM crass (1.0.6) erubi (1.10.0) execjs (2.7.0) + faker (2.15.1) + i18n (>= 1.6, < 2) fast_jsonapi (1.5) activesupport (>= 4.2) ffi (1.13.1) @@ -118,7 +120,6 @@ GEM thor (>= 0.19.0, < 2.0) rainbow (3.0.0) rake (13.0.1) - random_name_generator (1.2.1) rb-fsevent (0.10.4) rb-inotify (0.10.1) ffi (~> 1.0) @@ -190,13 +191,13 @@ PLATFORMS DEPENDENCIES bootsnap (>= 1.1.0) byebug + faker fast_jsonapi (~> 1.1, >= 1.1.1) jbuilder (~> 2.5) listen (>= 3.0.5, < 3.2) pg (>= 0.18, < 2.0) puma (~> 3.11) rails (~> 5.2.4, >= 5.2.4.4) - random_name_generator redis (~> 3.3, >= 3.3.1) rubocop sass-rails (~> 5.0) diff --git a/app/controllers/api/v1/users_controller.rb b/app/controllers/api/v1/users_controller.rb index 0dd712a..f2e7c6c 100644 --- a/app/controllers/api/v1/users_controller.rb +++ b/app/controllers/api/v1/users_controller.rb @@ -1,5 +1,3 @@ -require 'random_name_generator' - module Api module V1 class UsersController < ApplicationController @@ -37,31 +35,31 @@ def user_params end def authenticate! - current_user = User.find_by(ip_address: ip_addr, device: device_name) + current_user = User.find_by(ip_address: get_ip_address, device: get_device_name) if current_user.present? current_user.refresh_activity else - current_user = User.create(name: user_name, device: device_name, ip_address: ip_addr) + current_user = User.create(name: get_user_name, device: get_device_name, ip_address: get_ip_address) end session['user_id'] = current_user.id end - def device_name + def get_user_name + Faker::Movies::LordOfTheRings.character + end + + def get_device_name agent = request.user_agent return 'tablet' if agent =~ /(tablet|ipad)|(android(?!.*mobile))/i return 'mobile' if agent =~ /Mobile/ return 'desktop' end - def ip_addr + def get_ip_address request.remote_ip == '::1' ? '192.168.0.1' : request.remote_ip.to_s end - def user_name - RandomNameGenerator.new(RandomNameGenerator::GOBLIN).compose(2) - end - end end end diff --git a/app/javascript/components/Users/User.js b/app/javascript/components/Users/User.js index 163dfce..d25efee 100644 --- a/app/javascript/components/Users/User.js +++ b/app/javascript/components/Users/User.js @@ -51,7 +51,7 @@ const User = (props) =>{ const {name, ip_address, device, emoji, last_seen_at, visits, online} = props.attributes.attributes; const time_in_minutes = Math.round((date_in_seconds - last_seen_at)/60); - const status = online ? `Online` : `Last see ${get_time_in_words(time_in_minutes, last_seen_at)} ago`; + const status = online ? `Online` : `Last seen ${get_time_in_words(time_in_minutes, last_seen_at)} ago`; const link_border = online ? "#8eff00" : "#efefef"; const card_class = online ? 'active' : ''; return ( @@ -82,8 +82,8 @@ function get_time_in_words(time, last_seen_at){ } } -function change_ip(string){ - return string.split(".") +function change_ip(ip_address){ + return ip_address.split(".") .map((e,i) => i<3 ? e : e.replace(/[0-9]/g,"*")) .join(".") } diff --git a/db/seeds.rb b/db/seeds.rb index 0c0e141..c49c753 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -1,10 +1,10 @@ -User.create([{ name: RandomNameGenerator.new(RandomNameGenerator::GOBLIN).compose(2), +User.create([{ name: Faker::Movies::LordOfTheRings.character, ip_address: '192.168.0.1', device: 'iphone' - }, { name: RandomNameGenerator.new(RandomNameGenerator::GOBLIN).compose(2), - ip_address: '192.168.0.2', + }, { name: Faker::Movies::LordOfTheRings.character, + ip_address: '2.468.123.21', device: 'android' - }, { name: RandomNameGenerator.new(RandomNameGenerator::GOBLIN).compose(2), - ip_address: '192.168.0.3', + }, { name: Faker::Movies::LordOfTheRings.character, + ip_address: '92.8.0.123', device: 'unknown' } ])