/
register.js
71 lines (70 loc) · 3.47 KB
/
register.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import { FlowRouter } from 'meteor/ostrio:flow-router-extra'
import { t } from '../../utils/i18n.js'
import { validateEmail, validatePassword } from '../../utils/frontend_helpers.js'
import './register.html'
Template.register.events({
'click #register': (event, templateInstance) => {
event.preventDefault()
if (templateInstance.$('#at-field-password').val() !== templateInstance.$('#at-field-password-again').val()) {
templateInstance.$('#at-field-password').addClass('is-invalid')
templateInstance.$('#at-field-password-again').addClass('is-invalid')
templateInstance.$('.notification').text(t('login.password_mismatch'))
document.querySelector('.notification').classList.toggle('d-none')
return
}
if (templateInstance.$('#at-field-email').val() && templateInstance.$('#at-field-password').val() && templateInstance.$('#at-field-password-again').val()) {
if (!validateEmail(templateInstance.$('#at-field-email').val())) {
templateInstance.$('#at-field-email').addClass('is-invalid')
templateInstance.$('.notification').text(t('login.invalid_email'))
document.querySelector('.notification').classList.toggle('d-none')
return
}
const passwordValidation = validatePassword(templateInstance.$('#at-field-password').val())
if (!passwordValidation.valid) {
templateInstance.$('#at-field-password').addClass('is-invalid')
templateInstance.$('#at-field-password-again').addClass('is-invalid')
templateInstance.$('.notification').text(passwordValidation.message)
document.querySelector('.notification').classList.toggle('d-none')
return
}
Accounts.createUser({
email: templateInstance.$('#at-field-email').val(),
password: templateInstance.$('#at-field-password').val(),
profile: {
name: templateInstance.$('#at-field-name').val(),
currentLanguageProject: t('globals.project'),
currentLanguageProjectDesc: t('project.first_project_desc'),
},
}, (error) => {
console.error(error)
if (error && error.error !== 145546287) {
templateInstance.$('.notification').text(`${t(`login.${error.error}`)} (${error.reason})`)
document.querySelector('.notification').classList.toggle('d-none')
} else {
FlowRouter.go('projectlist')
}
})
}
},
'keyup #at-field-password': (event, templateInstance) => {
event.preventDefault()
const validetedPW = validatePassword(templateInstance.$('#at-field-password').val())
templateInstance.$('.js-password-feedback').text(validetedPW.message)
if (validetedPW.valid) {
templateInstance.$('#at-field-password').removeClass('is-invalid')
templateInstance.$('#at-field-password-again').removeClass('is-invalid')
templateInstance.$('.js-password-feedback').removeClass('invalid-feedback')
templateInstance.$('.js-password-feedback').addClass('valid-feedback')
templateInstance.$('.js-password-feedback').removeClass('hide')
} else {
templateInstance.$('#at-field-password').addClass('is-invalid')
templateInstance.$('.js-password-feedback').removeClass('valid-feedback')
templateInstance.$('.js-password-feedback').addClass('invalid-feedback')
templateInstance.$('.js-password-feedback').removeClass('hide')
templateInstance.$('.js-password-feedback').addClass('d-block')
}
},
})
Template.register.helpers({
email: () => FlowRouter.getQueryParam('email'),
})