lemonldap-ng/lemonldap-ng-portal/site/coffee/u2fregistration.coffee
Xavier Guimard ffd769e780 U2F update (#1148)
Broken for now (pb with session->update)
2017-02-20 17:30:58 +00:00

91 lines
2.2 KiB
CoffeeScript

###
LemonLDAP::NG U2F registration script
###
setMsg = (msg, level) ->
$('#msg').html window.translate msg
$('#color').removeClass 'message-positive message-warning alert-success alert-warning'
$('#color').addClass "message-#{level}"
level = 'success' if level == 'positive'
$('#color').addClass "alert-#{level}"
register = ->
# 1 get registration token
$.ajax
type: "POST",
url: "#{portal}u2fregister/register"
data: {}
dataType: 'json'
error: (j, status, err) ->
console.log 'Error', err
success: (ch) ->
# 2 build response
request = [
challenge: ch.challenge
version: ch.version
]
setMsg 'touchU2fDevice', 'positive'
$('#u2fPermission').show()
u2f.register ch.appId, request, [], (data) ->
$('#u2fPermission').hide()
# Handle errors
if data.errorCode
setMsg 'unableToGetU2FKey', 'warning'
else
# 3 send response
$.ajax
type: "POST"
url: "#{portal}u2fregister/registration"
data:
registration: JSON.stringify data
dataType: 'json'
success: (resp) ->
if resp.error
setMsg 'u2fFailed', 'warning'
else if resp.result
setMsg 'u2fRegistered', 'positive'
error: (j, status, err) ->
console.log 'error', err
verify = ->
# 1 get challenge
$.ajax
type: "POST",
url: "#{portal}u2fregister/verify"
data: {}
dataType: 'json'
error: (j, status, err) ->
console.log 'Error', err
success: (ch) ->
# 2 build response
request = [
keyHandle: ch.keyHandle
version: ch.version
]
setMsg 'touchU2fDevice', 'positive'
u2f.sign ch.appId, ch.challenge, request, (data) ->
# Handle errors
if data.errorCode
setMsg 'unableToGetU2FKey', 'warning'
else
# 3 send response
$.ajax
type: "POST"
url: "#{portal}u2fregister/signature"
data:
signature: JSON.stringify data
dataType: 'json'
success: (resp) ->
if resp.error
setMsg 'u2fFailed', 'warning'
else if resp.result
setMsg 'u2fSuccess', 'positive'
error: (j, status, err) ->
console.log 'error', err
$(document).ready ->
$('#u2fPermission').hide()
$('#register').on 'click', register
$('#verify').on 'click', verify
$('#goback').attr 'href', portal