Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 351b8348c9 | |||
| 2ea08ef4dd | |||
| 58429c5e8b | |||
| 96307af509 | |||
| f3a2b08359 | |||
| 86de85ad91 | |||
| f3d9e88ea2 |
@@ -1,26 +1,18 @@
|
|||||||
class UsersController < ApplicationController
|
class UsersController < ApplicationController
|
||||||
def create
|
def create
|
||||||
return head :unprocessable_entity if request.remote_ip.blank?
|
user = User.create!(inheritance_code: SecureRandom.uuid, role: 'guest')
|
||||||
|
|
||||||
user = nil
|
|
||||||
|
|
||||||
User.transaction do
|
|
||||||
user = User.create!(inheritance_code: SecureRandom.uuid, role: :guest)
|
|
||||||
attach_ip_address!(user)
|
|
||||||
end
|
|
||||||
|
|
||||||
render json: { code: user.inheritance_code,
|
render json: { code: user.inheritance_code,
|
||||||
user: user.slice(:id, :name, :inheritance_code, :role) },
|
user: user.slice(:id, :name, :inheritance_code, :role) }
|
||||||
status: :created
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def verify
|
def verify
|
||||||
|
ip_bin = IPAddr.new(request.remote_ip).hton
|
||||||
|
ip_address = IpAddress.find_or_create_by!(ip_address: ip_bin)
|
||||||
|
|
||||||
user = User.find_by(inheritance_code: params[:code])
|
user = User.find_by(inheritance_code: params[:code])
|
||||||
return render json: { valid: false } unless user
|
return render json: { valid: false } unless user
|
||||||
|
|
||||||
return head :unprocessable_entity if request.remote_ip.blank?
|
UserIp.find_or_create_by!(user:, ip_address:)
|
||||||
|
|
||||||
attach_ip_address!(user)
|
|
||||||
|
|
||||||
render json: { valid: true, user: user.slice(:id, :name, :inheritance_code, :role) }
|
render json: { valid: true, user: user.slice(:id, :name, :inheritance_code, :role) }
|
||||||
end
|
end
|
||||||
@@ -49,18 +41,9 @@ class UsersController < ApplicationController
|
|||||||
return head :bad_request if name.blank?
|
return head :bad_request if name.blank?
|
||||||
|
|
||||||
if user.update(name:)
|
if user.update(name:)
|
||||||
render json: user.slice(:id, :name, :inheritance_code, :role), status: :ok
|
render json: user.slice(:id, :name, :inheritance_code, :role), status: :created
|
||||||
else
|
else
|
||||||
render json: user.errors, status: :unprocessable_entity
|
render json: user.errors, status: :unprocessable_entity
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def attach_ip_address! user
|
|
||||||
ip_bin = IPAddr.new(request.remote_ip).hton
|
|
||||||
ip_address = IpAddress.create_or_find_by!(ip_address: ip_bin)
|
|
||||||
|
|
||||||
UserIp.create_or_find_by!(user:, ip_address:)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,19 +1,12 @@
|
|||||||
env :PATH, '/root/.rbenv/shims:/root/.rbenv/bin:/usr/local/bin:/usr/bin:/bin'
|
env :PATH, '/root/.rbenv/shims:/root/.rbenv/bin:/usr/local/bin:/usr/bin:/bin'
|
||||||
|
|
||||||
set :path, '/var/www/btrc-hub/backend'
|
|
||||||
set :environment, 'production'
|
|
||||||
set :output, standard: '/var/log/btrc_hub_nico_sync.log',
|
set :output, standard: '/var/log/btrc_hub_nico_sync.log',
|
||||||
error: '/var/log/btrc_hub_nico_sync_err.log'
|
error: '/var/log/btrc_hub_nico_sync_err.log'
|
||||||
|
|
||||||
job_type :rake,
|
every 1.day, at: '3:00 pm' do
|
||||||
'cd :path && set -a && . /etc/btrc-hub/backend.env && set +a && ' \
|
|
||||||
':environment_variable=:environment bundle exec rake :task --silent :output'
|
|
||||||
|
|
||||||
every 1.day, at: '11:00 am' do
|
|
||||||
rake 'nico:sync', environment: 'production'
|
rake 'nico:sync', environment: 'production'
|
||||||
end
|
end
|
||||||
|
|
||||||
every 1.day, at: '0:00 am' do
|
every 1.day, at: '0:00 am' do
|
||||||
rake 'post_similarity:calc', environment: 'production'
|
rake 'post_similarity:calc', environment: 'production'
|
||||||
rake 'tag_similarity:calc', environment: 'production'
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
require "rails_helper"
|
require "rails_helper"
|
||||||
|
|
||||||
|
|
||||||
RSpec.describe "Users", type: :request do
|
RSpec.describe "Users", type: :request do
|
||||||
describe "POST /users" do
|
describe "POST /users" do
|
||||||
it "creates guest user and returns code" do
|
it "creates guest user and returns code" do
|
||||||
post "/users"
|
post "/users"
|
||||||
expect(response).to have_http_status(:created)
|
expect(response).to have_http_status(:ok)
|
||||||
expect(json["code"]).to be_present
|
expect(json["code"]).to be_present
|
||||||
expect(json["user"]["role"]).to eq("guest")
|
expect(json["user"]["role"]).to eq("guest")
|
||||||
end
|
end
|
||||||
@@ -37,7 +38,7 @@ RSpec.describe "Users", type: :request do
|
|||||||
sign_in_as(user)
|
sign_in_as(user)
|
||||||
put "/users/#{user.id}", params: { name: "new-name" }
|
put "/users/#{user.id}", params: { name: "new-name" }
|
||||||
|
|
||||||
expect(response).to have_http_status(:ok)
|
expect(response).to have_http_status(:created)
|
||||||
expect(json["id"]).to eq(user.id)
|
expect(json["id"]).to eq(user.id)
|
||||||
expect(json["name"]).to eq("new-name")
|
expect(json["name"]).to eq("new-name")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user