diff options
author | Chocobozzz <florian.bigard@gmail.com> | 2017-04-10 20:29:33 +0200 |
---|---|---|
committer | Chocobozzz <florian.bigard@gmail.com> | 2017-04-10 20:29:33 +0200 |
commit | a184c71b526000f60f00649d260638723d426e6a (patch) | |
tree | 70fcb85cf5780519e59b4812167ce6f896d73afa /client/src/app/signup/signup.component.ts | |
parent | c36b4ff77ebcd6cf3a71f0a5c8fb17fa0f4a0d24 (diff) | |
download | PeerTube-a184c71b526000f60f00649d260638723d426e6a.tar.gz PeerTube-a184c71b526000f60f00649d260638723d426e6a.tar.zst PeerTube-a184c71b526000f60f00649d260638723d426e6a.zip |
Client: support signup
Diffstat (limited to 'client/src/app/signup/signup.component.ts')
-rw-r--r-- | client/src/app/signup/signup.component.ts | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/client/src/app/signup/signup.component.ts b/client/src/app/signup/signup.component.ts new file mode 100644 index 000000000..85f93793b --- /dev/null +++ b/client/src/app/signup/signup.component.ts | |||
@@ -0,0 +1,72 @@ | |||
1 | import { Component, OnInit } from '@angular/core'; | ||
2 | import { FormBuilder, FormGroup, Validators } from '@angular/forms'; | ||
3 | import { Router } from '@angular/router'; | ||
4 | |||
5 | import { NotificationsService } from 'angular2-notifications'; | ||
6 | |||
7 | import { AuthService } from '../core'; | ||
8 | import { | ||
9 | FormReactive, | ||
10 | UserService, | ||
11 | USER_USERNAME, | ||
12 | USER_EMAIL, | ||
13 | USER_PASSWORD | ||
14 | } from '../shared'; | ||
15 | |||
16 | @Component({ | ||
17 | selector: 'my-signup', | ||
18 | templateUrl: './signup.component.html' | ||
19 | }) | ||
20 | export class SignupComponent extends FormReactive implements OnInit { | ||
21 | error: string = null; | ||
22 | |||
23 | form: FormGroup; | ||
24 | formErrors = { | ||
25 | 'username': '', | ||
26 | 'email': '', | ||
27 | 'password': '' | ||
28 | }; | ||
29 | validationMessages = { | ||
30 | 'username': USER_USERNAME.MESSAGES, | ||
31 | 'email': USER_EMAIL.MESSAGES, | ||
32 | 'password': USER_PASSWORD.MESSAGES, | ||
33 | }; | ||
34 | |||
35 | constructor( | ||
36 | private formBuilder: FormBuilder, | ||
37 | private router: Router, | ||
38 | private notificationsService: NotificationsService, | ||
39 | private userService: UserService | ||
40 | ) { | ||
41 | super(); | ||
42 | } | ||
43 | |||
44 | buildForm() { | ||
45 | this.form = this.formBuilder.group({ | ||
46 | username: [ '', USER_USERNAME.VALIDATORS ], | ||
47 | email: [ '', USER_EMAIL.VALIDATORS ], | ||
48 | password: [ '', USER_PASSWORD.VALIDATORS ], | ||
49 | }); | ||
50 | |||
51 | this.form.valueChanges.subscribe(data => this.onValueChanged(data)); | ||
52 | } | ||
53 | |||
54 | ngOnInit() { | ||
55 | this.buildForm(); | ||
56 | } | ||
57 | |||
58 | signup() { | ||
59 | this.error = null; | ||
60 | |||
61 | const { username, password, email } = this.form.value; | ||
62 | |||
63 | this.userService.signup(username, password, email).subscribe( | ||
64 | () => { | ||
65 | this.notificationsService.success('Success', `Registration for ${username} complete.`); | ||
66 | this.router.navigate([ '/videos/list' ]); | ||
67 | }, | ||
68 | |||
69 | err => this.error = err.text | ||
70 | ); | ||
71 | } | ||
72 | } | ||