mirror of
https://github.com/internetee/registry.git
synced 2025-07-02 09:13:36 +02:00
Merge branch 'master' of github.com:domify/registry
This commit is contained in:
commit
17bf5c373e
9 changed files with 30 additions and 11 deletions
|
@ -18,7 +18,7 @@ class Epp::SessionsController < EppController
|
||||||
@api_user = ApiUser.find_by(login_params)
|
@api_user = ApiUser.find_by(login_params)
|
||||||
end
|
end
|
||||||
|
|
||||||
if @api_user.try(:active) && cert_valid && ip_white?
|
if @api_user.try(:active) && cert_valid && ip_white? && connection_limit_ok?
|
||||||
if parsed_frame.css('newPW').first
|
if parsed_frame.css('newPW').first
|
||||||
unless @api_user.update(password: parsed_frame.css('newPW').first.text)
|
unless @api_user.update(password: parsed_frame.css('newPW').first.text)
|
||||||
response.headers['X-EPP-Returncode'] = '2200'
|
response.headers['X-EPP-Returncode'] = '2200'
|
||||||
|
@ -27,6 +27,7 @@ class Epp::SessionsController < EppController
|
||||||
end
|
end
|
||||||
|
|
||||||
epp_session[:api_user_id] = @api_user.id
|
epp_session[:api_user_id] = @api_user.id
|
||||||
|
epp_session.update_column(:registrar_id, @api_user.registrar_id)
|
||||||
render_epp_response('login_success')
|
render_epp_response('login_success')
|
||||||
else
|
else
|
||||||
response.headers['X-EPP-Returncode'] = '2200'
|
response.headers['X-EPP-Returncode'] = '2200'
|
||||||
|
@ -45,12 +46,24 @@ class Epp::SessionsController < EppController
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def connection_limit_ok?
|
||||||
|
c = EppSession.where(
|
||||||
|
'registrar_id = ? AND updated_at >= ?', @api_user.registrar_id, Time.zone.now - 5.minutes
|
||||||
|
).count
|
||||||
|
|
||||||
|
if c >= 4
|
||||||
|
@msg = t('connection_limit_reached')
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
# rubocop: enable Metrics/PerceivedComplexity
|
# rubocop: enable Metrics/PerceivedComplexity
|
||||||
# rubocop: enable Metrics/CyclomaticComplexity
|
# rubocop: enable Metrics/CyclomaticComplexity
|
||||||
|
|
||||||
def logout
|
def logout
|
||||||
@api_user = current_user # cache current_user for logging
|
@api_user = current_user # cache current_user for logging
|
||||||
epp_session[:api_user_id] = nil
|
epp_session.destroy
|
||||||
response.headers['X-EPP-Returncode'] = '1500'
|
response.headers['X-EPP-Returncode'] = '1500'
|
||||||
render_epp_response('logout')
|
render_epp_response('logout')
|
||||||
end
|
end
|
||||||
|
|
|
@ -147,7 +147,7 @@ class Registrar::SessionsController < Devise::SessionsController
|
||||||
def check_ip
|
def check_ip
|
||||||
return if Rails.env.development?
|
return if Rails.env.development?
|
||||||
return if WhiteIp.registrar_ip_white?(request.ip)
|
return if WhiteIp.registrar_ip_white?(request.ip)
|
||||||
render text: t('ip_is_not_whitelisted') and return
|
render text: t('access_denied') and return
|
||||||
end
|
end
|
||||||
|
|
||||||
def role_base_root_url(user)
|
def role_base_root_url(user)
|
||||||
|
|
|
@ -18,7 +18,7 @@ class RegistrarController < ApplicationController
|
||||||
end
|
end
|
||||||
return if Rails.env.development?
|
return if Rails.env.development?
|
||||||
return if current_user.registrar.registrar_ip_white?(request.ip)
|
return if current_user.registrar.registrar_ip_white?(request.ip)
|
||||||
flash[:alert] = t('ip_is_not_whitelisted')
|
flash[:alert] = t('access_denied')
|
||||||
sign_out(current_user)
|
sign_out(current_user)
|
||||||
redirect_to registrar_login_path and return
|
redirect_to registrar_login_path and return
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
class EppSession < ActiveRecord::Base
|
class EppSession < ActiveRecord::Base
|
||||||
before_save :marshal_data!
|
before_save :marshal_data!
|
||||||
|
|
||||||
|
belongs_to :registrar
|
||||||
# rubocop: disable Rails/ReadWriteAttribute
|
# rubocop: disable Rails/ReadWriteAttribute
|
||||||
# Turned back to read_attribute, thus in Rails 4
|
# Turned back to read_attribute, thus in Rails 4
|
||||||
# there is differences between self[:data] and read_attribute.
|
# there is differences between self[:data] and read_attribute.
|
||||||
def data
|
def data
|
||||||
@data ||= self.class.unmarshal(read_attribute(:data)) || {}
|
@data ||= self.class.unmarshal(read_attribute(:data)) || {}
|
||||||
|
|
|
@ -797,3 +797,5 @@ en:
|
||||||
registrant_domain_verification_rejected_failed: 'Something went wrong'
|
registrant_domain_verification_rejected_failed: 'Something went wrong'
|
||||||
ip_is_not_whitelisted: 'IP is not whitelisted'
|
ip_is_not_whitelisted: 'IP is not whitelisted'
|
||||||
no_permission: 'No permission'
|
no_permission: 'No permission'
|
||||||
|
access_denied: 'Access denied'
|
||||||
|
connection_limit_reached: 'Connection limit reached'
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
class AddRegistrarIdToEppSession < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :epp_sessions, :registrar_id, :integer
|
||||||
|
end
|
||||||
|
end
|
|
@ -317,6 +317,7 @@ ActiveRecord::Schema.define(version: 20150520163237) do
|
||||||
t.text "data"
|
t.text "data"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
|
t.integer "registrar_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "epp_sessions", ["session_id"], name: "index_epp_sessions_on_session_id", unique: true, using: :btree
|
add_index "epp_sessions", ["session_id"], name: "index_epp_sessions_on_session_id", unique: true, using: :btree
|
||||||
|
|
|
@ -44,7 +44,6 @@ ApiUser.where(
|
||||||
admin1 = {
|
admin1 = {
|
||||||
username: 'user1',
|
username: 'user1',
|
||||||
password: 'testtest',
|
password: 'testtest',
|
||||||
password_confirmation: 'testtest',
|
|
||||||
email: 'user1@example.ee',
|
email: 'user1@example.ee',
|
||||||
identity_code: '37810013855',
|
identity_code: '37810013855',
|
||||||
country_code: 'EE'
|
country_code: 'EE'
|
||||||
|
@ -52,7 +51,6 @@ admin1 = {
|
||||||
admin2 = {
|
admin2 = {
|
||||||
username: 'user2',
|
username: 'user2',
|
||||||
password: 'testtest',
|
password: 'testtest',
|
||||||
password_confirmation: 'testtest',
|
|
||||||
email: 'user2@example.ee',
|
email: 'user2@example.ee',
|
||||||
identity_code: '37810010085',
|
identity_code: '37810010085',
|
||||||
country_code: 'EE'
|
country_code: 'EE'
|
||||||
|
@ -60,7 +58,6 @@ admin2 = {
|
||||||
admin3 = {
|
admin3 = {
|
||||||
username: 'user3',
|
username: 'user3',
|
||||||
password: 'testtest',
|
password: 'testtest',
|
||||||
password_confirmation: 'testtest',
|
|
||||||
email: 'user3@example.ee',
|
email: 'user3@example.ee',
|
||||||
identity_code: '37810010727',
|
identity_code: '37810010727',
|
||||||
country_code: 'EE'
|
country_code: 'EE'
|
||||||
|
@ -69,7 +66,7 @@ admin3 = {
|
||||||
[admin1, admin2, admin3].each do |at|
|
[admin1, admin2, admin3].each do |at|
|
||||||
admin = AdminUser.where(at)
|
admin = AdminUser.where(at)
|
||||||
next if admin.present?
|
next if admin.present?
|
||||||
admin = AdminUser.new(at)
|
admin = AdminUser.new(at.merge({ password_confirmation: 'testtest' }))
|
||||||
admin.roles = ['admin']
|
admin.roles = ['admin']
|
||||||
admin.save
|
admin.save
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,7 +5,7 @@ feature 'Sessions', type: :feature do
|
||||||
it 'should not see login page' do
|
it 'should not see login page' do
|
||||||
WhiteIp.destroy_all
|
WhiteIp.destroy_all
|
||||||
visit registrar_login_path
|
visit registrar_login_path
|
||||||
page.should have_text('IP is not whitelisted')
|
page.should have_text('Access denied')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should see log in' do
|
it 'should see log in' do
|
||||||
|
@ -23,7 +23,7 @@ feature 'Sessions', type: :feature do
|
||||||
fill_in 'depp_user_tag', with: @api_user_invalid_ip.username
|
fill_in 'depp_user_tag', with: @api_user_invalid_ip.username
|
||||||
fill_in 'depp_user_password', with: @api_user_invalid_ip.password
|
fill_in 'depp_user_password', with: @api_user_invalid_ip.password
|
||||||
click_button 'Log in'
|
click_button 'Log in'
|
||||||
page.should have_text('IP is not whitelisted')
|
page.should have_text('Access denied')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue