mirror of
https://github.com/internetee/registry.git
synced 2025-05-17 17:59:47 +02:00
Handlers for mid login
This commit is contained in:
parent
0ecbd87004
commit
418bd2046c
16 changed files with 173 additions and 7 deletions
3
Gemfile
3
Gemfile
|
@ -63,6 +63,9 @@ gem 'countries', '~> 0.10.0'
|
|||
# cloning activerecord objects
|
||||
gem 'deep_cloneable', '~> 2.1.1'
|
||||
|
||||
# id + mid login
|
||||
gem 'digidoc_client', '~> 0.2.1'
|
||||
|
||||
group :development do
|
||||
# dev tools
|
||||
gem 'spring', '~> 1.2.0'
|
||||
|
|
36
Gemfile.lock
36
Gemfile.lock
|
@ -60,6 +60,9 @@ GEM
|
|||
thread_safe (~> 0.3, >= 0.3.4)
|
||||
tzinfo (~> 1.1)
|
||||
addressable (2.3.6)
|
||||
akami (1.2.2)
|
||||
gyoku (>= 0.4.0)
|
||||
nokogiri
|
||||
arel (6.0.0)
|
||||
ast (2.0.0)
|
||||
astrolabe (1.3.0)
|
||||
|
@ -122,6 +125,8 @@ GEM
|
|||
coffee-script-source (1.8.0)
|
||||
countries (0.10.0)
|
||||
currencies (~> 0.4.2)
|
||||
crack (0.4.2)
|
||||
safe_yaml (~> 1.0.0)
|
||||
currencies (0.4.2)
|
||||
daemons (1.1.9)
|
||||
database_cleaner (1.3.0)
|
||||
|
@ -143,6 +148,12 @@ GEM
|
|||
thread_safe (~> 0.1)
|
||||
warden (~> 1.2.3)
|
||||
diff-lcs (1.2.5)
|
||||
digidoc_client (0.2.1)
|
||||
crack (>= 0.1.8)
|
||||
httpclient (>= 2.3.4)
|
||||
mime-types (>= 1.16)
|
||||
nokogiri (>= 1.4.0)
|
||||
savon (>= 2.4.0)
|
||||
docile (1.1.5)
|
||||
epp (1.4.0)
|
||||
hpricot
|
||||
|
@ -193,6 +204,8 @@ GEM
|
|||
guard-rubocop (1.1.0)
|
||||
guard (~> 2.0)
|
||||
rubocop (~> 0.20)
|
||||
gyoku (1.2.3)
|
||||
builder (>= 2.1.2)
|
||||
haml (4.0.6)
|
||||
tilt
|
||||
haml-rails (0.6.0)
|
||||
|
@ -209,6 +222,9 @@ GEM
|
|||
hike (1.2.3)
|
||||
hitimes (1.2.2)
|
||||
hpricot (0.8.6)
|
||||
httpclient (2.6.0.1)
|
||||
httpi (2.3.0)
|
||||
rack
|
||||
i18n (0.7.0)
|
||||
ice_nine (0.11.1)
|
||||
isikukood (0.1.2)
|
||||
|
@ -236,6 +252,8 @@ GEM
|
|||
loofah (2.0.1)
|
||||
nokogiri (>= 1.5.9)
|
||||
lumberjack (1.0.9)
|
||||
macaddr (1.7.1)
|
||||
systemu (~> 2.6.2)
|
||||
mail (2.6.3)
|
||||
mime-types (>= 1.16, < 3)
|
||||
method_source (0.8.2)
|
||||
|
@ -250,6 +268,7 @@ GEM
|
|||
newrelic_rpm (3.9.9.275)
|
||||
nokogiri (1.6.2.1)
|
||||
mini_portile (= 0.6.0)
|
||||
nori (2.4.0)
|
||||
nprogress-rails (0.1.6.5)
|
||||
open4 (1.3.4)
|
||||
orm_adapter (0.5.0)
|
||||
|
@ -366,6 +385,7 @@ GEM
|
|||
reek (= 1.3.8)
|
||||
ruby2ruby (>= 2.1.1, < 3.0)
|
||||
virtus (~> 1.0)
|
||||
safe_yaml (1.0.4)
|
||||
sass (3.4.10)
|
||||
sass-rails (5.0.1)
|
||||
railties (>= 4.0.0, < 5.0)
|
||||
|
@ -373,6 +393,15 @@ GEM
|
|||
sprockets (>= 2.8, < 4.0)
|
||||
sprockets-rails (>= 2.0, < 4.0)
|
||||
tilt (~> 1.1)
|
||||
savon (2.10.1)
|
||||
akami (~> 1.2)
|
||||
builder (>= 2.1.2)
|
||||
gyoku (~> 1.2)
|
||||
httpi (~> 2.3)
|
||||
nokogiri (>= 1.4.0)
|
||||
nori (~> 2.4)
|
||||
uuid (~> 2.3.7)
|
||||
wasabi (~> 3.4)
|
||||
sdoc (0.4.1)
|
||||
json (~> 1.7, >= 1.7.7)
|
||||
rdoc (~> 4.0)
|
||||
|
@ -404,6 +433,7 @@ GEM
|
|||
sprockets (>= 2.8, < 4.0)
|
||||
sys-uname (0.9.0)
|
||||
ffi (>= 1.0.0)
|
||||
systemu (2.6.5)
|
||||
temple (0.6.10)
|
||||
terminal-table (1.4.5)
|
||||
therubyracer (0.12.1)
|
||||
|
@ -428,6 +458,8 @@ GEM
|
|||
rack
|
||||
raindrops (~> 0.7)
|
||||
uniform_notifier (1.6.2)
|
||||
uuid (2.3.7)
|
||||
macaddr (~> 1.0)
|
||||
uuidtools (2.1.5)
|
||||
virtus (1.0.4)
|
||||
axiom-types (~> 0.1)
|
||||
|
@ -436,6 +468,9 @@ GEM
|
|||
equalizer (~> 0.0, >= 0.0.9)
|
||||
warden (1.2.3)
|
||||
rack (>= 1.0)
|
||||
wasabi (3.4.0)
|
||||
httpi (~> 2.0)
|
||||
nokogiri (>= 1.4.2)
|
||||
websocket-driver (0.5.1)
|
||||
websocket-extensions (>= 0.1.0)
|
||||
websocket-extensions (0.1.1)
|
||||
|
@ -465,6 +500,7 @@ DEPENDENCIES
|
|||
deep_cloneable (~> 2.1.1)
|
||||
delayed_job_active_record (~> 4.0.3)
|
||||
devise (~> 3.4.1)
|
||||
digidoc_client (~> 0.2.1)
|
||||
epp (~> 1.4.0)
|
||||
epp-xml (~> 0.10.4)
|
||||
fabrication (~> 2.12.2)
|
||||
|
|
BIN
app/assets/images/id_card.gif
Normal file
BIN
app/assets/images/id_card.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 564 B |
BIN
app/assets/images/mid.gif
Normal file
BIN
app/assets/images/mid.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
|
@ -1,3 +1,15 @@
|
|||
@flash_notice = (msg) ->
|
||||
$('#flash').find('div').removeClass('bg-danger')
|
||||
$('#flash').find('div').addClass('bg-success')
|
||||
$('#flash').find('div').html(msg)
|
||||
$('#flash').show()
|
||||
|
||||
@flash_alert = (msg) ->
|
||||
$('#flash').find('div').removeClass('bg-success')
|
||||
$('#flash').find('div').addClass('bg-danger')
|
||||
$('#flash').find('div').html(msg)
|
||||
$('#flash').show()
|
||||
|
||||
ready = ->
|
||||
$('.selectize').selectize({
|
||||
allowEmptyOption: true
|
||||
|
|
|
@ -27,3 +27,13 @@
|
|||
margin: 0 auto
|
||||
input
|
||||
margin-bottom: 10px
|
||||
|
||||
.form-signin .form-control
|
||||
position: relative
|
||||
height: auto
|
||||
-webkit-box-sizing: border-box
|
||||
-moz-box-sizing: border-box
|
||||
box-sizing: border-box
|
||||
padding: 10px
|
||||
font-size: 16px
|
||||
|
||||
|
|
|
@ -54,6 +54,6 @@ class Admin::ApiUsersController < AdminController
|
|||
end
|
||||
|
||||
def api_user_params
|
||||
params.require(:api_user).permit(:username, :password, :active, :registrar_id, :registrar_typeahead)
|
||||
params.require(:api_user).permit(:username, :password, :active, :registrar_id, :registrar_typeahead, :identity_code)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -7,4 +7,8 @@ class Admin::SessionsController < SessionsController
|
|||
|
||||
def login
|
||||
end
|
||||
|
||||
def find_user_by_idc(idc)
|
||||
AdminUser.find_by(identity_code: idc)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -13,4 +13,54 @@ class Registrar::SessionsController < SessionsController
|
|||
def login
|
||||
|
||||
end
|
||||
|
||||
def login_mid
|
||||
@user = User.new
|
||||
end
|
||||
|
||||
def mid
|
||||
phone = params[:user][:phone]
|
||||
client = Digidoc::Client.new
|
||||
|
||||
country_codes = {'+372' => 'EST'}
|
||||
|
||||
response = client.authenticate(
|
||||
:phone => "+372#{phone}",
|
||||
:message_to_display => 'Authenticating',
|
||||
:service_name => 'Testing'
|
||||
)
|
||||
|
||||
@user = find_user_by_idc(response.user_id_code)
|
||||
|
||||
if @user.persisted?
|
||||
session[:user_id_code] = response.user_id_code
|
||||
session[:mid_session_code] = client.session_code
|
||||
render json: { message: t('check_your_phone_for_confirmation_code') }, status: :ok
|
||||
else
|
||||
flash[:alert] = t('no_such_user')
|
||||
flash.keep(:alert)
|
||||
render js: "window.location = '#{registrar_login_mid_path}'"
|
||||
end
|
||||
|
||||
# client.authentication_status
|
||||
end
|
||||
|
||||
def mid_status
|
||||
client = Digidoc::Client.new
|
||||
client.session_code = session[:mid_session_code]
|
||||
auth_status = client.authentication_status
|
||||
|
||||
# binding.pry
|
||||
# flash[:notice] = I18n.t('welcome')
|
||||
# flash.keep(:notice)
|
||||
|
||||
# sign_in @user
|
||||
# render js: "window.location = '#{registrar_invoices_path}'"
|
||||
render json: { message: t('not_ok') }, status: :request_timeout
|
||||
end
|
||||
|
||||
def find_user_by_idc(idc)
|
||||
return User.new unless idc
|
||||
ApiUser.find_by(identity_code: idc) || User.new
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
class User < ActiveRecord::Base
|
||||
include Versions # version/user_version.rb
|
||||
devise :trackable, :timeoutable
|
||||
|
||||
attr_accessor :phone
|
||||
end
|
||||
|
|
|
@ -14,6 +14,9 @@
|
|||
.form-group
|
||||
= f.label :password
|
||||
= f.text_field(:password, class: 'form-control')
|
||||
.form-group
|
||||
= f.label :identity_code
|
||||
= f.text_field(:identity_code, class: 'form-control')
|
||||
.form-group
|
||||
.form-group.has-feedback.js-typeahead-container
|
||||
= f.label :registrar_typeahead, t('registrar')
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
.form-signin
|
||||
/ TODO: Refactor this when ID card login is done
|
||||
= button_to 'ID card (user1)', 'sessions',
|
||||
class: 'btn btn-lg btn-primary btn-block', name: 'user1'
|
||||
= button_to 'ID card (user2)', 'sessions',
|
||||
class: 'btn btn-lg btn-primary btn-block', name: 'user2'
|
||||
.form-signin.text-center
|
||||
%h2.form-signin-heading.text-center= t('log_in')
|
||||
%hr
|
||||
= link_to '/registrar/login/mid' do
|
||||
= image_tag 'mid.gif'
|
||||
= link_to '/registrar/login/id' do
|
||||
= image_tag 'id_card.gif'
|
||||
|
|
30
app/views/registrar/sessions/login_mid.haml
Normal file
30
app/views/registrar/sessions/login_mid.haml
Normal file
|
@ -0,0 +1,30 @@
|
|||
.form-signin.text-center
|
||||
%h2.form-signin-heading.text-center= t('log_in_with_mid')
|
||||
%hr
|
||||
= link_to '/registrar/login/mid' do
|
||||
= image_tag 'mid.gif'
|
||||
= link_to '/registrar/login/id' do
|
||||
= image_tag 'id_card.gif'
|
||||
= form_for @user, url: registrar_mid_path, html: {class: 'form-signin'} do |f|
|
||||
= f.text_field :phone, class: 'form-control', placeholder: t('phone_no'), autocomplete: 'off'
|
||||
%button.btn.btn-lg.btn-primary.btn-block.js-login{:type => 'submit'}= t('log_in')
|
||||
|
||||
:coffee
|
||||
status_interval = null
|
||||
mid_status = () ->
|
||||
|
||||
status_interval = setInterval((->
|
||||
$.post('/registrar/login/mid_status').fail((data, bla, asd) ->
|
||||
clearInterval(status_interval)
|
||||
flash_alert(data.responseJSON.message)
|
||||
)
|
||||
), 1000)
|
||||
|
||||
$('.js-login').on 'click', (e) ->
|
||||
e.preventDefault();
|
||||
|
||||
$.post($('form').attr('action'), $('form').serialize()).done((data) ->
|
||||
flash_notice(data.message)
|
||||
mid_status()
|
||||
)
|
||||
|
1
config/initializers/digidoc_logger.rb
Normal file
1
config/initializers/digidoc_logger.rb
Normal file
|
@ -0,0 +1 @@
|
|||
Digidoc::Client.logger = Logger.new('log/webservices.log')
|
|
@ -493,3 +493,8 @@ en:
|
|||
contact_org_error: 'Parameter value policy error. Org should be blank'
|
||||
contact_fax_error: 'Parameter value policy error. Fax should be blank'
|
||||
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'
|
||||
check_your_phone_for_confirmation_code: 'Check your phone for confirmation code'
|
||||
|
|
|
@ -67,7 +67,11 @@ Rails.application.routes.draw do
|
|||
|
||||
devise_scope :user do
|
||||
get 'login' => 'sessions#login'
|
||||
# get 'login/mid' => 'sessions#login_mid'
|
||||
# post 'login/mid' => 'sessions#mid'
|
||||
|
||||
post 'sessions' => 'sessions#create'
|
||||
post 'mid' => 'sessions#mid'
|
||||
get 'logout' => '/devise/sessions#destroy'
|
||||
end
|
||||
|
||||
|
@ -79,7 +83,12 @@ Rails.application.routes.draw do
|
|||
|
||||
devise_scope :user do
|
||||
get 'login' => 'sessions#login'
|
||||
get 'login/mid' => 'sessions#login_mid'
|
||||
post 'login/mid' => 'sessions#mid'
|
||||
post 'login/mid_status' => 'sessions#mid_status'
|
||||
|
||||
post 'sessions' => 'sessions#create'
|
||||
post 'mid' => 'sessions#mid'
|
||||
get 'logout' => '/devise/sessions#destroy'
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue