import { Component, OnInit } from '@angular/core'
-import { ActivatedRoute, Router } from '@angular/router'
-import { I18n } from '@ngx-translate/i18n-polyfill'
-import { AuthService, Notifier } from '@app/core'
-import { UserService } from '@app/shared'
+import { ActivatedRoute } from '@angular/router'
+import { SignupService } from '@app/+signup/shared/signup.service'
+import { AuthService, Notifier, ServerService } from '@app/core'
@Component({
selector: 'my-verify-account-email',
failed = false
isPendingEmail = false
+ requiresApproval: boolean
+ loaded = false
+
private userId: number
+ private registrationId: number
private verificationString: string
constructor (
- private userService: UserService,
+ private signupService: SignupService,
+ private server: ServerService,
private authService: AuthService,
private notifier: Notifier,
- private router: Router,
- private route: ActivatedRoute,
- private i18n: I18n
+ private route: ActivatedRoute
) {
}
+ get instanceName () {
+ return this.server.getHTMLConfig().instance.name
+ }
+
ngOnInit () {
const queryParams = this.route.snapshot.queryParams
+
+ this.server.getConfig().subscribe(config => {
+ this.requiresApproval = config.signup.requiresApproval
+
+ this.loaded = true
+ })
+
this.userId = queryParams['userId']
+ this.registrationId = queryParams['registrationId']
+
this.verificationString = queryParams['verificationString']
+
this.isPendingEmail = queryParams['isPendingEmail'] === 'true'
- if (!this.userId || !this.verificationString) {
- this.notifier.error(this.i18n('Unable to find user id or verification string.'))
- } else {
- this.verifyEmail()
+ if (!this.verificationString) {
+ this.notifier.error($localize`Unable to find verification string in URL query.`)
+ return
}
+
+ if (!this.userId && !this.registrationId) {
+ this.notifier.error($localize`Unable to find user id or registration id in URL query.`)
+ return
+ }
+
+ this.verifyEmail()
+ }
+
+ isRegistrationRequest () {
+ return !!this.registrationId
+ }
+
+ displaySignupSuccess () {
+ if (!this.success) return false
+ if (!this.isRegistrationRequest() && this.isPendingEmail) return false
+
+ return true
}
verifyEmail () {
- this.userService.verifyEmail(this.userId, this.verificationString, this.isPendingEmail)
- .subscribe(
- () => {
+ if (this.isRegistrationRequest()) {
+ return this.verifyRegistrationEmail()
+ }
+
+ return this.verifyUserEmail()
+ }
+
+ private verifyUserEmail () {
+ const options = {
+ userId: this.userId,
+ verificationString: this.verificationString,
+ isPendingEmail: this.isPendingEmail
+ }
+
+ this.signupService.verifyUserEmail(options)
+ .subscribe({
+ next: () => {
if (this.authService.isLoggedIn()) {
this.authService.refreshUserInformation()
}
this.success = true
},
- err => {
+ error: err => {
+ this.failed = true
+
+ this.notifier.error(err.message)
+ }
+ })
+ }
+
+ private verifyRegistrationEmail () {
+ const options = {
+ registrationId: this.registrationId,
+ verificationString: this.verificationString
+ }
+
+ this.signupService.verifyRegistrationEmail(options)
+ .subscribe({
+ next: () => {
+ this.success = true
+ },
+
+ error: err => {
this.failed = true
this.notifier.error(err.message)
}
- )
+ })
}
}