Merge pull request #250 from internetee/registry-240

Registry 240
This commit is contained in:
Timo Võhmar 2016-11-17 12:26:09 +02:00 committed by GitHub
commit 0dcecbcd1f
37 changed files with 240 additions and 60 deletions

View file

@ -101,12 +101,6 @@ class Registrar::SessionsController < Devise::SessionsController
endpoint = "#{ENV['sk_digi_doc_service_endpoint']}"
client = Digidoc::Client.new(endpoint)
if Rails.env.test? && phone == "123"
@user = ApiUser.find_by(identity_code: "14212128025")
sign_in(@user, event: :authentication)
return redirect_to registrar_root_url
end
# country_codes = {'+372' => 'EST'}
phone.gsub!('+372', '')
response = client.authenticate(

View file

@ -9,7 +9,7 @@
.row
.col-md-12
.form-group
= f.label t(:registrar)
= f.label t(:registrar_name)
= f.select :account_registrar_id_in, Registrar.all.map { |x| [x, x.id] }, {}, class: 'form-control js-combobox', placeholder: t(:choose), multiple: true
.row
.col-md-6
@ -56,7 +56,7 @@
%thead
%tr
%th{class: 'col-xs-2'}
= sort_link(@q, 'account_registrar_code', t(:registrar))
= sort_link(@q, 'account_registrar_code', t(:registrar_name))
%th{class: 'col-xs-3'}
= sort_link(@q, 'description')
%th{class: 'col-xs-2'}

View file

@ -32,11 +32,11 @@
.form-group
.form-group.has-feedback.js-typeahead-container
.col-md-4.control-label
= f.label :registrar_typeahead, t(:registrar), class: 'required'
= f.label :registrar_typeahead, t(:registrar_name), class: 'required'
.col-md-7
= f.text_field(:registrar_typeahead,
class: 'form-control js-registrar-typeahead typeahead required',
placeholder: t(:registrar), autocomplete: 'off')
placeholder: t(:registrar_name), autocomplete: 'off')
%span.glyphicon.glyphicon-ok.form-control-feedback.js-typeahead-ok.hidden
%span.glyphicon.glyphicon-remove.form-control-feedback.js-typeahead-remove
= f.hidden_field(:registrar_id, class: 'js-registrar-id')

View file

@ -11,7 +11,7 @@
%th{class: 'col-xs-2'}
= sort_link(@q, 'username')
%th{class: 'col-xs-2'}
= sort_link(@q, 'registrar_name', t(:registrar))
= sort_link(@q, 'registrar_name', t(:registrar_name))
%th{class: 'col-xs-2'}
= sort_link(@q, 'active', t(:active))
%tbody

View file

@ -23,7 +23,7 @@
%dt= t(:password)
%dd= @api_user.password
%dt= t(:registrar)
%dt= t(:registrar_name)
%dd= link_to(@api_user.registrar, admin_registrar_path(@api_user.registrar))
%dt= t(:role)

View file

@ -50,7 +50,7 @@
%th{class: 'col-xs-2'}
= t(:ident)
%th{class: 'col-xs-2'}
= t(:registrar)
= t(:registrar_name)
%th{class: 'col-xs-2'}
= t(:action)
%th{class: 'col-xs-2'}

View file

@ -49,7 +49,7 @@
%dd{class: changing_css_class(@version,"updated_at")}
= l(contact.updated_at, format: :short)
%dt= t(:registrar)
%dt= t(:registrar_name)
%dd{class: changing_css_class(@version,"registrar_id")}
- if contact.registrar.present?
= link_to(contact.registrar, admin_registrar_path(contact.registrar))

View file

@ -36,7 +36,7 @@
.row
.col-md-3
.form-group
= f.label t(:registrar)
= f.label t(:registrar_name)
= f.select :registrar_id_eq, Registrar.all.map { |x| [x, x.id] }, { include_blank: true }, class: 'form-control selectize', placeholder: t(:choose)
.col-md-3
.form-group
@ -88,7 +88,7 @@
%th{class: 'col-xs-2'}
= sort_link(@q, 'email', t(:created_at))
%th{class: 'col-xs-2'}
= sort_link(@q, 'registrar_name', t(:registrar))
= sort_link(@q, 'registrar_name', t(:registrar_name))
%tbody
- @contacts.each do |contact|
%tr

View file

@ -16,7 +16,7 @@
%thead
%tr
%th{class: 'col-xs-3'}=custom_sort_link t(:domain_name), :name
%th{class: 'col-xs-3'}=custom_sort_link t(:registrar), :registrar_name
%th{class: 'col-xs-3'}=custom_sort_link t(:registrar_name), :registrar_name
%th{class: 'col-xs-3'}=custom_sort_link t(:valid_to), :valid_to
%th{class: 'col-xs-3'}= t(:roles)
%tbody

View file

@ -39,7 +39,7 @@
by
= updator_link(@contact)
%dt= t(:registrar)
%dt= t(:registrar_name)
%dd
- if @contact.registrar.present?
= link_to(@contact.registrar, admin_registrar_path(@contact.registrar))

View file

@ -14,7 +14,7 @@
= f.search_field :registrant, value: params[:q][:registrant], class: 'form-control', placeholder: t(:registrant)
.col-md-3
.form-group
= label_tag t(:registrar)
= label_tag t(:registrar_name)
= f.search_field :registrar, value: params[:q][:registrar], class: 'form-control', placeholder: t(:registrant)
.col-md-3
.form-group
@ -48,7 +48,7 @@
%th{class: 'col-xs-2'}
= t(:registrant)
%th{class: 'col-xs-2'}
= t(:registrar)
= t(:registrar_name)
%th{class: 'col-xs-2'}
= t(:action)
%th{class: 'col-xs-2'}

View file

@ -98,7 +98,7 @@
%br
- if domain.registrar
%dt= t(:registrar)
%dt= t(:registrar_name)
%dd{class: changing_css_class(@version,"registrar_id")}
= link_to admin_registrar_path(domain.registrar), target: "registrar_#{domain.registrar.id}" do
= domain.registrar.name

View file

@ -23,7 +23,7 @@
.row
.col-md-6
.form-group
= f.label t(:registrar)
= f.label t(:registrar_name)
= f.select :registrar_id_eq, Registrar.all.map { |x| [x, x.id] }, { include_blank: true }, class: 'form-control selectize', placeholder: t(:choose)
.col-md-3
.form-group
@ -63,7 +63,7 @@
%th{class: 'col-xs-2'}
= sort_link(@q, 'valid_to', t(:valid_to))
%th{class: 'col-xs-2'}
= sort_link(@q, 'registrar_name', t(:registrar))
= sort_link(@q, 'registrar_name', t(:registrar_name))
%tbody
- @domains.each do |x|
%tr

View file

@ -9,7 +9,7 @@
%dt= t(:registered_at)
%dd= l(@domain.registered_at)
%dt= t(:registrar)
%dt= t(:registrar_name)
%dd= link_to(@domain.registrar, admin_registrar_path(@domain.registrar))
%dt= t(:authinfo_pw)

View file

@ -16,7 +16,7 @@
%th{class: 'col-xs-2'}= t(:tech)
%th{class: 'col-xs-2'}= t(:nameservers)
%th{class: 'col-xs-2'}= t(:dnskeys)
%th{class: 'col-xs-2'}= t(:registrar)
%th{class: 'col-xs-2'}= t(:registrar_name)
%tbody
-#- if @pending_domain.present?

View file

@ -27,7 +27,7 @@
.col-md-3
.form-group
= f.label :registrar
= f.search_field :api_user_registrar_cont, class: 'form-control', placeholder: t(:registrar), autocomplete: 'off'
= f.search_field :api_user_registrar_cont, class: 'form-control', placeholder: t(:registrar_name), autocomplete: 'off'
.col-md-3
.form-group
= f.label t(:created_after)
@ -55,7 +55,7 @@
%th{class: 'col-xs-2'}= t(:request_object)
%th{class: 'col-xs-2'}= t(:request_successful)
%th{class: 'col-xs-2'}= t(:api_user)
%th{class: 'col-xs-2'}= t(:registrar)
%th{class: 'col-xs-2'}= t(:registrar_name)
%th{class: 'col-xs-2'}
= sort_link(@q, 'created_at')
%tbody

View file

@ -21,7 +21,7 @@
%dt= t(:api_user)
%dd= @epp_log.api_user_name
%dt= t(:registrar)
%dt= t(:registrar_name)
%dd= @epp_log.api_user_registrar
%dt= t(:ip)

View file

@ -25,7 +25,7 @@
.col-md-3
.form-group
= f.label :registrar
= f.search_field :api_user_registrar_cont, class: 'form-control', placeholder: t(:registrar), autocomplete: 'off'
= f.search_field :api_user_registrar_cont, class: 'form-control', placeholder: t(:registrar_name), autocomplete: 'off'
.col-md-3
.form-group
= f.label t(:created_after)
@ -52,7 +52,7 @@
%th{class: 'col-xs-2'}= t(:request_method)
%th{class: 'col-xs-2'}= t(:response_code)
%th{class: 'col-xs-2'}= t(:api_user)
%th{class: 'col-xs-2'}= t(:registrar)
%th{class: 'col-xs-2'}= t(:registrar_name)
%th{class: 'col-xs-2'}
= sort_link(@q, 'created_at')
%tbody

View file

@ -21,7 +21,7 @@
%dt= t(:api_user)
%dd= @repp_log.api_user_name
%dt= t(:registrar)
%dt= t(:registrar_name)
%dd= @repp_log.api_user_registrar
%dt= t(:ip)

View file

@ -11,7 +11,7 @@
%h3.panel-title= t(:general)
.panel-body
%dl.dl-horizontal
%dt= t(:registrar)
%dt= t(:registrar_name)
%dd= link_to(@registrar, [:admin, @registrar])
%dt= t(:ipv4)

View file

@ -16,7 +16,7 @@
%thead
%tr
%th{class: 'col-xs-3'}=custom_sort_link t(:domain_name), :name
%th{class: 'col-xs-3'}=custom_sort_link t(:registrar), :registrar_name
%th{class: 'col-xs-3'}=custom_sort_link t(:registrar_name), :registrar_name
%th{class: 'col-xs-3'}=custom_sort_link t(:valid_to), :valid_to
%th{class: 'col-xs-3'}=custom_sort_link t(:roles), :roles
%tbody

View file

@ -42,7 +42,7 @@
by
= @contact.name
%dt= t(:registrar)
%dt= t(:registrar_name)
%dd
- if @contact.registrar.present?
= link_to(@contact.registrar, registrant_registrar_path(@contact.registrar))

View file

@ -16,7 +16,7 @@
%th{class: 'col-xs-2'}
=t(:valid_to)
%th{class: 'col-xs-2'}
=t(:registrar)
=t(:registrar_name)
%tbody
- @domains.result.each do |x|
%tr

View file

@ -61,7 +61,7 @@
%th{class: 'col-xs-2'}
= sort_link(@q, 'valid_to', t(:valid_to))
%th{class: 'col-xs-2'}
= sort_link(@q, 'registrar_name', t(:registrar))
= sort_link(@q, 'registrar_name', t(:registrar_name))
%tbody
- @domains.each do |x|
%tr

View file

@ -9,7 +9,7 @@
%dt= t(:registered_at)
%dd= l(@domain.registered_at)
%dt= t(:registrar)
%dt= t(:registrar_name)
%dd= link_to(@domain.registrar, registrant_registrar_path(@domain.registrar))
%dt= t(:authinfo_pw)

View file

@ -19,7 +19,7 @@
%th{class: 'col-xs-2'}
=t(:created_at)
%th{class: 'col-xs-2'}
=t(:registrar)
=t(:registrar_name)
%tbody
- @contacts.each do |contact|
%tr

View file

@ -38,7 +38,7 @@
.row
.col-md-3
.form-group
= f.label t(:registrar)
= f.label t(:registrar_name)
= f.select :registrar_id_eq, Registrar.all.map { |x| [x, x.id] }, { include_blank: true }, class: 'form-control selectize', placeholder: t(:choose)
.col-md-3
.form-group
@ -97,7 +97,7 @@
%th{class: 'col-xs-2'}
= sort_link(@q, 'email', t(:created_at))
%th{class: 'col-xs-2'}
= sort_link(@q, 'registrar_name', t(:registrar))
= sort_link(@q, 'registrar_name', t(:registrar_name))
%th{class: 'col-xs-2'}= t(:actions)
%tbody
- @contacts.each do |contact|

View file

@ -16,7 +16,7 @@
%thead
%tr
%th{class: 'col-xs-3'}=custom_sort_link t(:domain_name), :name
%th{class: 'col-xs-3'}=custom_sort_link t(:registrar), :registrar_name
%th{class: 'col-xs-3'}=custom_sort_link t(:registrar_name), :registrar_name
%th{class: 'col-xs-3'}=custom_sort_link t(:valid_to), :valid_to
%th{class: 'col-xs-3'}= t(:roles)
%tbody

View file

@ -7,7 +7,7 @@
%dd= @data.css('pw').text.present? ? @data.css('pw').text : t('hidden')
- if @data.css('pw').text.blank?
%dt= t(:registrar)
%dt= t(:registrar_name)
%dd= @data.css('clID').text
- registrant = Contact.find_by_code(@data.css('registrant').text)

View file

@ -11,10 +11,10 @@
= f.password_field :password, class: 'form-control',
autocomplete: 'off', placeholder: t(:password), required: true
%button.btn.btn-lg.btn-primary.btn-block{:type => 'submit'}= t(:log_in)
%button.btn.btn-lg.btn-primary.btn-block{:type => 'submit'}= t('.login_btn')
%hr
= link_to '/registrar/login/mid' do
= link_to '/registrar/login/mid', id: 'login-with-mobile-id-btn' do
= image_tag 'mid.gif'
= link_to '/registrar/id', method: :post do
= image_tag 'id_card.gif'

View file

@ -6,7 +6,7 @@
html: {class: 'form-signin'} do |f|
= f.text_field :phone, class: 'form-control',
placeholder: t(:phone_no), autocomplete: 'off', required: true
%button.btn.btn-lg.btn-primary.btn-block.js-login{:type => 'submit'}= t(:log_in)
%button.btn.btn-lg.btn-primary.btn-block.js-login{:type => 'submit'}= t('.login_btn')
- if ['development', 'alpha'].include?(Rails.env)
%div.text-center

View file

@ -1 +1 @@
Digidoc::Client.logger = Syslog::Logger
Digidoc::Client.logger = Rails.application.config.logger

View file

@ -285,7 +285,7 @@ en:
valid_to: 'Valid to'
name: 'Name'
transfer_can_be_approved_only_by_current_registrar: 'Transfer can be approved only by current domain registrar'
registrar: 'Registrar'
registrar_name: 'Registrar'
owner: 'Registrant'
domain_details: 'Domain details'
registered_at: 'Registered at'
@ -440,7 +440,6 @@ en:
setting: 'Setting'
registrar: 'Registrar'
transfer_requested: 'Transfer requested.'
message_was_not_found: 'Message was not found'
host_obj_is_not_allowed: 'hostObj object is not allowed'
@ -531,7 +530,6 @@ en:
ident_update_error: 'Parameter value policy error. Update of ident data not allowed [ident]'
invoices: 'Invoices'
no_such_user: 'No such user'
log_in: 'Log in'
phone_no: 'Phone number'
log_in_with_mid: 'Log in with mobile-id'
confirmation_sms_was_sent_to_your_phone_verification_code_is: 'Confirmation sms was sent to your phone. Verification code is %{code}.'

View file

@ -0,0 +1,7 @@
en:
registrar:
sessions:
login:
login_btn: Login
login_mid:
login_btn: Login

View file

@ -0,0 +1,21 @@
require 'rails_helper'
RSpec.feature 'Mobile ID login', db: true do
given!(:api_user) { Fabricate(:api_user, identity_code: 1234) }
background do
Setting.registrar_ip_whitelist_enabled = false
digidoc_client = instance_double(Digidoc::Client, authenticate: OpenStruct.new(user_id_code: 1234), session_code: 1234)
allow(Digidoc::Client).to receive(:new).and_return(digidoc_client)
end
scenario 'login with phone number' do
visit registrar_login_path
click_on 'login-with-mobile-id-btn'
fill_in 'user[phone]', with: '1234'
click_button 'Login'
expect(page).to have_text('Confirmation sms was sent to your phone. Verification code is')
end
end

View file

@ -0,0 +1,151 @@
require 'rails_helper'
RSpec.feature 'Sessions', db: true do
context 'with invalid ip' do
it 'should not see login page' do
Setting.registrar_ip_whitelist_enabled = true
WhiteIp.destroy_all
visit registrar_login_path
page.should have_text('Access denied')
end
it 'should see login page when whitelist disabled' do
Setting.registrar_ip_whitelist_enabled = false
WhiteIp.destroy_all
visit registrar_login_path
page.should_not have_text('Access denied')
Setting.registrar_ip_whitelist_enabled = true
end
it 'should see Login' do
@fixed_registrar = Fabricate(:registrar, name: 'fixed registrar', code: 'FIXED')
@fixed_registrar.white_ips = [Fabricate(:white_ip_registrar)]
visit registrar_login_path
page.should have_text('Login')
end
it 'should not get in with invalid ip' do
Fabricate(:registrar, white_ips: [Fabricate(:white_ip), Fabricate(:white_ip_registrar)])
@api_user_invalid_ip = Fabricate(
:api_user, identity_code: '37810013294', registrar: Fabricate(:registrar, white_ips: [])
)
visit registrar_login_path
fill_in 'depp_user_tag', with: @api_user_invalid_ip.username
fill_in 'depp_user_password', with: @api_user_invalid_ip.password
click_button 'Login'
page.should have_text('IP is not whitelisted')
end
end
context 'as unknown user' do
before :example do
Fabricate(:api_user)
end
it 'should not get in' do
client = instance_double("Digidoc::Client")
allow(client).to receive(:authenticate).and_return(
OpenStruct.new(
user_id_code: '123'
)
)
allow(Digidoc::Client).to receive(:new) { client }
visit registrar_login_path
page.should have_css('a[href="/registrar/login/mid"]')
page.find('a[href="/registrar/login/mid"]').click
fill_in 'user_phone', with: '00007'
click_button 'Login'
page.should have_text('No such user')
end
end
context 'as known api user' do
before :example do
Fabricate(:api_user)
end
it 'should not get in when external service fails' do
client = instance_double("Digidoc::Client")
allow(client).to receive(:authenticate).and_return(
OpenStruct.new(
faultcode: 'Fault',
detail: OpenStruct.new(
message: 'Something is wrong'
)
)
)
allow(Digidoc::Client).to receive(:new) { client }
visit registrar_login_path
page.should have_css('a[href="/registrar/login/mid"]')
page.find('a[href="/registrar/login/mid"]').click
fill_in 'user_phone', with: '00007'
click_button 'Login'
page.should have_text('Something is wrong')
end
it 'should not get in when there is a sim error', js: true do
client = instance_double("Digidoc::Client", session_code: '123')
allow(client).to receive('session_code=')
allow(client).to receive(:authenticate).and_return(
OpenStruct.new(
user_id_code: '14212128025'
)
)
allow(client).to receive('authentication_status').and_return(
OpenStruct.new(status: 'SIM_ERROR')
)
allow(Digidoc::Client).to receive(:new) { client }
visit registrar_login_path
page.should have_css('a[href="/registrar/login/mid"]')
page.find('a[href="/registrar/login/mid"]').click
fill_in 'user_phone', with: '00007'
click_button 'Login'
page.should have_text('Confirmation sms was sent to your phone. Verification code is')
page.should have_text('SIM application error')
end
it 'should Login successfully', js: true do
client = instance_double("Digidoc::Client", session_code: '123')
allow(client).to receive('session_code=')
allow(client).to receive(:authenticate).and_return(
OpenStruct.new(
user_id_code: '14212128025'
)
)
allow(client).to receive('authentication_status').and_return(
OpenStruct.new(status: 'USER_AUTHENTICATED')
)
allow(Digidoc::Client).to receive(:new) { client }
visit registrar_login_path
page.should have_css('a[href="/registrar/login/mid"]')
page.find('a[href="/registrar/login/mid"]').click
fill_in 'user_phone', with: '00007'
click_button 'Login'
page.should have_text('Confirmation sms was sent to your phone. Verification code is')
end
end
end

View file

@ -0,0 +1,9 @@
require 'rails_helper'
RSpec.describe Registrar::SessionsController do
describe 'routing' do
it 'routes to #login' do
expect(get: '/registrar/login').to route_to('registrar/sessions#login')
end
end
end