diff options
Diffstat (limited to 'client/src/app/+signup/+register/register.component.ts')
-rw-r--r-- | client/src/app/+signup/+register/register.component.ts | 62 |
1 files changed, 43 insertions, 19 deletions
diff --git a/client/src/app/+signup/+register/register.component.ts b/client/src/app/+signup/+register/register.component.ts index 958770ebf..9259d902c 100644 --- a/client/src/app/+signup/+register/register.component.ts +++ b/client/src/app/+signup/+register/register.component.ts | |||
@@ -5,10 +5,10 @@ import { ActivatedRoute } from '@angular/router' | |||
5 | import { AuthService } from '@app/core' | 5 | import { AuthService } from '@app/core' |
6 | import { HooksService } from '@app/core/plugins/hooks.service' | 6 | import { HooksService } from '@app/core/plugins/hooks.service' |
7 | import { InstanceAboutAccordionComponent } from '@app/shared/shared-instance' | 7 | import { InstanceAboutAccordionComponent } from '@app/shared/shared-instance' |
8 | import { UserSignupService } from '@app/shared/shared-users' | ||
9 | import { NgbAccordion } from '@ng-bootstrap/ng-bootstrap' | 8 | import { NgbAccordion } from '@ng-bootstrap/ng-bootstrap' |
10 | import { UserRegister } from '@shared/models' | 9 | import { UserRegister } from '@shared/models' |
11 | import { ServerConfig } from '@shared/models/server' | 10 | import { ServerConfig } from '@shared/models/server' |
11 | import { SignupService } from '../shared/signup.service' | ||
12 | 12 | ||
13 | @Component({ | 13 | @Component({ |
14 | selector: 'my-register', | 14 | selector: 'my-register', |
@@ -53,7 +53,7 @@ export class RegisterComponent implements OnInit { | |||
53 | constructor ( | 53 | constructor ( |
54 | private route: ActivatedRoute, | 54 | private route: ActivatedRoute, |
55 | private authService: AuthService, | 55 | private authService: AuthService, |
56 | private userSignupService: UserSignupService, | 56 | private signupService: SignupService, |
57 | private hooks: HooksService | 57 | private hooks: HooksService |
58 | ) { } | 58 | ) { } |
59 | 59 | ||
@@ -61,6 +61,10 @@ export class RegisterComponent implements OnInit { | |||
61 | return this.serverConfig.signup.requiresEmailVerification | 61 | return this.serverConfig.signup.requiresEmailVerification |
62 | } | 62 | } |
63 | 63 | ||
64 | get requiresApproval () { | ||
65 | return this.serverConfig.signup.requiresApproval | ||
66 | } | ||
67 | |||
64 | get minimumAge () { | 68 | get minimumAge () { |
65 | return this.serverConfig.signup.minimumAge | 69 | return this.serverConfig.signup.minimumAge |
66 | } | 70 | } |
@@ -132,42 +136,49 @@ export class RegisterComponent implements OnInit { | |||
132 | skipChannelCreation () { | 136 | skipChannelCreation () { |
133 | this.formStepChannel.reset() | 137 | this.formStepChannel.reset() |
134 | this.lastStep.select() | 138 | this.lastStep.select() |
139 | |||
135 | this.signup() | 140 | this.signup() |
136 | } | 141 | } |
137 | 142 | ||
138 | async signup () { | 143 | async signup () { |
139 | this.signupError = undefined | 144 | this.signupError = undefined |
140 | 145 | ||
141 | const body: UserRegister = await this.hooks.wrapObject( | 146 | const termsForm = this.formStepTerms.value |
147 | const userForm = this.formStepUser.value | ||
148 | const channelForm = this.formStepChannel?.value | ||
149 | |||
150 | const channel = this.formStepChannel?.value?.name | ||
151 | ? { name: channelForm?.name, displayName: channelForm?.displayName } | ||
152 | : undefined | ||
153 | |||
154 | const body = await this.hooks.wrapObject( | ||
142 | { | 155 | { |
143 | ...this.formStepUser.value, | 156 | username: userForm.username, |
157 | password: userForm.password, | ||
158 | email: userForm.email, | ||
159 | displayName: userForm.displayName, | ||
160 | |||
161 | registrationReason: termsForm.registrationReason, | ||
144 | 162 | ||
145 | channel: this.formStepChannel?.value?.name | 163 | channel |
146 | ? this.formStepChannel.value | ||
147 | : undefined | ||
148 | }, | 164 | }, |
149 | 'signup', | 165 | 'signup', |
150 | 'filter:api.signup.registration.create.params' | 166 | 'filter:api.signup.registration.create.params' |
151 | ) | 167 | ) |
152 | 168 | ||
153 | this.userSignupService.signup(body).subscribe({ | 169 | const obs = this.requiresApproval |
170 | ? this.signupService.requestSignup(body) | ||
171 | : this.signupService.directSignup(body) | ||
172 | |||
173 | obs.subscribe({ | ||
154 | next: () => { | 174 | next: () => { |
155 | if (this.requiresEmailVerification) { | 175 | if (this.requiresEmailVerification || this.requiresApproval) { |
156 | this.signupSuccess = true | 176 | this.signupSuccess = true |
157 | return | 177 | return |
158 | } | 178 | } |
159 | 179 | ||
160 | // Auto login | 180 | // Auto login |
161 | this.authService.login({ username: body.username, password: body.password }) | 181 | this.autoLogin(body) |
162 | .subscribe({ | ||
163 | next: () => { | ||
164 | this.signupSuccess = true | ||
165 | }, | ||
166 | |||
167 | error: err => { | ||
168 | this.signupError = err.message | ||
169 | } | ||
170 | }) | ||
171 | }, | 182 | }, |
172 | 183 | ||
173 | error: err => { | 184 | error: err => { |
@@ -175,4 +186,17 @@ export class RegisterComponent implements OnInit { | |||
175 | } | 186 | } |
176 | }) | 187 | }) |
177 | } | 188 | } |
189 | |||
190 | private autoLogin (body: UserRegister) { | ||
191 | this.authService.login({ username: body.username, password: body.password }) | ||
192 | .subscribe({ | ||
193 | next: () => { | ||
194 | this.signupSuccess = true | ||
195 | }, | ||
196 | |||
197 | error: err => { | ||
198 | this.signupError = err.message | ||
199 | } | ||
200 | }) | ||
201 | } | ||
178 | } | 202 | } |