1
+ },
},
methods: {
async onNextClick() {
diff --git a/webapp/components/Registration/RegistrationSlideCreate.vue b/webapp/components/Registration/RegistrationSlideCreate.vue
index 532bf0bc1..908b5d953 100644
--- a/webapp/components/Registration/RegistrationSlideCreate.vue
+++ b/webapp/components/Registration/RegistrationSlideCreate.vue
@@ -285,7 +285,7 @@ export default {
const locale = this.$i18n.locale()
try {
await this.$apollo.mutate({
- mutation: SignupVerificationMutation,
+ mutation: SignupVerificationMutation, // Wolle add nonce in 'SignupVerificationMutation' definition in case
variables: {
name,
password,
diff --git a/webapp/components/Registration/RegistrationSlideEmail.vue b/webapp/components/Registration/RegistrationSlideEmail.vue
index 35e80bf4c..b5306602c 100644
--- a/webapp/components/Registration/RegistrationSlideEmail.vue
+++ b/webapp/components/Registration/RegistrationSlideEmail.vue
@@ -13,10 +13,10 @@
: $t('components.registration.signup.title', metadata)
}}
-->
-
+ /> -->
{{
invitation
@@ -68,6 +68,7 @@ import { isEmail } from 'validator'
import normalizeEmail from '~/components/utils/NormalizeEmail'
// Wolle import { SweetalertIcon } from 'vue-sweetalert-icons'
+// Wolle add nonce in in case
export const SignupMutation = gql`
mutation($email: String!) {
Signup(email: $email) {
@@ -75,13 +76,6 @@ export const SignupMutation = gql`
}
}
`
-export const SignupByInvitationMutation = gql`
- mutation($email: String!, $token: String!) {
- SignupByInvitation(email: $email, token: $token) {
- email
- }
- }
-`
export default {
name: 'RegistrationSlideEmail',
components: {
@@ -89,8 +83,8 @@ export default {
},
props: {
sliderData: { type: Object, required: true },
- token: { type: String, default: null }, // Wolle not used???
- invitation: { type: Boolean, default: false },
+ // token: { type: String, default: null }, // Wolle not used???
+ invitation: { type: Boolean, default: false }, // Wolle ???
},
data() {
return {
@@ -185,15 +179,11 @@ export default {
this.sliderData.sliders[this.sliderIndex].data.request &&
this.sliderData.sliders[this.sliderIndex].data.request.variables &&
this.sliderData.sliders[this.sliderIndex].data.request.variables.email === variables.email
- // Wolle &&
- // this.sliderData.sliders[this.sliderIndex].data.request.variables.token === variables.code
)
},
async onNextClick() {
- const mutation = this.token ? SignupByInvitationMutation : SignupMutation
- const { token } = this
const { email } = this.formData
- const variables = { email, token }
+ const variables = { email } // Wolle add nonce in case
if (!this.sendEmailAgain && this.sliderData.collectedInputData.emailSend) {
return true
@@ -201,7 +191,7 @@ export default {
if (this.sendEmailAgain || !this.isVariablesRequested(variables)) {
try {
- const response = await this.$apollo.mutate({ mutation, variables }) // e-mail is send in emailMiddleware of backend
+ const response = await this.$apollo.mutate({ SignupMutation, variables }) // e-mail is send in emailMiddleware of backend
this.sliderData.setSliderValuesCallback(
this.sliderData.sliders[this.sliderIndex].validated,
{ sliderData: { request: { variables }, response: response.data } },
@@ -213,9 +203,9 @@ export default {
})
this.setButtonValues()
- const { email: respnseEmail } =
- this.sliderData.sliders[this.sliderIndex].data.response.Signup ||
- this.sliderData.sliders[this.sliderIndex].data.response.SignupByInvitation
+ const { email: respnseEmail } = this.sliderData.sliders[
+ this.sliderIndex
+ ].data.response.Signup
this.$toast.success(
this.$t('components.registration.email.form.success', { email: respnseEmail }),
)
@@ -234,7 +224,7 @@ export default {
const { message } = err
const mapping = {
'A user account with this email already exists': 'email-exists',
- 'Invitation code already used or does not exist': 'invalid-invitation-token',
+ // Wolle 'Invitation code already used or does not exist': 'invalid-invitation-token',
}
for (const [pattern, key] of Object.entries(mapping)) {
if (message.includes(pattern))
diff --git a/webapp/components/Registration/RegistrationSlider.story.js b/webapp/components/Registration/RegistrationSlider.story.js
index a8d145ef2..607325dbe 100644
--- a/webapp/components/Registration/RegistrationSlider.story.js
+++ b/webapp/components/Registration/RegistrationSlider.story.js
@@ -14,11 +14,8 @@ const plugins = [
if (JSON.stringify(data).includes('Signup')) {
return { data: { Signup: { email: data.variables.email } } }
}
- if (JSON.stringify(data).includes('SignupByInvitation')) {
- return { data: { SignupByInvitation: { email: data.variables.email } } }
- }
if (JSON.stringify(data).includes('SignupVerification')) {
- return { data: { SignupByInvitation: { ...data.variables } } }
+ return { data: { SignupVerification: { ...data.variables } } }
}
throw new Error(`Mutation name not found!`)
},
diff --git a/webapp/components/Registration/Signup.spec.js b/webapp/components/Registration/Signup.spec.js
index b8970b1dc..23934be23 100644
--- a/webapp/components/Registration/Signup.spec.js
+++ b/webapp/components/Registration/Signup.spec.js
@@ -1,5 +1,5 @@
import { config, mount } from '@vue/test-utils'
-import Signup, { SignupMutation, SignupByInvitationMutation } from './Signup'
+import Signup, { SignupMutation } from './Signup'
const localVue = global.localVue
@@ -98,12 +98,6 @@ describe('Signup', () => {
})
describe('submit', () => {
- it('calls SignupByInvitation graphql mutation', async () => {
- await action()
- const expected = expect.objectContaining({ mutation: SignupByInvitationMutation })
- expect(mocks.$apollo.mutate).toHaveBeenCalledWith(expected)
- })
-
it('delivers invitation token to backend', async () => {
await action()
const expected = expect.objectContaining({
@@ -128,23 +122,6 @@ describe('Signup', () => {
)
})
})
-
- describe('in case the invitation code was incorrect', () => {
- beforeEach(() => {
- mocks.$apollo.mutate = jest
- .fn()
- .mockRejectedValue(
- new Error('UserInputError: Invitation code already used or does not exist.'),
- )
- })
-
- it('explains the error', async () => {
- await action()
- expect(mocks.$t).toHaveBeenCalledWith(
- 'components.registration.signup.form.errors.invalid-invitation-token',
- )
- })
- })
})
})
})
diff --git a/webapp/components/Registration/Signup.vue b/webapp/components/Registration/Signup.vue
index 0a8bed612..64173a115 100644
--- a/webapp/components/Registration/Signup.vue
+++ b/webapp/components/Registration/Signup.vue
@@ -14,9 +14,6 @@
: $t('components.registration.signup.title', metadata)
}}
-
-
-
{{
@@ -78,20 +75,12 @@ export const SignupMutation = gql`
}
}
`
-export const SignupByInvitationMutation = gql`
- mutation($email: String!, $token: String!) {
- SignupByInvitation(email: $email, token: $token) {
- email
- }
- }
-`
export default {
name: 'Signup',
components: {
SweetalertIcon,
},
props: {
- token: { type: String, default: null },
invitation: { type: Boolean, default: false },
},
data() {
@@ -126,12 +115,10 @@ export default {
this.disabled = false
},
async handleSubmit() {
- const mutation = this.token ? SignupByInvitationMutation : SignupMutation
- const { token } = this
const { email } = this.formData
try {
- const response = await this.$apollo.mutate({ mutation, variables: { email, token } })
+ const response = await this.$apollo.mutate({ SignupMutation, variables: { email } })
this.data = response.data
setTimeout(() => {
this.$emit('submit', { email: this.data.Signup.email })
@@ -140,7 +127,7 @@ export default {
const { message } = err
const mapping = {
'A user account with this email already exists': 'email-exists',
- 'Invitation code already used or does not exist': 'invalid-invitation-token',
+ // Wolle 'Invitation code already used or does not exist': 'invalid-invitation-token',
}
for (const [pattern, key] of Object.entries(mapping)) {
if (message.includes(pattern))
diff --git a/webapp/config/index.js b/webapp/config/index.js
index fd564f350..678239729 100644
--- a/webapp/config/index.js
+++ b/webapp/config/index.js
@@ -29,6 +29,8 @@ const sentry = {
const options = {
VERSION: process.env.VERSION || pkg.version,
DESCRIPTION: process.env.DESCRIPTION || pkg.description,
+ PUBLIC_REGISTRATION: process.env.PUBLIC_REGISTRATION === 'true',
+ INVITE_REGISTRATION: process.env.INVITE_REGISTRATION === 'true',
// Cookies
COOKIE_EXPIRE_TIME: process.env.COOKIE_EXPIRE_TIME || 730, // Two years by default
COOKIE_HTTPS_ONLY: process.env.COOKIE_HTTPS_ONLY || process.env.NODE_ENV === 'production', // ensure true in production if not set explicitly
diff --git a/webapp/locales/de.json b/webapp/locales/de.json
index 0165ce558..1078e17ad 100644
--- a/webapp/locales/de.json
+++ b/webapp/locales/de.json
@@ -182,8 +182,7 @@
"data-privacy": "Ich habe die Datenschutzerklärung gelesen und verstanden.",
"description": "Um loszulegen, kannst Du Dich hier kostenfrei registrieren:",
"errors": {
- "email-exists": "Es gibt schon ein Benutzerkonto mit dieser E-Mail-Adresse!",
- "invalid-invitation-token": "Es sieht so aus, als ob der Einladungscode schon eingelöst wurde. Jeder Code kann nur einmalig benutzt werden."
+ "email-exists": "Es gibt schon ein Benutzerkonto mit dieser E-Mail-Adresse!"
},
"invitation-code": "Dein Einladungscode lautet: {code}",
"minimum-age": "Ich bin 18 Jahre oder älter.",
diff --git a/webapp/locales/en.json b/webapp/locales/en.json
index 4fd7c2934..27b7bf73f 100644
--- a/webapp/locales/en.json
+++ b/webapp/locales/en.json
@@ -182,8 +182,7 @@
"data-privacy": "I have read and understood the privacy statement.",
"description": "To get started, you can register here for free:",
"errors": {
- "email-exists": "There is already a user account with this e-mail address!",
- "invalid-invitation-token": "It looks like as if the invitation has been used already. Invitation links can only be used once."
+ "email-exists": "There is already a user account with this e-mail address!"
},
"invitation-code": "Your invitation code is: {code}",
"minimum-age": "I'm 18 years or older.",
diff --git a/webapp/locales/es.json b/webapp/locales/es.json
index 659fd1995..3cc53af5e 100644
--- a/webapp/locales/es.json
+++ b/webapp/locales/es.json
@@ -153,8 +153,7 @@
"data-privacy": "He leido y entendido la declaración de protección de datos.",
"description": "Para empezar, introduzca su dirección de correo electrónico:",
"errors": {
- "email-exists": "¡Ya hay una cuenta de usuario con esta dirección de correo electrónico!",
- "invalid-invitation-token": "Parece que el código de invitación ya ha sido canjeado. Cada código sólo se puede utilizar una vez."
+ "email-exists": "¡Ya hay una cuenta de usuario con esta dirección de correo electrónico!"
},
"invitation-code": "Su código de invitación es: {code}",
"minimum-age": "Tengo 18 años o más.",
diff --git a/webapp/locales/fr.json b/webapp/locales/fr.json
index d43007cf7..c5467f459 100644
--- a/webapp/locales/fr.json
+++ b/webapp/locales/fr.json
@@ -153,8 +153,7 @@
"data-privacy": "J'ai lu et compris la Déclaration de confidentialité.",
"description": "Pour commencer, entrez votre adresse mail :",
"errors": {
- "email-exists": "Il existe déjà un compte utilisateur avec cette adresse mail!",
- "invalid-invitation-token": "On dirait que l'invitation a déjà été utilisée. Les liens d'invitation ne peuvent être utilisés qu'une seule fois."
+ "email-exists": "Il existe déjà un compte utilisateur avec cette adresse mail!"
},
"invitation-code": "Votre code d'invitation est: {code} ",
"minimum-age": "J'ai 18 ans ou plus.",
diff --git a/webapp/locales/it.json b/webapp/locales/it.json
index 982f6f871..cdff1c3ec 100644
--- a/webapp/locales/it.json
+++ b/webapp/locales/it.json
@@ -160,8 +160,7 @@
"data-privacy": null,
"description": null,
"errors": {
- "email-exists": null,
- "invalid-invitation-token": "Sembra che l'invito sia già stato utilizzato. I link di invito possono essere utilizzati una sola volta."
+ "email-exists": null
},
"invitation-code": null,
"minimum-age": null,
diff --git a/webapp/locales/pt.json b/webapp/locales/pt.json
index 6afddc3bb..790197c9d 100644
--- a/webapp/locales/pt.json
+++ b/webapp/locales/pt.json
@@ -200,8 +200,7 @@
"data-privacy": "Eu li e entendi o Política de Privacidade.",
"description": "Para começar, digite seu endereço de e-mail:",
"errors": {
- "email-exists": "Já existe uma conta de usuário com este endereço de e-mail!",
- "invalid-invitation-token": "Parece que o convite já foi usado. Os links para convites só podem ser usados uma vez."
+ "email-exists": "Já existe uma conta de usuário com este endereço de e-mail!"
},
"invitation-code": "O seu código de convite é: {code}",
"minimum-age": "Tenho 18 anos ou mais.",
diff --git a/webapp/locales/ru.json b/webapp/locales/ru.json
index fe2e35969..f97fff9b8 100644
--- a/webapp/locales/ru.json
+++ b/webapp/locales/ru.json
@@ -153,8 +153,7 @@
"data-privacy": "Я прочитал и понял Заявление о конфиденциальности",
"description": "Для начала работы введите свой адрес электронной почты:",
"errors": {
- "email-exists": "Уже есть учетная запись пользователя с этим адресом электронной почты!",
- "invalid-invitation-token": "Похоже, что приглашение уже было использовано. Ссылку из приглашения можно использовать только один раз."
+ "email-exists": "Уже есть учетная запись пользователя с этим адресом электронной почты!"
},
"invitation-code": "Код приглашения: {code}",
"minimum-age": "Мне 18 лет или более",
diff --git a/webapp/pages/registration.vue b/webapp/pages/registration.vue
index 216d4aa4d..4863f05df 100644
--- a/webapp/pages/registration.vue
+++ b/webapp/pages/registration.vue
@@ -1,12 +1,16 @@
-