@@ -10,17 +10,18 @@ import { PlanetMessageService } from '../shared/planet-message.service';
10
10
import { environment } from '../../environments/environment' ;
11
11
import { ValidatorService } from '../validators/validator.service' ;
12
12
import { SyncService } from '../shared/sync.service' ;
13
+ import { PouchAuthService } from '../shared/database' ;
13
14
14
15
const registerForm = {
15
16
name : [ ] ,
16
17
password : [ '' , Validators . compose ( [
17
18
Validators . required ,
18
19
CustomValidators . matchPassword ( 'repeatPassword' , false )
19
- ] ) ] ,
20
+ ] ) ] ,
20
21
repeatPassword : [ '' , Validators . compose ( [
21
22
Validators . required ,
22
23
CustomValidators . matchPassword ( 'password' , true )
23
- ] ) ]
24
+ ] ) ]
24
25
} ;
25
26
26
27
const loginForm = {
@@ -42,7 +43,8 @@ export class LoginFormComponent {
42
43
private formBuilder : FormBuilder ,
43
44
private planetMessageService : PlanetMessageService ,
44
45
private validatorService : ValidatorService ,
45
- private syncService : SyncService
46
+ private syncService : SyncService ,
47
+ private pouchAuthService : PouchAuthService
46
48
) {
47
49
registerForm . name = [ '' , [
48
50
Validators . required ,
@@ -89,16 +91,22 @@ export class LoginFormComponent {
89
91
return this . router . navigateByUrl ( this . returnUrl ) ;
90
92
}
91
93
92
- createUser ( { name, password } : { name : string , password : string } ) {
93
- this . couchService . put ( '_users/org.couchdb.user:' + name ,
94
- { 'name' : name , 'password' : password , 'roles' : [ ] , 'type' : 'user' , 'isUserAdmin' : false , joinDate : Date . now ( ) } )
95
- . pipe ( switchMap ( ( ) => {
96
- return this . couchService . put ( 'shelf/org.couchdb.user:' + name , { } ) ;
97
- } ) ) . subscribe ( ( response : any ) => {
98
- this . planetMessageService . showMessage ( 'User created: ' + response . id . replace ( 'org.couchdb.user:' , '' ) ) ;
99
- this . welcomeNotification ( response . id ) ;
100
- this . login ( this . userForm . value , true ) ;
101
- } , error => this . planetMessageService . showAlert ( 'An error occurred please try again' ) ) ;
94
+ createUser ( { name, password } : { name : string , password : string } ) {
95
+ const metadata = {
96
+ isUserAdmin : false ,
97
+ joinDate : Date . now ( )
98
+ } ;
99
+
100
+ this . pouchAuthService . signup ( name , password , metadata ) . pipe (
101
+ switchMap ( ( ) => this . couchService . put ( 'shelf/org.couchdb.user:' + name , { } ) )
102
+ ) . subscribe (
103
+ res => {
104
+ this . planetMessageService . showMessage ( 'User created: ' + res . id . replace ( 'org.couchdb.user:' , '' ) ) ;
105
+ this . welcomeNotification ( res . id ) ;
106
+ this . login ( this . userForm . value , true ) ;
107
+ } ,
108
+ err => this . planetMessageService . showAlert ( 'An error occurred please try again' )
109
+ ) ;
102
110
}
103
111
104
112
createParentSession ( { name, password } ) {
@@ -107,26 +115,15 @@ export class LoginFormComponent {
107
115
{ withCredentials : true , domain : this . userService . getConfig ( ) . parentDomain } ) ;
108
116
}
109
117
110
- login ( { name, password } : { name : string , password : string } , isCreate : boolean ) {
111
- this . couchService . post ( '_session' , { 'name' : name , 'password' : password } , { withCredentials : true } )
112
- . pipe ( switchMap ( ( data ) => {
113
- // Navigate into app
114
- if ( isCreate ) {
115
- return from ( this . router . navigate ( [ 'users/update/' + name ] ) ) ;
116
- } else {
117
- return from ( this . reRoute ( ) ) ;
118
- }
119
- } ) ,
120
- switchMap ( this . createSession ( name , password ) ) ,
121
- switchMap ( ( sessionData ) => {
122
- if ( isCreate ) {
123
- const adminName = this . userService . getConfig ( ) . adminName . split ( '@' ) [ 0 ] ;
124
- return this . sendNotifications ( adminName , name ) ;
125
- }
126
- return of ( sessionData ) ;
127
- } )
128
- ) . subscribe ( ( res ) => {
129
- } , ( error ) => this . planetMessageService . showAlert ( 'Username and/or password do not match' ) ) ;
118
+ login ( { name, password } : { name : string , password : string } , isCreate : boolean ) {
119
+ this . pouchAuthService . login ( name , password ) . pipe (
120
+ switchMap ( ( ) => isCreate ? from ( this . router . navigate ( [ 'users/update/' + name ] ) ) : from ( this . reRoute ( ) ) ) ,
121
+ switchMap ( this . createSession ( name , password ) ) ,
122
+ switchMap ( ( sessionData ) => {
123
+ const adminName = this . userService . getConfig ( ) . adminName . split ( '@' ) [ 0 ] ;
124
+ return isCreate ? this . sendNotifications ( adminName , name ) : of ( sessionData ) ;
125
+ } )
126
+ ) . subscribe ( ( ) => { } , ( error ) => this . planetMessageService . showAlert ( 'Username and/or password do not match' ) ) ;
130
127
}
131
128
132
129
sendNotifications ( userName , addedMember ) {
0 commit comments